AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Anwendung durch Prozess-ID killen
Thema durchsuchen
Ansicht
Themen-Optionen

Anwendung durch Prozess-ID killen

Ein Thema von devnull · begonnen am 26. Okt 2003 · letzter Beitrag vom 26. Okt 2003
Antwort Antwort
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#1

Anwendung durch Prozess-ID killen

  Alt 26. Okt 2003, 11:35
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
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#2

Re: Anwendung durch Prozess-ID killen

  Alt 26. Okt 2003, 11:38
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.
  Mit Zitat antworten Zitat
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#3

Re: Anwendung durch Prozess-ID killen

  Alt 26. Okt 2003, 13:44
@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
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#4

Re: Anwendung durch Prozess-ID killen

  Alt 26. Okt 2003, 13:57
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.
  Mit Zitat antworten Zitat
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#5

Re: Anwendung durch Prozess-ID killen

  Alt 26. Okt 2003, 20:06
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)
Ich hab nichts gefunden, um das Fenster zu schließen !!!

devnull
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Anwendung durch Prozess-ID killen

  Alt 26. Okt 2003, 20:17
lass die andere anwendung doch laufen und beende die, die gerade gestartet wird!
David F.
  Mit Zitat antworten Zitat
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#7

Re: Anwendung durch Prozess-ID killen

  Alt 26. Okt 2003, 20:48
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
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#8

Re: Anwendung durch Prozess-ID killen

  Alt 26. Okt 2003, 20:50
@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.
  Mit Zitat antworten Zitat
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#9

Re: Anwendung durch Prozess-ID killen

  Alt 26. Okt 2003, 21:14
Joa, das probier ich mal.

devnull
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:30 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