gzkay 发表于 2009-2-10 15:11:44

PostMessage_UDF.au3的问题

PostMessage_UDF.au3的问题请问谁知道怎样用?
为什么不用ControlClick..是因为有些软件直接用ControlClick不行,要WinActivate之后才可以用ControlClick,但这影响用户操作了
现在目的是不要影响用户的鼠标和键盘操作..即聊天的时候也可以试用autoit脚本执行自动化操作..
我以前写过游戏自动登陆器...在登陆过程失去焦点的话就会停在那了..现在的办法就是禁止鼠标键盘使用..但是这样不友好..


#include <PostMessage_UDF.au3>
$Hwnd = WinGetHandle("计算器")
_MouseClick($hWnd, "left", 19, 12)
_SendText($Hwnd,"9")

这样..计算器并没有显示是99

即一句话就是即使软件最小化到任务栏也能用au3执行自动化

或者改改下面的也行...


$Hwnd = WinGetHandle("计算器")
Local $user32 = DllOpen("user32.dll")
Local $lParam = BitOR(122 * 0x10000, BitAND(155, 0xFFFF))
DllCall($user32, "int", "PostMessage", "hwnd", $hWnd, "int", 0x200, "int", 0, "long", $lParam)
DllCall($user32, "int", "PostMessage", "hwnd", $hWnd, "int", 0x201, "int", 1, "long", $lParam)
DllCall($user32, "int", "PostMessage", "hwnd", $hWnd, "int", 0x202, "int", 0, "long", $lParam)
If $user32 <> -1 Then DllClose($user32)

[ 本帖最后由 gzkay 于 2009-2-10 16:32 编辑 ]

KiwiCsj 发表于 2009-2-10 15:24:32

语法全错误,实在不明白你是在用AuotIt3?
想模拟向计算器窗口输出99?

gzkay 发表于 2009-2-10 15:30:08

是啊..我是想在后台模拟按键..不影响前台的鼠标和键盘使用
我是用了PostMessage_UDF.au3里面的调用dll封装好的函数..并不是au3里面的函数...au3里面的函数做不到这个效果..

KiwiCsj 发表于 2009-2-10 15:30:10

还是帮你写一下吧。

Local $guiTit="计算器"
If WinExists($guiTit) Then
        ControlClick($guiTit,"","Button13","left",1)
EndIf

KiwiCsj 发表于 2009-2-10 15:31:53

实在很无奈的时候才会使用纯的键盘鼠标模拟,不然应尽可能使用其它更可靠的办法。

把au3当按键精灵用,那就太糟蹋au3了。

gzkay 发表于 2009-2-10 15:32:22

原帖由 KiwiCsj 于 2009-2-10 15:30 发表 http://www.autoitx.com/images/common/back.gif
还是帮你写一下吧。

Local $guiTit="计算器"
If WinExists($guiTit) Then
        ControlClick($guiTit,"","Button13","left",1)
EndIf

这个我知道..有些软件最小化之后或缩小到系统托盘就不行了..

gzkay 发表于 2009-2-10 15:32:59

原帖由 KiwiCsj 于 2009-2-10 15:31 发表 http://www.autoitx.com/images/common/back.gif
实在很无奈的时候才会使用纯的键盘鼠标模拟,不然应尽可能使用其它更可靠的办法。
我就是想用API啊..

KiwiCsj 发表于 2009-2-10 15:33:45

最好一次性把你的问题说明白。

如果只是怕最小化那你再在之前加个检查,如果最小化,那就恢复窗口嘛

gzkay 发表于 2009-2-10 15:34:15

原帖由 KiwiCsj 于 2009-2-10 15:31 发表 http://www.autoitx.com/images/common/back.gif
实在很无奈的时候才会使用纯的键盘鼠标模拟,不然应尽可能使用其它更可靠的办法。

把au3当按键精灵用,那就太糟蹋au3了。
并不是所有都有按钮的..有些软件我试过用窗口工具..查不到有按钮..只是单单的一张图片..

gzkay 发表于 2009-2-10 15:35:10

原帖由 KiwiCsj 于 2009-2-10 15:33 发表 http://www.autoitx.com/images/common/back.gif
最好一次性把你的问题说明白。

如果只是怕最小化那你再在之前加个检查,如果最小化,那就恢复窗口嘛
我的目的是不要影响到前台用户操作..例如正在打字..用au3的普通的函数就会使得打字焦点失去..

KiwiCsj 发表于 2009-2-10 15:35:49

查不到的就获取当时窗体在屏幕上的坐标,累加相对坐标量,再模拟鼠标去点。

gzkay 发表于 2009-2-10 15:36:38

原帖由 KiwiCsj 于 2009-2-10 15:35 发表 http://www.autoitx.com/images/common/back.gif
查不到的就获取当时窗体在屏幕上的坐标,累加相对坐标量,再模拟鼠标去点。
怎么模拟法?

KiwiCsj 发表于 2009-2-10 15:40:03

1,ControlClick()执行时不会影响当前的其它键盘鼠标操作。
2,模拟?就是$aPos=WinGetPos("计算器" ) ,然后 MouseClick($aPos+n,$aPos+n)喽,其中n指要点击的目标相对于窗口边缘的像素

你还是贴要求吧,不然没时间这么打字了。

gzkay 发表于 2009-2-10 15:42:07

原帖由 KiwiCsj 于 2009-2-10 15:40 发表 http://www.autoitx.com/images/common/back.gif
1,ControlClick()执行时不会影响当前的其它键盘鼠标操作。
2,模拟?就是$aPos=WinGetPos("计算器" ) ,然后 MouseClick($aPos+n,$aPos+n)喽,其中n指要点击的目标相对于窗口边缘的像素

你还是贴要求吧, ...
贴要求已经改过了..就是一个游戏登陆器..登陆选区的时候是没有按钮的..只有一张图片..

KiwiCsj 发表于 2009-2-10 15:44:56

点游戏登陆器为什么要求不影响前台操作?不理解。

可以不去管前台操作的话,就用前面13楼提的2模拟方案吧。
页: [1] 2 3
查看完整版本: PostMessage_UDF.au3的问题