|
使用了 autoit 一段时间,有个奇怪的发现,
autoit 本身提供 了大量 方便常用的函数,
但是,我使用过的一小部分,有很奇怪的“附带作用”
比如,鼠标键盘 后台 消息 autoit自己带有这样的函数
ControlSend ( "窗口标题", "窗口文本", 控件ID, "字符串" [, 标志] )
当然,不能这么写
要发送后台消息必须写成这样
ControlSend ( "窗口句柄", "", "", "字符串")
但是,
如果使用 autoit自带的这个ControlSend 函数,会导致 键盘的 ctrl,shift 以及 alt 成为 按下状态。
(哪怕你发送的后台消息和 上面说的3个功能键完全不相干,也是会导致同样结果的)
而且 其中 右边的 Alt 手动按下后 就再也无法弹起。
一定要按 左 Alt 键 才可以结束 按下状态。
十分 的奇怪。
最后,我只好 直接调用user32.dll:
Local $user32 = DllOpen("user32.dll")
DllCall($user32, "int", "PostMessage", "hwnd", $Hwnd, "int", 0x100, "int", $keys, "long", 0)
Sleep(1)
DllCall($user32, "int", "PostMessage", "hwnd", $Hwnd, "int", 0x101, "int", $keys, "long", 0xC0000000)
这样来实现 后台键盘消息。
最近 使用 autoit 的 RUN 命令
发现 RUN 函数 也有个 奇怪的问题,
使用这一函数,有很大几率 让 任务栏中的选项“任务栏中的其他图标(A)” 这一 选项 成为 选择状态,
从而使得 任务栏中的 图标 全部显示出来。
如果你自己手动 关闭。
在使用 RUN函数后,还会继续成为 选择状态。
注:我使用的xp系统。
真的很费解,
上面两个问题,好象和该函数的功能 完全 风马牛 不相干啊。
不知道为什么会有这样的 “附带作用”。
关于第二个问题,如何避免呢?
还是直接调用 windows 的dll 文件?
如果是,如何调用?是哪个文件,格式如何?
谢谢先。
[ 本帖最后由 gaoyuan22 于 2008-10-19 15:40 编辑 ] |
|