两个是DELPHI做的程序:一个是A.EXE、另一个是B.DLL(或B.EXE)(100分)

  • 主题发起人 主题发起人 ADSL03
  • 开始时间 开始时间
A

ADSL03

Unregistered / Unconfirmed
GUEST, unregistred user!
两个是DELPHI做的程序:一个是A.EXE、另一个是B.DLL(或B.EXE)
当B窗体Close关闭后,发一个什么信息给A.EXE程序接收?
注:是关闭窗体后发信息SendMessage?用其它的办法也行,只要解决问题就结。分不够再加!!!
 
Close的代码有时候执行不到的,像用任务管理器结束程序。换一个方法做:
由A程序判断B的存在,若B的窗体被关闭,Winexec('b.exe')
判断的方法就很多了,比如最简单的查找窗口标题。
 
还是直接SendMessage好一点~~
每隔一段时间FindWindowB也行
或者监控B要求B定时向A发送数据如果B没有发送那么B肯定OVER了

最后一种方法在B意外死掉的时候A也进行相应处理
 
如果是在同一台机器运行的话
可以考虑使用系统事件对象
 
MESS.Msg = YouMessage
SetForegroundWindow(self.handle);
TMessage(mess).Result := 1;
RegisterWindowMessage(pchar(Self.Name));
根據你自己的需要使用就可以了。
 
还是判断窗体是不是存在吧,如果另一个被结束了任务,就发不出消息了
 
使用WM_COPYDATA吧,可以在不同进程间传递信息
或者使用内存映射文件也行
 
两个程序共享一个变量
判断这个变量的状态
或者直接用文件即可
A可以定时扫描来判断该不该结束程序
 
TO
木桩,amwfhv,Mike1234567890,bbscom,Beyondbill,【清风】, anyway

请各位出具体的代码,小弟初学者不明。
 
分不够可以再加。
 
放个 TTimer,加入下面代码
var WindowHandle:THandle;
begin
WindowHandle:=FindWindow(nil,pchar('你的B程序标题'));
if WindowHandle=0 then
begin
//没找到B的窗口,winexec('b.exe')或者别的 自己看着办
end;
end;
 
這個問題可能不太好解決,但還是有解決的辦法。
技術交流QQ:136293586
 
谢谢你的大力支持。
你的方法是可以使用的,
我们多联系。
 
后退
顶部