如何终止一个外部程序(100分)

  • 主题发起人 主题发起人 点上一支烟
  • 开始时间 开始时间

点上一支烟

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在我的程序中运行一个外部程序,但是我又怎么在我的程序中终止这个外部程序呢?
运行一个外部程序我知道可以用winexec,createprocess,但是终止这个外部程序用什么方法呢?
 
你不是知道CreateProcess后的Handle么, 用TerminateProcess不就可以了
 
http://www.playicq.com/dispdoc.php?t=&id=1989
 
PostMessage(FindWindow(Nil,'Caption'),WM_QUIT,0,0);
{其中的'Caption'换成外部程序的标题,比如空当接龙游戏程序的标题是'空当接龙'就用它替换'Caption'}
 
下面是一段关闭“计算器”的例子:
var
HWndCalculator : HWnd;
begin
//查找存在的计算器
HWndCalculator := Winprocs.FindWindow(nil, '计算器');
//关闭存在的计算器
if HWndCalculator <> 0 then
SendMessage(HWndCalculator, WM_CLOSE, 0, 0);
end;
 
//为了控制外部报表打印程序
MyHandle: THandle;
MyStartupInfo: TStartupInfo;
MyProcessInfo: TProcessInformation;
//hyadd end;
//以下是打开外部应用程序
procedure ExecuteApp(MyPath: String);
begin
FillChar(MyStartupInfo, SizeOf(MyStartupInfo), 0);
//清除MyStartupInfo中的数据

MyStartupInfo.cb:=SizeOf(MyStartupInfo);

CreateProcess(PChar(MyPath), nil, nil, nil, False,
DETACHED_PROCESS, nil, nil, MyStartupInfo,MyProcessInfo);

MyHandle:=MyProcessInfo.hProcess;
//把执行的程序的句柄赋值给MyHandle,它会在终止程序时用到
end;

//以下程序是关闭外部应用程序
procedure CloseApp(MyHandle: THandle);
begin
TerminateProcess(MyHandle, 0);
end;
我用过还不错,也是在网上找到的
 
多人接受答案了。
 
后退
顶部