delphi 向另一个窗口发送鼠标点击事件  
官方Delphi 学习QQ群: 682628230(三千人)\n
频道

delphi 向另一个窗口发送鼠标点击事件


procedure TForm1.Button1Click(Sender: TObject);
var
 szText: array[0..254] of char;
 hCurrentWindow :hwnd;
 r:trect ;
 point:tpoint;
begin
   hCurrentWindow := GetWindow(Handle,GW_HWNDFIRST);
   memo1.Clear;
   while hCurrentWindow <> 0 do
   begin
    if GetWindowText(hCurrentWindow ,@szText,255) > 0 then
    if  pos('Form111', PChar(@szText))<>0 then  //这里指定某一窗口,可能有多个
    begin
    memo1.lines.Add(PChar(@szText));
    ShowWindow(hCurrentWindow,SW_SHOWNORMAL);//恢复最小化的窗口,如果窗口最小化,无法成功发送鼠标事件
   // 必要时还可以用到下面:
    //ShowWindow(hCurrentWindow,   SW_RESTORE);//恢复窗口
    // ShowWindow(hCurrentWindow,   SW_MINIMIZE);//最小化窗口
    SetForegroundWindow(hCurrentWindow);//设置窗口为当前窗口
    GetWindowRect(hCurrentWindow,r);//得到窗口的左上角坐标

     getcursorpos(point); //获取鼠标原来的位置
    setcursorpos(r.Left+120,r.Top+60);  //设置鼠标在窗口的位置 ,即需要点的地方

//前台模拟鼠标按下    
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);  //鼠标左键按下
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);   //鼠标左键按下
    
    
//后台模拟鼠标按下
SendMessage(hCurrentWindow, WM_LBUTTONDOWN, MK_LBUTTON, MakeLong(493,401));
//后台模拟鼠标按下
SendMessage(hCurrentWindow, WM_LBUTTONUP, MK_LBUTTON, MakeLong(493,401));

    setcursorpos(point.x,point.y); //恢复鼠标原来的位置
      end;
    hCurrentWindow := GetWindow(hCurrentWindow,GW_HWNDNEXT);
 end;
end;



推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.060239791870117 seconds