Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Rausfinden wie oft ein Programm läuft (https://www.delphipraxis.net/158389-rausfinden-wie-oft-ein-programm-laeuft.html)

rollstuhlfahrer 15. Feb 2011 21:04

AW: Rausfinden wie oft ein Programm läuft
 
Inc und Dec sind aber nicht threadsave, also kann es zu Problemen kommen, wenn 2 Prozesse gleichzeitig versuchen, die Anzahl zu verändern. Besser ist dagegen Hier im Forum suchenInterlockedDecrement und Hier im Forum suchenInterlockedIncrement.

Bernhard

Aphton 15. Feb 2011 21:51

AW: Rausfinden wie oft ein Programm läuft
 
Zitat:

Zitat von rollstuhlfahrer (Beitrag 1082012)
Inc und Dec sind aber nicht threadsave, also kann es zu Problemen kommen, wenn 2 Prozesse gleichzeitig versuchen, die Anzahl zu verändern. Besser ist dagegen Hier im Forum suchenInterlockedDecrement und Hier im Forum suchenInterlockedIncrement.

Bernhard

Ohh, danke für die Information! Hab ich gar nicht bedacht :oops:

DelTurbo 16. Feb 2011 16:16

AW: Rausfinden wie oft ein Programm läuft
 
Hi,

nochmals danke für die hilfe. Schon kommt ein neues problem. Ich versuche es mal zu erklären.

Ich habe z.b. 5x das prg laufen. Jedes prg kennt seine "nummer" (1-5). Nun beende ich z.b. programm 3. Dann starte ich das programm nochmal. Nun versuche ich seit gestern abend einen weg zu finden, der mir sagt das programm 3 fehlt und das nun neu gestartete programm die 3 annehmen soll.

Mit dieser jedi-hilfe die ich gefunden habe komm ich nicht weiter. http://help.delphi-jedi.org/unit.php?Id=2575

Ich dachte mir das ungefähr so. Eine schleife von 1 bis JvAppInstances1.AppInstances.InstanceCount. Und in der schleife würde ich gerne jeden process abfragen ob er da ist. Sollten z.b. alle 5 da sein, weiss ich das ich einen 6. process aufmachen muss. Sollte einer oder mehr fehlen wollte ich die kleinste nummer nehmen von den fehlenden.

Ich hoffe mir kann da nochmal einer weiterhelfen.

Danke im voraus

rollstuhlfahrer 16. Feb 2011 16:23

AW: Rausfinden wie oft ein Programm läuft
 
Also so langsam würde ich auf die Unix-Schiene wechseln und das Datei-basiert machen. Windows kennt temporäre Dateien, die nur so lange existieren, wie die Anwendung diese offen hält (oder bis die Anwendung tot ist). Diese Dateien kannst du im TMP-Verzeichnis des Users erstellen. Mit Hilfe von Hier im Forum suchenFileExists() kannst du dann rausfinden, welche Anwendung (inkl. Nummer) läuft.

Bernhard

DelTurbo 16. Feb 2011 16:28

AW: Rausfinden wie oft ein Programm läuft
 
Das wäre eine idee. Ich dachte es geht etwas "eleganter"

Memnarch 16. Feb 2011 16:30

AW: Rausfinden wie oft ein Programm läuft
 
Also ich würde per Delphi mir einfach sämtliche apps holen(so wies im taskmanager steht) und mir davon den namen der exe holen. Dadurch kannste deine progs zählen.

Wenn dein Prog auch ne Form hat, also keine consolenanwendung ist, wovon ich mal ausgehe), kanst du einfach deiner hauptform ne caption zuweisen. sowas wie

"Name(X)"

X ist hierbei die nummer. wenn du dir also die Fensterliste holst und alle fenster rausholst, die deine exe haben, kannst du deren caption überprüfen und die nummer rausfiltern. Damit bekommste raus welche fehlt.

Für ersteres war es glaub ich "GetWindowList".

MFG
Memnarch

blutsgeist 10. Dez 2011 21:15

AW: Rausfinden wie oft ein Programm läuft
 
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:
Zitat:

Zitat von WM_CLOSE (Beitrag 1081936)
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

Luckie 10. Dez 2011 21:24

AW: Rausfinden wie oft ein Programm läuft
 
Na ja. mHandle? Was böte sich denn da wohl an? ;) Vielleicht THandle? ;)

blutsgeist 10. Dez 2011 21:40

AW: Rausfinden wie oft ein Programm läuft
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke für die schnelle Antwort!

THandle gibt wenigstens keine Fehler mehr aus, allerdings wenn ich es compilieren will, bekomme ich immer Fehler angezeigt.

Siehe einfach mal den Screenshot ;-)

LG

himitsu 10. Dez 2011 21:43

AW: Rausfinden wie oft ein Programm läuft
 
Und woher sollen wir jetzt wissen, das was für eine Zeile sein soll?

Aber meine Glaskugel sagt mit ... du solltest die vorherigen Fehler beheben.
Denn der Fehler ist nicht diese Variable.


PS: Wobei man auch einfach mal nachsehn könne, was CreateMutex als Result für einen Typen vorgibt und für deinen letzen Fehler, was sie für Parameter haben will. :roll:


PSS: Wenn/falls dein Code mal funktioniert ... versuche mal Folgendes:
- Programm mehrmals starten
- das Erste beenden
- nun nochmal Eines starten und schauen was das mein, wie oft es schon gestartet sei. :angle2:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:09 Uhr.
Seite 2 von 3     12 3      

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