AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Programm durch Delphi Programm beenden?
Thema durchsuchen
Ansicht
Themen-Optionen

Programm durch Delphi Programm beenden?

Ein Thema von Cronos · begonnen am 9. Mär 2006 · letzter Beitrag vom 22. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
Cronos

Registriert seit: 7. Dez 2005
5 Beiträge
 
Delphi 6 Professional
 
#1

Programm durch Delphi Programm beenden?

  Alt 9. Mär 2006, 12:35
Eine Frage, ich suche nen Script mit dem ich andere offene ( meißt im hintergrund laufende) Programme mit einem kleinen Delphi programm beenden kann.
Ich bin leider Anfänger und bring das nicht zusammen.

Danke
Die Zeit kann man nicht aufhalten, das Wissen auch nicht!
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#2

Re: Programm durch Delphi Programm beenden?

  Alt 9. Mär 2006, 12:42
Wer suchet,der findet

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Cronos

Registriert seit: 7. Dez 2005
5 Beiträge
 
Delphi 6 Professional
 
#3

Re: Programm durch Delphi Programm beenden?

  Alt 9. Mär 2006, 12:43
Da Hab ich leider nichts gefunden ;(
Die Zeit kann man nicht aufhalten, das Wissen auch nicht!
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Programm durch Delphi Programm beenden?

  Alt 9. Mär 2006, 13:06
Hier im Forum suchenProzess beenden oder gleich in der Code Library: Prozess beendenProzess beenden

folgender Code:
Delphi-Quellcode:
function GetProcID(sProcName: String): Integer;
var
  hProcSnap: THandle;
  pe32: TProcessEntry32;
begin
  result := -1;
  hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
  if hProcSnap = INVALID_HANDLE_VALUE then exit;

  pe32.dwSize := SizeOf(ProcessEntry32);

  { wenn es geklappt hat }
  if Process32First(hProcSnap, pe32) = true then
    { und los geht's: Prozess suchen}
    while Process32Next(hProcSnap, pe32) = true do
    begin
      if pos(sProcName, pe32.szExeFile) <> 0then
        result := pe32.th32ProcessID;
    end;
end;

procedure KillIt(name:string);
var
  hProcess : Cardinal;
  dw : DWORD;
  dwprocid : cardinal;
begin
  dwprocide:=getprocid(name);
  { open the process and store the process-handle }
  hProcess := OpenProcess(SYNCHRONIZE or PROCESS_TERMINATE, False, dwProcID);
  { kill it }
  TerminateProcess(hProcess, 0);
  { TerminateProcess returns immediately, so wie have to verify the result via
    WaitfForSingleObject }

  dw := WaitForSingleObject(hProcess, 5000);
  case dw of
    { everythings's all right, we killed the process }
    WAIT_OBJECT_0: Messagebox(Application.Handle, 'Prozess wurde beendet.', 'Prozess beenden',
      MB_ICONINFORMATION);
    { process could not be terminated after 5 seconds }
    WAIT_TIMEOUT:
    begin
      Messagebox(Application.Handle, 'Prozess konnte nicht innerhalb von 5 Sekunden beendet werden.',
        'Prozess beenden', MB_ICONSTOP);
      exit;
    end;
    { error in calling WaitForSingleObject }
    WAIT_FAILED:
    begin
      RaiseLastOSError;
      exit;
    end;
  end;
end;
du musst nur die Unit TLHelp32 in die Uses-Liste einbinden.
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat
mushroomfreak05

Registriert seit: 20. Dez 2005
3 Beiträge
 
#5

Re: Programm durch Delphi Programm beenden?

  Alt 9. Mär 2006, 13:34
Laufende Anwendung beenden
CreateToolHelp32Snapshot, TerminateProcess


--------------------------------------------------------------------------------

Die Funktion beendet den Prozess, der mit übergebenen Exenamen übereinstimmt. Sollten mehrere Prozesse des selben Exenamens laufen, so wird der zuerst Gefundene geschlossen.

Wenn der Prozess erfolgreich beendet wurde, wird true zurückgegeben.
Delphi-Quellcode:
uses TLHelp32;

function KillTask(const AExeName: string): boolean;
var
  p: TProcessEntry32;
  h: THandle;
begin
  Result := false;
  p.dwSize := SizeOf(p);
  h := CreateToolHelp32Snapshot(TH32CS_SnapProcess, 0);
  try
    if Process32First(h, p) then
      repeat
        if AnsiLowerCase(p.szExeFile) = AnsiLowerCase(AExeName) then
          Result := TerminateProcess(OpenProcess(Process_Terminate,
                                                 false,
                                                 p.th32ProcessID),
                                     0);
      until (not Process32Next(h, p)) or Result;
  finally
    CloseHandle(h);
  end;
end;

//Aufruf
procedure TForm1.Button2Click(Sender: TObject);
begin
  if not KillTask('Project2.exe') then
    Showmessage('Prozess konnte nicht beendet werden.');
end;
Bei diesem Code wird der Prozess ohne Rückfrage beendet. Dadurch kann es ggf. zu Datenverlusten kommen.

[edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit]
  Mit Zitat antworten Zitat
Cronos

Registriert seit: 7. Dez 2005
5 Beiträge
 
Delphi 6 Professional
 
#6

Re: Programm durch Delphi Programm beenden?

  Alt 10. Mär 2006, 09:00
Danke hat einwandfrei Funktioniert
Die Zeit kann man nicht aufhalten, das Wissen auch nicht!
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Programm durch Delphi Programm beenden?

  Alt 19. Aug 2006, 18:00
Hallo,
Ich habe einige Functionen hier im Forum getestet aber unter Win NT Probleme mit dem Abschiessen eines Programmes über deren *.exe Namen.

Kann mir jemand nen Tipp geben?

Danke
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#8

Re: Programm durch Delphi Programm beenden?

  Alt 20. Aug 2006, 14:43
Kannst du uns die Art des Problems geben?
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: Programm durch Delphi Programm beenden?

  Alt 21. Aug 2006, 15:37
Hi,
also das Problem ist das ich unter Win NT 4.0 eine Exe nicht abschiessen oder beenden kann!

Bräuchte die Funktion dringen um was upzudaten.

Danke.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Programm durch Delphi Programm beenden?

  Alt 21. Aug 2006, 16:28
Villeicht mit Hilfe bon pskill aus den pstools von Sysinternal.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz