读书人

怎样定时运行和关闭某个不知Title的程

发布时间: 2012-02-11 09:51:34 作者: rapoo

怎样定时运行和关闭某个不知Title的程序呢
现在用Delphi的人是不是越来越少了啊,提问和回复的人都少了。

我想定时运行和定时关闭我服务器上的某几个程序,我在网上去搜索了一下方法,发现运行可以使用ShellExecute或WinExec函数来打开运行某程序。而关闭某个程序呢,都是建议使用SendMessage(FindWindow( "应用程序标题 "),CM_CLOSE,0,0)来关闭这个程序。
  因为我想把程序做得通用点,想控制某个程序时,先将它们加入到列表框中,然后再来自动运行和关闭它们,用SendMessage函数时必须先用FindWindow函数来根据应用程序的标题来确定程序的Handle,但由于程序想通用点,我根本不知道应用程序的Title是什么啊,怎样才能获得程序的Title呢,如果程序没有Title又怎么办呢?

   大家来讨论一下怎样才是最好的实现办法啊。

[解决办法]
可以使用进程ID
[解决办法]
use TlHelp32,

例子:关闭excel.exe的话
AppForceExit( 'Excel.exe ');

procedure AppForceExit(AppName: string);
var lppe: TProcessEntry32;
ssHandle: THandle;
AppFound: Boolean;
Wnd: HWND;
begin
ssHandle := CreateToolHelp32SnapShot(TH32CS_SNAPALL, 0);
lppe.dwSize := SizeOf(lppe);
AppFound := Process32First(sshandle, lppe);
while AppFound do
begin

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;

读书人网 >.NET

热点推荐