高分求助必须使用sendmessage在另一个程序坐标上模拟鼠标点击? 还有就是这个坐标怎么得来?
下面代码运行没有效果,我该怎么办呢?通过句柄"画图"程序,使用sendmessage发送鼠标命令在画图程序上显示个点.
procedure TForm1.Button1Click(Sender: TObject);
 var
  hmine: Thandle; //窗体的句柄
   begin
     //开始执行检查软件是否启动。
      hmine := FindWindow(nil,'未命名 - 画图');         if hmine = 0  then
          //已经启动了
     form1.Caption :='程序未运行'
     else
      //未启动,读取自动启动
     form1.Caption :='程序运行';
  //   按下
  SendMessage(hmine, WM_LBUTTONDOWN, 1, MAKELONG(11,11));
  //   抬起
  SendMessage(hmine, WM_LBUTTONDOWN, 1, MAKELONG(11,11));
    end;
end.

解决方案 »

  1.   

    MAKELONG(11,11),传的是窗口客户区坐标
      

  2.   

    hmine := FindWindow(nil,'未命名 - 画图'); 之后可以用GetWindowRect 得到 hmine 在桌面上的位置, 只要 sendmessage 中 MAKELONG() 的两个参数在这个 rect 内,就行了。比如:var
     rect: TRect;
     hmine : HWND;
    begin
      hmine := FindWindow(nil,'未命名 - 画图');   GetWindowRect(hmine, rect);  SendMessage(hmine, WM_LBUTTONDOWN, 1, MAKELONG(Rect.left + 10, Rect.Top + 10));
      //  抬起
      SendMessage(hmine, WM_LBUTTONDOWN, 1, MAKELONG(Rect.left + 10, Rect.Top + 10)); 
    end;
      

  3.   

    WM_LBUTTONDOWN 是多少 C#里