Italia
Foro

Mehrfachaufruf des eigenen Programmi verhindern

 

Michael
Wodrich
Ich finde den Snippet einfach nicht mehr.

Wie verhindere ich, daß mein Programm mehrfach im Speicher steht.
Mit FindWindow und hWnd-Vergleich klappt es bei mir nicht.

Nach erfolgreichem Test soll die laufende Instanz aktiviert werden.

Wieso ist zu diesem Thema eigentlich in beiden Foren nichts zu finden?
 
Programmieren, das spannendste Detektivspiel der Welt.
07.09.2006  
 




Michael
Wodrich
Aha, halbe Stunde per Flüchtigkeitsfehler verbraten...

siehe Code-Snippets

Schöne Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
07.09.2006  
 



Äh, haste den nun was gefunden?
Dafür nimmt man meist Mutex oder Semaphore. FindWindow ist zu unzuverlässig,
weil es potuto das falsche Fenster gefunden werden
 
07.09.2006  
 




Michael
Wodrich
Siehste und unter Mutex hab ich auch noch nicht in den Foren gesucht. Danke, da werde ich bestimmt fündig.

Ich wollte einfach nur das ODoku.exe Fenster auf eine Instanz beschränken. Da der Titel sehr lang ist, wird es dafür wohl ausreichen...

Schöne Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
07.09.2006  
 



Das Einfachste:
KompilierenMarkierenSeparieren
 $U pipe.pcu = pipe.
declare pipe&
case pipe.is("odoku") : end
pipe&:=pipe.create("odoku")
waitinput
pipe.close 
 
07.09.2006  
 



Hallo Michael
Hier ein Code von Thomas Hölzer
KompilierenMarkierenSeparieren
PRFellow- Vorlage
Autor: Thomas Hölzer
Die Prozedur OnlyOne sorgt dafür, daß nur eine Instanz eines
Profan²- 32 Bit(!)-Programms aufgerufen werden kann.
Sie muß als erste beim Programmstart abgearbeitet werden
Am Programmende muß CloseHandle aufgerufen werden!
declare programm$, version$
programm$="ADRESSOR "
version$="1.5.0"
Globale Deklarationen
Def CreateMutex(3) !"KERNEL32","CreateMutexA"
Def GetLastError(0) !"KERNEL32","GetLastError"
Def CloseHandle(1) !"KERNEL32","CloseHandle"
Declare MutexName#,Mutex&

Proc OnlyOne

    Declare error&,name$
    Let name$=programm$  Ein beliebiger,unverwechselbarer Name
    Dim MutexName#,Add(Len(name$),1)
    String MutexName#,0=name$
    Let Mutex&=CreateMutex(0,1,Mutexname#)
    Let error&=GetLastError()
    Dispose MutexName#

    If And(Neq(Mutex&,0),Equ(error&,0))

        MessageBox("Dies ist die erste Programminstanz
        Lassen Sie zum Testen diese
        Messagebox stehen und starten Sie das Programm noch einmal!","Mutex-Test",64)

    Else

        MessageBox("Das Programm ist schon aktiv  ",programm$+version$,16)
        CloseHandle(Mutex&)
        End

    EndIf

EndProc

Beispiel
OnlyOne
Die nächste Anweisung immer ans reguläre Progammende!!!
case mutex&: CloseHandle(Mutex&) PRFellow- Vorlage
Autor: Thomas Hölzer

Hast Du das gesucht ?
 
07.09.2006  
 



[quote:1f0db0e676]Warum editierst Du dann Deinen Beitrag nicht? gruebel[/quote:1f0db0e676]
Hallo iF
Die Frage war berechtigt und ich habe jetzt erst kapiert, dass mir das Editieren meiner Beiträge possibile ist. Kannst Du mir noch mal verzeihen
Hoffe dass jetzt alles stimmt
 
07.09.2006  
 



[quote:0224cc50ff=Horst Horn]Hallo
Der Code ist aus Versehen doppelt kopiert worden - Sorry [/quote:0224cc50ff]
Warum editierst Du dann Deinen Beitrag nicht?
 
07.09.2006  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

901 Views

Untitledvor 0 min.
Peter Max Müller13.11.2017

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie