如何用程序模拟鼠标点击?(50分)

  • 主题发起人 主题发起人 ynduanlian
  • 开始时间 开始时间
Y

ynduanlian

Unregistered / Unconfirmed
GUEST, unregistred user!
比如说,当我点一下按钮,程序就模仿人工在屏幕上的指点点点击一下鼠标?
比如点一下屏幕上像素位置800*600的那个点?
 
X:=800;
Y:=600;
Mouse_Event(MOUSEEVENTF_LEFTDOWN+MOUSEEVENTF_ABSOLUTE,X,Y,0,0);
Mouse_Event(MOUSEEVENTF_LEFTUP+MOUSEEVENTF_ABSOLUTE,X,Y,0,0);

好象根本没有点屏上800*600的那个位置?
 
Mouse_Event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
Mouse_Event(MOUSEEVENTF_LEFTUP,0,0,0,0);
在鼠标的当前位置点一下;
 
Mouse_Event函数Dx,Dy对应屏幕上的范围为:0~65535
所以要点击800*600的位置需要换算一下才行。
Mouse_event(MOUSEEVENTF_ABSOLUTE +MOUSEEVENTF_LEFTDOWN+MOUSEEVENTF_MOVE ,trunc(65535/1280*800),trunc(65535/800*600),0,0);
 
Nhwnd:=findwindow(NIL,pchar(listbox1.Items[listbox1.ItemIndex])); //找到要点击的那个IE窗口
SetForegroundWindow(Nhwnd);
// X:=800;
X:=trunc(65535/1280*700);
// Y:=600;
Y:=trunc(65535/1280*400);

Mouse_Event(MOUSEEVENTF_LEFTDOWN+MOUSEEVENTF_ABSOLUTE,X,Y,0,0);
Mouse_Event(MOUSEEVENTF_LEFTUP+MOUSEEVENTF_ABSOLUTE,X,Y,0,0);

上面是我的代码,为什么我点击了执行这段代码的Button,并没有点击那个句柄为Nhwnd的IE窗口中的点,而是执行这段代码的Button不停的闪,好象是在点这个BUTTON?
 
还应该加个MOUSEEVENTF_MOVE,才表示要移动鼠标。
 
接受答案了.
 
后退
顶部