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

解决方案 »

  1.   

    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;