1、怎么点击其它程序上的一个按钮。
比如像点击其它程序上面的上面的确定按钮。
2、如何获取其它程序点击了确定按钮。

解决方案 »

  1.   

    用spy++找出那个按钮的窗口句柄,然后发送消息  if PostMessage(按钮的窗口句柄, WM_LBUTTONDOWN, MK_LBUTTON, MakeLParam(10, 10))
        and PostMessage(按钮的窗口句柄, WM_LBUTTONUP, MK_LBUTTON, MakeLParam(10, 10)) then
        begin
          ShowMessage('点击成功');
        end;
      

  2.   

    你想按那个按钮就把那个按钮的句柄记下来,要点那个按钮就给那个按钮发消息var
     btnHwnd1, btnHwnd2:hwnd;
    begin
     // spy++找到例如一个'确认'按钮的句柄
     btnHwnd1 := 确定按钮句柄;
    // spy++找到例如一个'确认'按钮的句柄
     btnHwnd2 := 取消按钮句柄; 
     
      if PostMessage(btnHwnd1, WM_LBUTTONDOWN, MK_LBUTTON, MakeLParam(10, 10))
        and PostMessage(btnHwnd1, WM_LBUTTONUP, MK_LBUTTON, MakeLParam(10, 10)) then
        begin
          ShowMessage('点击 确认 成功');
        end;
     
      if PostMessage(btnHwnd2, WM_LBUTTONDOWN, MK_LBUTTON, MakeLParam(10, 10))
        and PostMessage(btnHwnd1, WM_LBUTTONUP, MK_LBUTTON, MakeLParam(10, 10)) then
        begin
          ShowMessage('点击 取消 成功');
        end;
    end;
      

  3.   

      if PostMessage(btnHwnd1, WM_LBUTTONDOWN, MK_LBUTTON, MakeLParam(10, 10))
        and PostMessage(btnHwnd1, WM_LBUTTONUP, MK_LBUTTON, MakeLParam(10, 10)) then
        begin
          // 这里不就表示你点击了确认按钮了么,至于确认按钮执行了什么,你自然是无从得知的
          // 你只能确认是否点击了那个按钮,然后做你想做的事情
          ShowMessage('点击 确认 成功');
        end;
      

  4.   

    实现点击按钮,模拟鼠标按下和抬起是不靠谱的。 直接发送 BM_CLICK 消息才是王道。当然,前提是找到目标按钮的句柄。
      

  5.   

    高手,我通过
     H1 := FindWindow(nil, 'UploadFTP'); // h是登录窗口句柄
     H2 := FindWindowEx(H1, 0, PChar('TBitBtn'), Pchar('手动上传'));//按钮
    来获取这个句柄,但是必须要先把目标程序点起来,然后才能获取到句柄,但是目标程序是启动后自动托盘的,这个怎么来修改呢?