求助:用ShellExecute打开一个控制台程序后,怎样将这个控制台程序关闭??
用ShellExecute打开一个控制台程序后,怎样将这个控制台程序关闭??
请高人指教!!
问题点数:80、回复次数:8Top
1 楼trueman3000(穷人)回复于 2005-06-01 17:42:24 得分 0
调用哪个函数可以在DELPHI中关闭控制台程序??Top
2 楼tjianliang(乡关何处)回复于 2005-06-01 17:59:05 得分 0
你的控制台程序要和用户交互吗?
如果不要交互不显示就行了
ShellExecute(Handle, 'open', 'xxx.bat', nil, nil, SW_HIDE);
Top
3 楼trueman3000(穷人)回复于 2005-06-01 18:14:27 得分 0
我想让它从内存中释放掉,因为要反复运行它N次!点一次按钮就运行一次。
不显示的话还是要占用资源的!
这个控制台程序正常运行完毕会自动关闭。
现在想在不能正常运行时由DELPHI来关闭它!Top
4 楼delphiray(天才)回复于 2005-06-01 19:57:50 得分 3
不懂,顶Top
5 楼cjianwen(空前)回复于 2005-06-03 20:28:02 得分 10
用 sendmassage(……);Top
6 楼FlyingBlueBoy(飞翔苹果)回复于 2005-06-03 22:28:17 得分 57
找到CMD.EXE 的进程.杀死进程既可,代码如下;
procedure closecmd;
var
lppe: TProcessEntry32;
snapshothandle:THandle;
f:boolean;
pid:DWord;
begin
ProcessName:='Cmd.exe' \\区分大小写
snapshothandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); \\创建进程快照
lppe.dwSize:=Sizeof(lppe);
f:=Process32First(snapshothandle,lppe);
While f do
begin
if ProcessName=StrPas(lppe.szExeFile) then
pid:= lppe.th32ProcessID;
f:= Process32Next(snapshothandle,lppe);
end;
CloseHandle(snapshothandle);
TerminateProcess(OpenProcess(Process_Terminate,false,pid),0);
end;Top
7 楼Kshape(C/C++初学者~~~~)回复于 2005-06-03 22:29:39 得分 10
哈哈
找到进程
然后杀就可以了啊
以前有类似的做法Top
8 楼trueman3000(穷人)回复于 2005-06-04 11:25:36 得分 0
多谢各位帮助!Top




