如何才能在程序中调用其他的程序,在终止的时候如何终止?
解决方案 »
- 日期
- 几种文件格式求救
- 如何在前台编制程序读取串口的数据呀请给我思路或者代码?
- Panel+背景图片
- 一年有365天,而现在我却是365分,大吉大利!迎国庆,散分了!
- 怎么使最小化按钮失效?
- Delphi6做报表:如何把QuickRep2加在QuickRep1中?
- 关于queyr的查询
- delphi中如何将record 类型的数据转换为 array of byte
- delphi调用webService时报错:ESOAPHTTPException(如何解决)
- 各位谢谢帮我把代码改成delphi好吗?
- 很奇怪的一个问题,某函数的一个参数为pchar类型的,做成dll调用有问题,而把这个函数放在unit1.pas里面,与dll无关系,使用就没有问题
或发送WM_CLOSE消息或用TerminateProcess.因为你的问题不是特别清楚(要根据已知条件具体而定),也无法给你说得太具体.
程序源码 :
首先定义以下变量
var sInfo : TStartupInfo;
pInfo : TProcessInformation;
cmdLine : String;
exitCode : Cardinal;
// 下面是调用过程
cmdLine := 'c:\winnt\notepad.exe';
FillChar(sInfo,sizeof(sInfo),#0);
sInfo.cb := SizeOf(sInfo);
sInfo.dwFlags := STARTF_USESHOWWINDOW;
sInfo.wShowWindow := SW_NORMAL;if not CreateProcess(nil,pchar(cmdLine),nil,nil,false,CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, sInfo, pInfo) then
MessageBox(Application.handle,'指定程序启动失败!','错误',MB_OK or MB_ICONSTOP)
else
begin
WaitForSingleObject(pInfo.hProcess,INFINITE);
GetExitCodeProcess(pInfo.hProcess,exitCode);
end;程序讲解 :
最主要是两个Windows API : CreateProcess和WaitForSingleObject. CreateProcess是用来启动进程的函数, 进程启动后, 会填写TProcessInformation这个结构, 而WaitForSingleObject的作用就是等待指定句柄的进程结束或超时. 关于这两个API的参数请参考Win32的说明