[gelöst] kill process

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
exc-jdbi
Beiträge: 64
Registriert: So 3. Aug 2014, 03:37

[gelöst] kill process

Beitrag von exc-jdbi »

Guten Morgen Community

Ich hab hier ein VB.Net Programm das ich Umsetzen möchte

Code: Alles auswählen

 
Private Sub KillProcess()
  Dim con() As Process = Process.GetProcesses()
  For i As Integer = 0 To con.Length - 1
    If con(i).ProcessName = "xyz" Then
      Try
        con(i).Kill()
      Catch ex As Exception
      End Try
    End If
  Next
End Sub
 
Scheint in Lazarus nicht so einfach zu gehen. Wie mach ich das am Besten? Mit dieser hier,

Code: Alles auswählen

CreateToolhelp32Snapshot 
oder gibt es eine bessere Möglichkeit?

Danke für die Tips

Freundliche Grüsse

exc-jdbi
Zuletzt geändert von exc-jdbi am Do 16. Okt 2014, 10:20, insgesamt 1-mal geändert.

exc-jdbi
Beiträge: 64
Registriert: So 3. Aug 2014, 03:37

Re: kill process

Beitrag von exc-jdbi »

Guten Morgen

Ich weiss nicht, ob dieser Weg zum Erfolg führt. Den ersten Schritt habe ich gemacht. Ich Frag mich jetzt nur noch, wie ich den Prozess löschen kann.

Mit http://lazarus-ccr.sourceforge.net/docs ... ocess.html sollte es doch gehen, nur wie weise ich das fehlerfrei dem TProcess zu?

Code: Alles auswählen

 
var h:tHandle;
    pe:tProcessEntry32;
    sPrcName:string;
    aProcess:tAsyncProcess;
begin
  h:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  try
    pe.dwSize:=SizeOf(pe);
    AProcess:=TAsyncProcess.Create(nil);
    if Process32First(h,pe) then begin
      while Process32Next(h,pe) do
      begin
        sPrcName:=pe.szExeFile;
        if pos('xyz',LowerCase(sPrcName))>0 then
        begin
          {Wie geht es hier weiter ?}
          {... ... ...}
        end;
      end;
    end
    else RaiseLastOSError;
  finally
    FreeAndNil(AProcess);
  end;
end;
 
Danke für die Tips

Freundliche Grüsse

exc-jdbi

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: kill process

Beitrag von Michl »

Könnte so gehen:

Code: Alles auswählen

var h:tHandle;
    pe:tProcessEntry32;
    sPrcName:string;
 //   aProcess:tAsyncProcess;
begin
  h:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  try
    pe.dwSize:=SizeOf(pe);
//    AProcess:=TAsyncProcess.Create(nil);
    if Process32First(h,pe) then begin
      while Process32Next(h,pe) do
      begin
        sPrcName:=pe.szExeFile;
        if pos('xyz',LowerCase(sPrcName))>0 then
        begin
          TerminateProcess(OpenProcess(Process_Terminate, False, pe.th32ProcessID), 0);
        end;
      end;
    end
    else RaiseLastOSError;
  finally
//    FreeAndNil(AProcess);
  end;
end;

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

exc-jdbi
Beiträge: 64
Registriert: So 3. Aug 2014, 03:37

Re: kill process

Beitrag von exc-jdbi »

Guet Morgen Michl

Und ich bin immer davon ausgegangen, dass ich ein 'tProcess' mitführen muss.

Perfekt :D Funktioniert bei mir. Danke.

Freundliche Grüsse

exc-jdbi

exc-jdbi
Beiträge: 64
Registriert: So 3. Aug 2014, 03:37

Re: [gelöst] kill process

Beitrag von exc-jdbi »

Hallo und guten Morgen

Ich hab leider kein Linux zu Hand. Darf ich annehmen, dass diese Funktion so wie beschrieben nicht nur für Windows korrekt lauft?

Danke ür die Antwort.

Freundliche Grüsse

exc-jdbi

Benutzeravatar
theo
Beiträge: 10904
Registriert: Mo 11. Sep 2006, 19:01

Re: [gelöst] kill process

Beitrag von theo »

exc-jdbi hat geschrieben: Ich hab leider kein Linux zu Hand. Darf ich annehmen, dass diese Funktion so wie beschrieben nicht nur für Windows korrekt lauft?
Davon würde ich nicht ausgehen.
Allgemein würde mich interessieren, warum ein normales Programm einen andern Prozess abschießen soll?

exc-jdbi
Beiträge: 64
Registriert: So 3. Aug 2014, 03:37

Re: [gelöst] kill process

Beitrag von exc-jdbi »

Danke Theo

Ich wollte nur vollständigkeithalber fragen.

Ich arbeite hier mit Windows. Und darum ist es für mich noch kein Problem.

Ich kann diese Routine gut gebrauchen, da bei mir unter bestimmten Umständen leider (eben Windows) gewisse Prozesse mehrere Male aufgestartet werden. Vorallem wen ich mit MS Office arbeite.

Freundliche Grüsse

exc-jdbi

Antworten