![]() |
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 |
Re: Anwendung durch Prozess-ID killen
Indem du bspw. nach dem Klassennamen des Fensters suchst (
![]() 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. :) |
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 |
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 ![]() |
Re: Anwendung durch Prozess-ID killen
HI,
Delphi-Quellcode:
:firejump: Ich hab nichts gefunden, um das Fenster zu schließen !!!
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) devnull |
Re: Anwendung durch Prozess-ID killen
lass die andere anwendung doch laufen und beende die, die gerade gestartet wird!
|
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 |
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 ![]() |
Re: Anwendung durch Prozess-ID killen
Joa, das probier ich mal.
devnull |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz