Nur eine Instanz erlauben
-
Hallo !
In der FAQ ist eine Möglichkeit beschrieben wie man doppelte Instanzen verhindern kann.
Allerdings wird dort extra ein MutexObjekt(?) erzeugt.Die Klasse CWinApp besitzt die Membervariable CWinApp::m_hPrevInstance bzw. laut MSDN sollte CWnd::FindWindow benutzt werden um eine aktuelle Instanz zu orten.
Ich finde die FindWindow Methode Methode um einiges besser. Nicht zuletzt deshalb, da hier kein unnötiges Objekt erzeugt wird.
Kann man mit der FindWindow Methode aber mal "Pech haben" und ist somit mit der CreateMutex-Methode IMMER auf der richtigen Seite ?
Noch eine Frage zu FindWindow:
Der Klassenname eines Dialoges (Dialog basierende App) ist laut Spy++ #..., wobei ... für eine 5 stellige Zahl steht. Ist der Klassenname immer auf ALLEN Windowssystemen (98 - XP über 2k) gleich oder wie lautet der sonst ?
-
Nimm die Mutexmethode ...

-
Hi
Michael__W. schrieb:
Die Klasse CWinApp besitzt die Membervariable CWinApp::m_hPrevInstance
Das funktioniert soviel ich weiß nur bei Win 3.1 / 3.11
Michael__W. schrieb:
Ich finde die FindWindow Methode Methode um einiges besser. Nicht zuletzt deshalb, da hier kein unnötiges Objekt erzeugt wird.
Da musst du dir echt keine Gedanken darüber machen. Dieses Objekt ist ziemlich klein (so ne Art systemweite Variable).
Michael__W. schrieb:
Kann man mit der FindWindow Methode aber mal "Pech haben" und ist somit mit der CreateMutex-Methode IMMER auf der richtigen Seite ?
Du kannst [als Hacker???] die FindWindow Methode ziemlich einfach umgehen, indem du mit SetWindowText den Titel des Fensters änderst. Das kann gerade für Client/Server Programme fatale Auswirkungen haben. Nimm unbedingt Mutexes
Grüße Rapha