通过计算机的主窗口进行发送X,Y坐标消息。求人指点,包含源代码。谢谢
有没有人帮忙啊。。打开计算器,先找到主窗口句柄,然后用sendmessage或者postmessage,向指定的按键去模拟键盘鼠标操作,不能用那些数字的句柄来操作.只能通过计算机的主窗口进行发送X,Y坐标消息。不能向别的按钮发送消息
昨天就是PostMessage( hwnd, WM_LBUTTONDOWN, NULL, MAKELPARAM(151,113) )。位移了,也不见成功 .
我指定X,Y坐标的值,也不见它模拟成功 .
麻烦谁有时间写个计算机模拟按键的,用sendmessage或者postmessage,发送X,Y坐标,用汇编写代码出来,好吗?
下面是我的代码,能编译成功,但就是不能模拟点键。。
.386
.Model Flat, StdCall
Option Casemap :None
include windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kernel32.lib
include Shell32.inc
includelib Shell32.lib
.DATA?
szbuf db 256 dup (?)
hwin dd ?
szxy dd ?
.DATA
szcalc db 'calc.exe',0
szCalculator db 'Calculator',0
szSciCalc db 'SciCalc',0
szx db '%08x',0
.CODE
START:
invoke GetModuleHandle,NULL
invoke ShellExecute,NULL,NULL,offset szcalc,NULL,NULL,SW_NORMAL
;上面打开计算器
invoke Sleep,500
invoke FindWindow,offset szSciCalc,offset szCalculator
.if eax
mov hwin,eax
.endif
;--上面找到计算器的主窗口并激活
invoke SetActiveWindow,hwin
mov eax,158
;--先设置Y坐标的值为158,然后左移16位
shl eax,16
mov ebx,51
;--设置X坐标值为51
or eax,ebx
;--再把X,Y进行OR操作
invoke wsprintf,offset szbuf,offset szx,eax
;把最终值转换成16进制
invoke Sleep,1000
invoke PostMessage,hwin,WM_LBUTTONDOWN, NULL,offset szbuf
invoke PostMessage,hwin,WM_LBUTTONUP, NULL,offset szbuf
;--发送左键消息,在lparam中设置了刚转换的16进制值
invoke ExitProcess,NULL
END START