还是ShellExecute,12:00前揭帖.
1.关闭由ShellExecute调用的程序的实例,不关闭手工打开的实例.
2.ShellExecute返回的是什么东西,好像不是Handle.
问题点数:20、回复次数:10Top
1 楼redlegend_126_com(redlegend)回复于 2002-03-29 11:05:26 得分 3
关注!!!!!!!
Top
2 楼wolfAone(30,奋斗成男人)回复于 2002-03-29 11:05:39 得分 0
FindWindows查找的机制是什么,譬如现在有两个叫"Project"程序的实例,Handle为1001,1002,它根据什么来查找?第一个?排需?Top
3 楼wolfAone(30,奋斗成男人)回复于 2002-03-29 11:14:00 得分 0
啊,都没人知道丫?Top
4 楼quark(夸克)回复于 2002-03-29 11:20:42 得分 5
//==============================================================================
//强制终止某应用程序运行********************************************************
//==============================================================================
procedure AppForceExit(const AppName: string);
var lppe: TProcessEntry32;
ssHandle: THandle;
Wnd: HWND;
AppFound: Boolean;
begin
ssHandle := CreateToolHelp32SnapShot(TH32CS_SNAPALL, 0);
AppFound := Process32First(sshandle, lppe);
while AppFound do
begin
//其中lppe.szExefile就是程序名**********************************************
if UpperCase(ExtractFileName(lppe.szExeFile))=UpperCase(AppName) then
begin
Wnd := OpenProcess(PROCESS_ALL_ACCESS, true, lppe.th32ProcessID);
TerminateProcess(Wnd, 0);
end;
AppFound := Process32Next(ssHandle, lppe);
end;
end;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~
EXAM:
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
procedure TForm_Main.Button18Click(Sender: TObject);
begin
case (Sender as TButton).Tag of
0: ShellExecute(Handle, 'Open', PChar('ping.exe'), PChar('192.168.1.11 -t'), nil, SW_SHOWNORMAL);
1: AppForceExit('ping.exe');
end;
(Sender as TButton).Tag := (Sender as TButton).Tag xor 1;
end;
Top
5 楼wolfAone(30,奋斗成男人)回复于 2002-03-29 11:25:20 得分 0
quark(夸克) :你这样把手工开的Ping窗口都关闭了.Top
6 楼shangshang(大雪有痕)回复于 2002-03-29 11:33:12 得分 3
shellexecute的确不是句柄。
你用Creatprocess多好。功能足够强大了。
findwindow的机制,他的参数就是窗口类名和窗口标题啊。
如果都一摸一样的话,他只返回一个窗口的句柄,我忘了是第一个
还是最后一个了。你查查msdn吧。Top
7 楼horlen(少爷的破拐杖)回复于 2002-03-29 11:37:11 得分 3
用FindWindows这个函数就是有一个缺点,他一定要先释放掉你要查找的窗体。
现在吃饭,我以前有这个函数的解释,现在找不到了。Top
8 楼liulin(liulin)回复于 2002-03-29 11:39:50 得分 3
用winexec啊。delphi下这个函数好点Top
9 楼milpas(我带着我的影子去流浪)回复于 2002-03-29 11:40:29 得分 3
用CteateProcess才能解决这个问题吧Top
10 楼wolfAone(30,奋斗成男人)回复于 2002-03-29 11:45:02 得分 0
破少爷的破拐杖:
用FindWindows这个函数就是有一个缺点,他一定要先释放掉你要查找的窗体。
这个不能理解.Top




