怎么实现a程序打开b程序,b程序关闭a程序 ( 积分: 100 )

  • 主题发起人 主题发起人 smart__jun
  • 开始时间 开始时间
S

smart__jun

Unregistered / Unconfirmed
GUEST, unregistred user!
或者 a程序自我更新
 
没人回答????[:(][:(][:(]
 
socket OR API
 
思路是对的!
1. a程序把 GetProcessID()写入临时文件!
2. a执行b
3. b程序读取临时文件到PID:
terminateProcess(OpenProcess(PROCESS_TERMINATE,false,PID),0);
// a程序结束
4. b程序开始升级(覆盖a程序)
 
晕,还要临时文件的呀? 估计楼上还不大会用 API吧?
 
a程序把 GetProcessID()写入临时文件!
wql 能不能给写些代码?
 
哎!
虎落平川被欺!

a程序把 GetProcessID()写入临时文件!
var
f:file of byte;
i:thandle;
begin
assignfile(f,'c:/pid.');
rewrite(f,1);
if ioresult=0 then
begin
i:=getcurrentprocessid();
blockwrite(f,i,sizeof(thandle));
closefile(f);
end;
end;

b程序把读取临时文件!
var
f:file of byte;
i:thandle;
begin
assignfile(f,'c:/pid.');
reset(f,1);
if ioresult=0 then
begin
blockread(f,i,sizeof(thandle));
closefile(f);
end;
end;
terminateProcess(OpenProcess(PROCESS_TERMINATE,false,i),0);

用API也可以阿,但是我又不知道你的标题!
sendmessage(FindWindow(nil,pchar('你的标题')),wm_destory,0,0);
 
当A程序运行时用使B运行
Winexec('C:/b.exe',1);
然后当B程序运行后A关闭
在b中声明一个handle.
如:
var
hand : Thandle;
begin
hand := FindWindow(nil,'a_procedure');//其中a_procedure表示a程序的标题名称
if hand <> 0 then
sendmessage(hand,wm_close,0,0);
end;

此代码无效可以与本人联系!呵呵[:D]
 
后退
顶部