高手请进(200分)

  • 主题发起人 主题发起人 tczxm
  • 开始时间 开始时间
T

tczxm

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在一个程序中控制另外一个程序中的操作.
例如:甲程序有一BUTTON1,乙程序有一BUTTON2,如何通过甲程序中BUTTON1的CLICK事件
触发乙程序中的BUTTON2的CLICK事件
 
不好意思。我不是高手但还是进来了。
暂时看看这个代码或许有用
http://www.swissdelphicenter.ch/en/showcode.php?id=727
 
你net send 给自己一个消息。
出来一个窗口信使服务。这段程序相当于点击了确定按钮。
原理就是找到窗口句柄,findwindowex找到按钮句柄,发送click消息。
procedure TForm1.Button1Click(Sender: TObject);
var
h:THandle;
begin
h := FindWindow(nil,'信使服务 ');
h := FindWindowEX(h,0,'Button','确定');
SendMessage(h,BM_CLICK,0,0);
PostMessage(h,BM_CLICK,0,0);
end;
 
我是菜鸟,进来就要是想检点分。看看下面的代码对你是否有有帮助:
新建一个工程,然后置入一个窗体(form2),在form1和form2中各置入一个BUTTON,
procedure TForm1.Button1Click(Sender: TObject);
begin
form2.Button1Click(sender);
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
SHOWMESSAGE('这是第二个程序的按钮');
end;
 
form2.OnButton2Click(self);
 
不好意思,题目没看清。
 
to bubble
为何我执行下面这一句总是返回0呢
h := FindWindowEX(h,0,'Button','确定');
 
如果你的FindWindow没问题的话,
那么可能就是你FindWindowEX找的classname不对啦,
如果你是用delphi编的程序,那么按钮的classname是TButton而不是Button,
至于随便找一个控件的classname,以及它的text你可以参照下面这个程序。
做一个总在最前的窗口。
procedure TForm1.TimerTimer(Sender: TObject);
var
Pos: TPoint;
Handle: HWND;
Buf: array[0..1024] of Char;
begin
GetCursorPos(Pos);
Handle := WindowFromPoint(Pos);
HandleEdit.Text := IntToStr(Handle);
GetClassName(Handle, Buf, 1024);
ClassEdit.Text := Buf;
SendMessage(Handle, WM_GETTEXT, 1024, Integer(@buf));
TextEdit.Text := Buf;
end;
 
to bubble
谢谢,可以
但是如果是两个程序分别在两台机器上的话那怎么半呢??
 
你干脆用冰河得了。
 
研究以下远程控制
 
后退
顶部