AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Rausfinden wie oft ein Programm läuft
Thema durchsuchen
Ansicht
Themen-Optionen

Rausfinden wie oft ein Programm läuft

Ein Thema von DelTurbo · begonnen am 15. Feb 2011 · letzter Beitrag vom 11. Dez 2011
Antwort Antwort
Seite 1 von 2  1 2      
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.245 Beiträge
 
Delphi 2007 Architect
 
#1

Rausfinden wie oft ein Programm läuft

  Alt 15. Feb 2011, 16:58
Hi,

leider finde ich in google nix. Deshalb frage ich einfach mal. Ich möchte ein Programm mehrmals starten. Ich weiss wie ich rausfinde ob das programm schon läuft, aber leider nicht wie oft das schon läuft. Wär super wenn mir da mal jemand helfen könnte.

Vielen dank im voraus

Rausfinden ob das Programm schon läuft mache ich wie folgt.

Delphi-Quellcode:
      Initialization //Verhindern, dass das Programm mehrmals gestartet wird
          mHandle := CreateMutex(nil, True, 'Projekt1.exe');
              if GetLastError = ERROR_ALREADY_EXISTS then
              begin
           MessageDlg('Das Programm läuft schon!', mtWarning, [mbOK], 0);
                Halt;
              end;
      finalization
         if mHandle <> 0 then CloseHandle(mHandle);
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.338 Beiträge
 
Delphi 12 Athens
 
#2

AW: Rausfinden wie oft ein Programm läuft

  Alt 15. Feb 2011, 17:13
Mutex = es kann nur Einen geben

Wenn es den Mutex also schon gibt, dann gibt es eine andere Anwendung, mit einem gleichnamigen Mutex im selben Kontext, in welchem man den neuen Mutex erstellen will.
> also geht hier nur "Einer oder Keiner"

Willst du die Anzahl wissen und mehrere zulassen, dann wirst du irgendwas nutzen müssen, welches ebenfalls global existiert und über eine Art Referenzzzählung verfügt.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.245 Beiträge
 
Delphi 2007 Architect
 
#3

AW: Rausfinden wie oft ein Programm läuft

  Alt 15. Feb 2011, 17:22
Willst du die Anzahl wissen und mehrere zulassen, dann wirst du irgendwas nutzen müssen, welches ebenfalls global existiert und über eine Art Referenzzzählung verfügt.
Das habe ich vor. Aber leider weiss ich nicht wie ich das anstellen soll. Das beispiel oben habe ich hauptsächlich drangehängt, falls mal jemand sowas sucht.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#4

AW: Rausfinden wie oft ein Programm läuft

  Alt 15. Feb 2011, 17:28
Du könntest folgendes Versuchen:
Delphi-Quellcode:
      var
        i:Integer=0;
      Initialization //Zählen wie oft das Programm gestartet wird
          repeat
              mHandle := CreateMutex(nil, True, 'InstanzMeinerApplikation'+ IntToStr(i));
              Inc(i);
          until GetLastError <> ERROR_ALREADY_EXISTS;
          MessageBox(0, PChar('Das Programm wurde'+IntToStr(i)+'mal gestartet') , 'MeinProg', MB_OK)
      finalization
         if mHandle <> 0 then CloseHandle(mHandle);
Man bemerke, dass das eine ziemlich fiese möglichkeit ist. Es geht bestimmt auch anders

PS: Den MessageDlg würde ich im initialization-Abschnitt nicht riskieren. lieber eine hübsche API-Funktion

Geändert von WM_CLOSE (15. Feb 2011 um 17:31 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von blutsgeist
blutsgeist

Registriert seit: 9. Dez 2011
Ort: Berlin
5 Beiträge
 
Delphi 2010 Architect
 
#5

AW: Rausfinden wie oft ein Programm läuft

  Alt 10. Dez 2011, 21:15
Guten Abend,

da ich im Delphi-Gebiet noch nicht so bewandert bin und gerne so ein Programmzähler für meine Zwecke haben will, bräuchte ich eure Hilfe.

Und zwar geht es um diesen Code:
Delphi-Quellcode:
      var
        i:Integer=0;
      Initialization //Zählen wie oft das Programm gestartet wird
          repeat
              mHandle := CreateMutex(nil, True, 'InstanzMeinerApplikation'+ IntToStr(i));
              Inc(i);
          until GetLastError <> ERROR_ALREADY_EXISTS;
          MessageBox(0, PChar('Das Programm wurde'+IntToStr(i)+'mal gestartet') , 'MeinProg', MB_OK)
      finalization
         if mHandle <> 0 then CloseHandle(mHandle);
Ich weiß leider nicht wie ich mHandle deklarien muss. Kann mir da einer weiter helfen?

LG Blutsgeist
Marcel
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: Rausfinden wie oft ein Programm läuft

  Alt 10. Dez 2011, 21:24
Na ja. mHandle? Was böte sich denn da wohl an? Vielleicht THandle?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#7

AW: Rausfinden wie oft ein Programm läuft

  Alt 11. Dez 2011, 11:34
Du könntest folgendes Versuchen:
Delphi-Quellcode:
      var
        i:Integer=0;
      Initialization //Zählen wie oft das Programm gestartet wird
          repeat
              mHandle := CreateMutex(nil, True, 'InstanzMeinerApplikation'+ IntToStr(i));
              Inc(i);
          until GetLastError <> ERROR_ALREADY_EXISTS;
          MessageBox(0, PChar('Das Programm wurde'+IntToStr(i)+'mal gestartet') , 'MeinProg', MB_OK)
      finalization
         if mHandle <> 0 then CloseHandle(mHandle);
Man bemerke, dass das eine ziemlich fiese möglichkeit ist.
Inwiefern ist denn diese Möglichkeit "fies"?
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.245 Beiträge
 
Delphi 2007 Architect
 
#8

AW: Rausfinden wie oft ein Programm läuft

  Alt 11. Dez 2011, 11:50
Hi,
ich habe es damals mit TJvAppInstances gemacht. Das ding kann aber nochmehr. Legs einfach mal drauf und spiel bissl mit rum. So lerne ich immer wenn ich was nicht weiss. Komme ich nicht weiter, dann google ich. zu 80% finde ich dann einen link nach hier, wo das steht was ich brauche.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#9

AW: Rausfinden wie oft ein Programm läuft

  Alt 15. Feb 2011, 17:31
In der JCL gibt es die Unit JclAppInst, mit der man die Anzahl der laufenden Instanzen zählen und auch begrenzen kann.
Ausserdem können die Instanzen untereinander auch Daten austauschen.
Das funktioniert sehr gut; nur auf einem Terminal Server klappt der Datenaustausch leider nicht.

Wenn du die JCL benützen magst, ist der Programmieraufwand sehr gering.
Andreas
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.245 Beiträge
 
Delphi 2007 Architect
 
#10

AW: Rausfinden wie oft ein Programm läuft

  Alt 15. Feb 2011, 18:04
Erstmal danke für die antworten. Jcl hab ich natürlich drauf

Soll das dann damit gehen: JvAppInstances1.AppInstances ?

Leider kommt ein fehler (unbekannt) wenn ich das bei var eintrage.

test :TJclAppInstances;

Ich dachte mir das so.....

Delphi-Quellcode:
var
   test :TJclAppInstances;
begin
   test:=JvAppInstances1.AppInstances;
end;
Was mach ich nun wieder falsch??? Ich dachte in TJclAppInstances steht dann z.b. ein Integer drinne der die anzahl der laufenden Programme hat. War das wieder zu einfach gedacht?

Danke im voraus

Edit: Ich habs gefunden. JvAppInstances1.AppInstances.InstanceCount

Vielen dank für den stubs in die richtige richtung!
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!

Geändert von DelTurbo (15. Feb 2011 um 18:15 Uhr)
  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 16:35 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