请教大家一个问题.一个delphi的toolbar的按钮点击后弹出的按钮,我想在其它软件中模拟点击一下它.怎么解决呢?
不用模拟鼠标坐标的方式,(据说这个没有句柄消息的).但是我就是想点击它,请问有其它解决办法,一定有办法。谢谢大家!

解决方案 »

  1.   

    用findwindow和findwindowex找到toolbutton的handle,然后可以如下:   
      procedure   TForm1.Button2Click(Sender:   TObject);   
      var   
          r:   TRect;   
          h:   THandle;   
      begin   
          h:=   findwindow(...);   
          h:=   findwindowex(...);   
          ..   
          ..   
          GetWindowRect(h,r);   
          SetCursorPos(r.Left+5,r.Top+5);   
          mouse_event(MOUSEEVENTF_LEFTDOWN,r.Left+5,r.Top+5,0,0);   
          mouse_event(MOUSEEVENTF_LEFTUP,r.Left+5,r.Top+5,0,0);   
      end;
    sendmessage就行了,TToolBar(obj).Buttons[0].Click也行,但是要写dll并注入目标进程
      

  2.   

    能给个实列吗? 我用您的方法。还是点击不了。unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ComCtrls, ToolWin, Menus;type
      Ttestexe = class(TForm)
        ToolBar1: TToolBar;
        PopupMenu1: TPopupMenu;
        ToolButton1: TToolButton;
        s11: TMenuItem;
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      testexe: Ttestexe;implementation{$R *.dfm}procedure Ttestexe.FormCreate(Sender: TObject);
    beginend;end.
      

  3.   

    http://topic.csdn.net/t/20021121/14/1194556.html
    你到这里看看吧,反正思路是找到按钮的句柄,然后sendmessage