Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Anwendung durch Prozess-ID killen (https://www.delphipraxis.net/10834-anwendung-durch-prozess-id-killen.html)

devnull 26. Okt 2003 10:35


Anwendung durch Prozess-ID killen
 
Hi,

ich habe in mein Programm eine Anwendungs-Kennnummer programmiert.
Das heißt, dass diese Anwendung nur einmal gestartet werden kann.

:?: Wie kann ich jetzt mit einem zweiten Programm feststellen, ob die
erste Anwendung noch offen ist (Anwend.-Kennnummer) und dieses Programm
dann auch schließen ??



ANWENDUNGS-KENNNUMMER

Delphi-Quellcode:
Initialization
  mHandle := CreateMutex(nil,True,'xxxxx');
  // 'xxxxx' ist eine eindeutige Kennung
  if GetLastError = ERROR_ALREADY_EXISTS then Halt;
finalization
  if mHandle<>0 then CloseHandle(mHandle)

devnull

MathiasSimmack 26. Okt 2003 10:38

Re: Anwendung durch Prozess-ID killen
 
Indem du bspw. nach dem Klassennamen des Fensters suchst (Hier im Forum suchenfindwindow), das bei VCL-Programmen mit dem Namen der Form identisch ist, etwa "TForm1". Und dann schließt du es mit durch Senden von WM_CLOSE.

Oder du machst einen Snapshot aller laufenden Prozesse und suchst nach dem Namen deiner Exe. Hat aber den Nachteil, dass es nicht funktioniert, wenn man dein Programm mal umbenennt. :)

devnull 26. Okt 2003 12:44

Re: Anwendung durch Prozess-ID killen
 
@MathiasSimmack:
Das mit dem Klassennamen des Fensters hab ich schon mal probiert. Das hat aber nicht so funktioniert, wie es eigentlich sollte. Liegt gluabe ich daran, dass die Anwendung versteckt im Hintergrund abläuft.

Gibt es keine andere Lösung ????????


devnull

MathiasSimmack 26. Okt 2003 12:57

Re: Anwendung durch Prozess-ID killen
 
Das ist -auf gut Deutsch!- Wurscht! Wenn das Programm ein Fenster hat, das man killen kann, dann ist es egal ob´s sichtbar und unsichtbar ist. Ich hatte bisher bei solchen Aktionen noch keine Probleme. Zeig doch mal den Code, den du ausprobiert hast.

Du musst natürlich auch das richtige Fenster schließen. Wenn deine Hauptform nicht sichtbar ist, dann darfst du auch keine andere Form (ein Optionsfenster oder so was) schließen wollen. Das mag gehen, aber die Hauptform wird trotzdem aktiv bleiben - was ja irgendwo auch logisch ist. :)


Ansonsten nach Hier im Forum suchenProzess Snapshot suchen und diesen Weg mal ausprobieren.

devnull 26. Okt 2003 19:06

Re: Anwendung durch Prozess-ID killen
 
HI,

Delphi-Quellcode:
Initialization
  mHandle := CreateMutex(nil,True,'QuickStart2003');
  if GetLastError = ERROR_ALREADY_EXISTS then begin
     //Hier prozedur einfügen, die vorhandene anwendung mit EINDEUTIGER KENNNUMMER 'QuickStart2003'
     //beendet .
     halt;
  end;
finalization
  if mHandle<>0 then CloseHandle(mHandle)
:firejump: Ich hab nichts gefunden, um das Fenster zu schließen !!!

devnull

mirage228 26. Okt 2003 19:17

Re: Anwendung durch Prozess-ID killen
 
lass die andere anwendung doch laufen und beende die, die gerade gestartet wird!

devnull 26. Okt 2003 19:48

Re: Anwendung durch Prozess-ID killen
 
Hi,
das Problem ist aber, wenn ich den Task Manager starte oder den akt. Benutzer abmelde, kann mein Programm keine Mausklicks und Tastatur eingaben mehr empfangen.
deshalb möchte ich das vorh. unbrauchbar gewordenene programm schließen und ein neues aufmachen ...

devnull

MathiasSimmack 26. Okt 2003 19:50

Re: Anwendung durch Prozess-ID killen
 
@devnull: Wenn dieses QuickStart-Ding von dir ist, dann müsstest du den Klassennamen (= evtl. Formnamen) eigentlich kennen. Wenn nicht, dann benötigst du ein Tool, das alle offenen Fenster mit Titel und Klassennamen auflistet. Dann findest du nämlich auch das QuickStart-Fenster, bzw. dessen Klassennamen zum Schließen.
Notfalls kannst du so ein Programm mit Hier im Forum suchenEnumWindows auch selbst schreiben.

devnull 26. Okt 2003 20:14

Re: Anwendung durch Prozess-ID killen
 
Joa, das probier ich mal.

devnull


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 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