AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Prozess Beenden

Ein Thema von MiniKeks · begonnen am 9. Aug 2005 · letzter Beitrag vom 15. Aug 2005
Antwort Antwort
Seite 2 von 3     12 3      
Olli
(Gast)

n/a Beiträge
 
#11

Re: Prozess Beenden

  Alt 15. Aug 2005, 00:33
Zitat von Luckie:
Ja aber doch nur in dem Code, der demonstriert, wie man die Funktionen benutzt.
Habe ich was anderes behauptet? Ich finde es dennoch unglücklich, zumal die Beschreibung fehlt, was in den einzelnen Form-Elementen erwartet wird
Ansonsten favorisiere ich natürlich eindeutig die Kapselung in Routinen oder sogar Klassen. Keine Frage.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Prozess Beenden

  Alt 15. Aug 2005, 00:39
Es klang so, als wenn du meintest in den einzelnen Routinen würde ich auf TForm usw. zugreifen.
Zitat:
was in den einzelnen Form-Elementen erwartet wird
Meinst du eine erklärung der Parameter? Ich bin davon ausgegeangen, die erschließen sich von selbst. Aber bei Gelegenheit werde ich das noch mal überarbeiten, dann wird eventuell sogar eine Klasse drauß.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#13

Re: Prozess Beenden

  Alt 15. Aug 2005, 00:43
Zitat von Luckie:
Meinst du eine erklärung der Parameter?
Jain. Wäre sicher auch nicht schlecht. Aber eigentlich meinte ich: "Man nehme ein Edit, welches die numerische ID des Prozesses enthält, welcher beendet werden soll" ... usw.
Es ist für dich und mich eindeutig, aber wir hatten das schon mehrfach, nicht alle wissen so gut bescheid :-/
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#14

Re: Prozess Beenden

  Alt 15. Aug 2005, 00:45
Ach so da. Jupp, wäre bestimmt nicht schlecht. Aber nicht mehr heute, mir platzt gleich der Schädel - hat hier jemand mal eine Kopfschmerztablette?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#15

Re: Prozess Beenden

  Alt 15. Aug 2005, 00:50
Zitat von Luckie:
hat hier jemand mal eine Kopfschmerztablette?
Nö, aber wie wäre es mit einem Gläschen 5jährigem Metaxa. Für dich würde ich sogar die Flasche 7jährigen in der Ecke aufmachen - alternativ kann ich Tavria oder Aj Petri aus der Ukraine anbieten
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#16

Re: Prozess Beenden

  Alt 15. Aug 2005, 00:57
Da ich mich sowieso schon die ganze Zeit mit dir hier beim Posten unterhalte:

Zitat:
Für dich würde ich sogar die Flasche 7jährigen in der Ecke aufmachen
Ist das gut, wenn er sieben Jahre alt ist oder schlecht? Ich frage mich nämlich, ob ich mich geehrt fühlen soll oder nicht.

Zitat:
alternativ kann ich Tavria oder Aj Petri aus der Ukraine anbieten
Aha. Alte russische Heilmethode: Schmerzen durch Schmerzen bekämpfen?

Aber wir werden gerade ziemlich offtopic. Eigentlich müsste ich schon mein eigenes Posting melden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#17

Re: Prozess Beenden

  Alt 15. Aug 2005, 01:02
Hiermit ermahne ich Luckie, nicht weiter offtopic zu werden und zum Thema zurückzufinden!

Ein Hinweis von Olli noch an Luckie:
Zitat:
7 Jahre ist natürlich besser. Und die beiden ukrainischen sind Cognacs ... sehr lecker.
*aua mein kopf* Fühlt sich an wie:
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#18

Re: Prozess Beenden

  Alt 15. Aug 2005, 05:01
@Luckie AND Olli, darf ich Eure Zweisamkeit unterberchen ?

@MiniKeks

In Bezug auf http://www.swissdelphicenter.ch/de/showcode.php?id=593 brauchst Du doch nur die beiden Methoden zusammenführen (Siehe Beispiel).
Im Beispiel sollte man noch auf die Gross- und Kleinschreibung eingehen.

Delphi-Quellcode:
function TerminateTheProcess(const ExeFilename: String): Boolean;
var
  ...
begin
  aSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  aProcessEntry32.dwSize := SizeOf(aProcessEntry32);
  bContinue := Process32First(aSnapshotHandle, aProcessEntry32);
  while Integer(bContinue) <> 0 do // Suche solang bContinue true
  begin
    if ExtractFileName(aProcessEntry32.szExeFile) = ExeFilename then
    begin
      if MessageDlg('Do you want to Terminate...' ... then
      begin
        PrID := aProcessEntry32.th32ProcessID;
        Ph := OpenProcess(1, BOOL(0), PrID);
        Ret := TerminateProcess(Ph, 0);
        if Integer(Ret) = 0 then
        begin
          MessageDlg('Cannot terminate...', mtInformation, [mbOK], 0);
          Result := False;
        end else
        begin
          bContinue := False;
          Result := True;
         
          { könnte man auch so machen ist aber nicht "sauber"
          CloseHandle(aSnapshotHandle);
          Result := True;
          exit;
          }

       end;
      end;
    end;
    bContinue := Process32Next(aSnapshotHandle, aProcessEntry32); // weitersuchen
  end;
  CloseHandle(aSnapshotHandle);
end;
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#19

Re: Prozess Beenden

  Alt 15. Aug 2005, 11:03
Und genau das ist das Problem:
Ret := TerminateProcess(Ph, 0); weswegen ich meinen Code vorziehen würde. TerminateProcess arbeitet asynchron:
Zitat von PSDK:
TerminateProcess initiates termination and returns immediately.
Das heißt, es leitet den Prozess zum Beenden des Prozesses ein und kehrt sofort zurück. Der Rückgabewert signalisiert nur, ob TerminateProcess korrekt ausgeführt wurde, sprich, mit einem korrekten Prozesshandle. Der Rückgabewert sagt jedoch nichts darüber aus, ob der Prozess auch tatsächlich termniniert wurde. Deswegen sieht meine Routine so aus:
Delphi-Quellcode:
{...}
    dw := Integer(TerminateProcess(hProcess, 1));
    if dw <> 0 then
    begin
      // TerminateProcess returns immediately, so wie have to verify the result via
      // WaitForSingleObject
      dw := WaitForSingleObject(hProcess, Wait);
      if dw = WAIT_FAILED then
        dw := GetLastError;
    end
{...}
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#20

Re: Prozess Beenden

  Alt 15. Aug 2005, 11:05
Zitat von turboPASCAL:
@Luckie AND Olli, darf ich Eure Zweisamkeit unterberchen ?
Frechheit hier einfach so reinzuplatzen

Zitat von turboPASCAL:
[...] brauchst Du doch nur die beiden Methoden zusammenführen (Siehe Beispiel).
Dann kann er die Schleife ja gleich durchlaufen lassen, damit er alle Prozesse dieses Namens gekillt
Woraus schöpfst du eigentlich deine Zuversicht, der erste Prozeß mit diesem exakten Namen der EXE sei das Ziel? Hier könnte der Pfad auch relevant sein.


Außerdem gibt es ein typisches Problem der Native APIs (also schon unterhalb der Toolhelp-API) in Sachen Dateiname. Bei mir wird aus
C:\Programme\Apache Group\Apache2\bin\ApacheMonitor.exe sowohl im TaskManager als auch in anderen ähnlichen Programmen ein ApacheMonitor.e. Das gilt natürlich für obige Beispiele gleichermaßen - fiel mir nur gerade ein und wird üblicherweise komplett vernachlässigt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 06:36 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