[Delphi] - Zamykanie innej aplikacji

0

czesc. Chciałem zamknąć inny program, ale on jest niewidoczny, widać go tylko jak sę naciśnie CTRL + ALT + DELETE. Użyłaem takiej procedury:

function  KillProc(const ClassName:AnsiString):Boolean;
var
  hWnd,hProc:THandle;
  pid:DWORD;

begin
  Result:=False;
  hWnd := FindWindow(PCHAR(ClassName),nil);
  if IsWindow(hWnd) then begin
    GetWindowThreadProcessId(hWnd, @pid);
    hproc := OpenProcess(PROCESS_TERMINATE, FALSE, pid);
    if hproc<>0 then begin
      Result:=TerminateProcess(hProc,0);
      if Result then CloseHandle(hProc);
    end;
  end;
end;

A następnie:

KillProc('nazwa_programu');

I to mi nie działa. Wiecie moze jak zamknąć taki program ?</delphi>

0
function KillApp(AppName: string):Boolean;
var
  Uchwyt: tHandle;
  Proces: tProcessEntry32;
  Uchwyt2: THandle;
begin
Result:=False;
  Uchwyt := CreateToolHelp32SnapShot(TH32CS_SNAPALL, 0);
  Proces.dwSize := SizeOf(Proces);
  if Integer(Process32First(Uchwyt, Proces)) <> 0 then
    repeat
      if lowercase(Proces.szExeFile) = lowercase(AppName) then
      begin
        Uchwyt2 := OpenProcess(PROCESS_TERMINATE, bool(0), Proces.th32ProcessID);
        Result:=not TerminateProcess(Uchwyt2, 0);
        CloseHandle(Uchwyt2);
      end;
    until Integer(Process32Next(Uchwyt, Proces)) = 0;
  closehandle(Uchwyt);
end;
0

Sorry że odgrzeję temat ale mam nieco mały problem z tym drugim kodem.
Chodzi o to co znaczy: tProcessEntry32, CreateToolHelp32SnapShot, TH32CS_SNAPALL, Process32First, Proces.szExeFile, Proces.th32ProcessID, KillProc, i jak sobie z tym poradzić żeby delphi to zaakceptował.

0

Wymagane są unity:

uses TlHelp32, PSApi, ShellApi, ShlObj;
0

Dzięki! :) O to mi chodziło!

1 użytkowników online, w tym zalogowanych: 0, gości: 1