在执行程序开始运行时,怎样判断外部程序正在运行,并且关闭它!!这段代码应该放在程序的什么地方?谢谢各位!!
解决方案 »
- 谁用过 deExpress cxRTTIInspector 控件 帮忙
- ODAC 在不同网段下的连接,急救!!
- 哪里有比较全的消息类型介绍?
- 初学delphi,以下代码到底有什么问题??
- 关于fastreport得问题
- 怎么得到某个网页上具体文字的url? 解决就揭帖,在线等!
- 请问:listview中能把列里面的数据按整形排序么?
- 一个关于最小化的简单问题,给高分!
- Delphi和C++ Builder的比较,注意:不搞相互间的攀比和贬低,百家谈,没有分数。
- 如何实现能拖动的主菜单?如IE上的主菜单! <空>
- delphi中调用oracle table时,怎么老是出现无效列名,那位哥们能说说
- 为什么在DBGRID中用INSERT命令输入记录后记录会追加到数据集的最后?
if hwnd1<>0 then
SendMessage(hwnd1,WM_CLOSE,0,0);
1。 Application.Initialize; 之后,在工程文件.dpr里。
2。 主窗口的Oncreate事件里。
3。 主窗口的onShow事件里。
如Delphi中的onClose事件中经常会用到
if messagebox(...)=IDYES then
begin
Action:=caFree;
....
end
else
Action:=caNone;
但如下的代码,便没有这种尴尬事发生,代码如下:
function KillTask(ExeFileName: string): integer;
const PROCESS_TERMINATE=$0001;
var ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result := 0;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
//'正准备关闭主程序...';
while integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile))=UpperCase(ExeFileName))
or (UpperCase(FProcessEntry32.szExeFile) =UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(OpenProcess(PROCESS_TERMINATE,BOOL(0),FProcessEntry32.th32ProcessID),0));
ContinueLoop := Process32Next(FSnapshotHandle,FProcessEntry32);
//'正在关闭主程序,请等待...';
end;
CloseHandle(FSnapshotHandle);
end;调用方法
KillTask('Client.exe');
这里client.exe 是在进程管理器中的映像名称