已知目标窗口的句柄 hWnd
如何根据自定义的X,Y坐标值使用SendMessage向目标窗口发送鼠标点击指令?
请给出实例代码.非常感谢

解决方案 »

  1.   

    SendMessage(hWnd, WM_LBUTTONDOWN, MK_LBUTTON, makelparam(x,y));
      

  2.   

    SendMessage(hwnd, WM_LBUTTONDOWN, MK_LBUTTON, makelparam(x,y));
      

  3.   

    用RegisterwindowMessage注冊唯一窗口标识
    send方
    var
      Form1: TForm1;
      UserMessage:UINT;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
      SendMessage(FindWindow('TForm1','RegisterMessage Get Example'),UserMessage,0,0);
      //'RegisterMessage Get Example'接受窗口名字caption
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      UserMessage:=RegisterwindowMessage('System Wide User Defined Message');
    end;get方:
    var
      Form1: TForm1;
      UserMessage:UINT;implementation{$R *.dfm}procedure TForm1.DefaultHandler(var Msg);
    begin
      inherited DefaultHandler(Msg);  if (TMessage(Msg).Msg=UserMessage) then
      begin
        button1.Click;
     end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      UserMessage:=RegisterWindowMessage('System Wide User Defined Message');
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
    showmessage('ok');
    end;
      

  4.   

    SendMessage(hwnd, WM_LBUTTONDOWN, MK_LBUTTON, makelparam(x,y));
      

  5.   

    GetCursorPos(m);是取鼠标位置。 
    WindowFromPoint(m)是取M坐标点处的句柄,在这里当然也就是鼠标的位置。 
    sendMessage(WindowFromPoint(m), WM_LBUTTONDOWN, 0, 0);
    SendMessage(WindowFromPoint(m), WM_LBUTTONUP, 0, 0);
      

  6.   

    自己解决了。
    其实关键就是lParam 的格式问题.
    前面几位回答的MakeLParam 函数没有尝试过,自己用了个
    StrToInt(#36+IntToHex(Y,4)+IntToHex(X,4)))
    达到了预期效果。结贴给分了