Autor Beitrag
CurdledMilk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mi 26.04.06 19:57 
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

ausblenden volle Höhe 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
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 27.04.06 00:37 
Die Schleife ist auch Murks.

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

ist Blödsinn.

ausblenden 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 www.michael-puff.de/...iges/ProcListCls.pas empfehlen.
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: 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.

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
CurdledMilk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: 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