A进程如何根据B进程的Process ID把B进程窗口激活呢???(100分)

  • 主题发起人 honestman
  • 开始时间
H

honestman

Unregistered / Unconfirmed
GUEST, unregistred user!
这里的“全文检索”又不能用了,只好花分提问。<br>我已经在A中得到了我需要操作的B的Process ID,我想把该ID对应的B进程窗口激活,让该窗口产生FormActivate或者FormShow事件???<br>这两个程序A和B都是我开发的,可以修改它们的代码,配合行动。
 

迷糊

Unregistered / Unconfirmed
GUEST, unregistred user!
如果进程B已经运行的话可以找到窗口的句柄,用showwindow(hwbd,sw_normal)或setactivewindow(hwnd)激活窗口,当然发消息也可以。
 
H

honestman

Unregistered / Unconfirmed
GUEST, unregistred user!
A和B都是运行中的。<br>
 

迷糊

Unregistered / Unconfirmed
GUEST, unregistred user!
var<br>&nbsp; h:hwnd;<br>begin<br>&nbsp; h:=findwindow('tform1','form1');//根据类名和标题名找到窗体句柄<br>&nbsp; if h&lt;&gt;0 then<br>&nbsp; begin<br>&nbsp; &nbsp; showwindow(h,sw_normal);<br>&nbsp; &nbsp; setactivewindow(h);<br>&nbsp; end; <br>&nbsp; else<br>&nbsp; &nbsp; showmessage('window not find');<br>end;
 
H

honestman

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在是已知PID啊!<br>怎么根据PID得到hwnd呢?<br>
 
Y

ysai

Unregistered / Unconfirmed
GUEST, unregistred user!
既然两个程序都是你写的,就不必用进程ID来通讯了,应该用RegisterWindowMessage<br>下面的笔记可以做参考<br>http://www.delphibbs.com/keylife/iblog_show.asp?xid=604
 
L

lich

Unregistered / Unconfirmed
GUEST, unregistred user!
枚举此进程的所有线程:<br>CreateToolhelp32Snapshot <br>Thread32First<br>Thread32Next<br><br>枚举每个线程的窗口,EnumThreadWindows,<br>找到符合主窗口特征的窗口,<br><br>然后 SetForegroundWindow 将其激活,<br>或者发送,你需要的消息
 

迷糊

Unregistered / Unconfirmed
GUEST, unregistred user!
用EnumThreadWindows枚据窗口,如果有多个窗体的话,最后还不是要用类名或标题名找到相应的窗口?
 
H

honestman

Unregistered / Unconfirmed
GUEST, unregistred user!
关键是A进程要操作的B程序进程有若干个,B1、B2、B3……。<br>要根据进程ID来区别,不可以根据窗口资料啊!<br>
 
H

honestman

Unregistered / Unconfirmed
GUEST, unregistred user!
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
顶部