Entwickler-Ecke

Windows API - Kill Task Probleme


CurdledMilk - Mi 26.04.06 19:57
Titel: Kill Task Probleme
Hallo ich hätte hier mal ein Problem mit einer Funktion die Laufende Tasks beenden kann nur leider kapier ich die irgend wie nicht so richtig. Der Quelltext war halt unkommentiert als ich den gekriegt hab -leider. Wäre nett wenn mal jemand den groben Ablauf erklären könnte.
MfG


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
function KillTask(ExeFileName: string): integer;
const 
  PROCESS_TERMINATE=$0001
var 
  ContinueLoop: BOOL; 
  FSnapshotHandle: THandle; 
  FProcessEntry32: TProcessEntry32;  
begin 
  result := 0;  

  FSnapshotHandle := CreateToolhelp32Snapshot     // Das is mir unverständlich
                     (TH32CS_SNAPPROCESS, 0);         
  FProcessEntry32.dwSize := Sizeof(FProcessEntry32); 
  ContinueLoop := Process32First(FSnapshotHandle,    // Das is mir unverständlich
                                 FProcessEntry32); 

  while integer(ContinueLoop) <> 0 do  // Ebenfalls is mir die Schleife unverständlich
  begin                                                           
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =   
         UpperCase(ExeFileName)) 
     or (UpperCase(FProcessEntry32.szExeFile) = 
         UpperCase(ExeFileName))) then 
      Result := Integer(TerminateProcess(OpenProcess( 
                        PROCESS_TERMINATE, BOOL(0), 
                        FProcessEntry32.th32ProcessID), 0));  
    ContinueLoop := Process32Next(FSnapshotHandle, 
                                  FProcessEntry32); 
  end;  

  CloseHandle(FSnapshotHandle);  
end;



Moderiert von user profile iconGausi: Topic aus Algorithmen, Optimierung und Assembler verschoben am Mi 26.04.2006 um 20:08


Delete - Do 27.04.06 00:37

Die Schleife ist auch Murks.


Delphi-Quelltext
1:
while Integer(CuntinueLoop) <> 0 do                    

ist Blödsinn.


Delphi-Quelltext
1:
while ContimueLoop do                    

ergibt mehr Sinn.

Die anderen Funktionen kannst du im MSDN nachschlagen.

Aber ich würde dir so wie so meine Klasse http://www.michael-puff.de/Developer/Delphi/Sonstiges/ProcListCls.pas empfehlen.


uall@ogc - Do 27.04.06 01:27

So ganz murks war se auch nicht. Auch wenn es ein bisschen umständlich gemacht war.

Process32First/Next liefern die die Processe, damit der kernel weiß welcher der nächste ist, wird halt mit CreateToolHelpBla ein Handle erstellt.


CurdledMilk - Fr 28.04.06 20:35

hallo!

vielen dank erst mal, doch das scheint sich grad alles ein bisl zu schwer für mich herauszustellen. Ich schau mir erst ma ein paar tuts zu winapi an und werd mich dann noch ma an das thema setzen.

mfg