Seite 2 von 2
Verfasst: 15.12.2005 21:01
von sen-me
bis auf das setforegroundwindow_() vll ja ^^
allerdings hätt ich erst die api funktionen wieder lernen müssen :/ (also die neuen)
edit: nur kann man auch irgendwie machen das es wenn es minimirt ist auch wieder hergestellt wird? (wiederherstellen)
(ich weiß, doofe frage, natürlich gehts, aber wie ^^)
Verfasst: 15.12.2005 21:04
von MVXA
Such mal in der MSDN nach IsIconic und ShowWindow. Keine Lust jetzt
noch n Beispiel zusammen zu kratzen. Will in die Haia
Verfasst: 15.12.2005 21:07
von sen-me
so früh O.o
Verfasst: 15.12.2005 21:16
von MVXA
ganze Woche nur sehr wenig schlaf gehabt. Bin nun echt weg.
Verfasst: 15.12.2005 21:18
von sen-me
naja thx for help
das nun der code
Code: Alles auswählen
ERROR_ALREADY_EXISTS = 183
Global WM_ACTIVATEOLDINST
WM_ACTIVATEOLDINST = RegisterWindowMessage_("WM_ACTIVATEOLDINST_PB")
MutexName$ = "mylittletestapp"
Procedure MyWindowCallback(WindowID, Message, wParam, lParam)
Result = #PB_ProcessPureBasicEvents
If message = WM_ACTIVATEOLDINST
If IsIconic_(WindowID(0))<>0 ;prüft ob Fenster minimiert ist nein=0 ja<>0
ShowWindow_(WindowID(0),#SW_RESTORE) ;Fenster wird wieder hergestellt, und zugleich aktiviert
Else ;Fenster ist nicht minimiert
SetForegroundWindow_(WindowID(0)) ;Fenster wird nur wieder aktiviert
EndIf
EndIf
ProcedureReturn Result
EndProcedure
hMutex = CreateMutex_(0, 0, @MutexName$)
If GetLastError_() = ERROR_ALREADY_EXISTS
SendMessage_(#HWND_BROADCAST, WM_ACTIVATEOLDINST, 0, 0)
Delay(100)
End
EndIf
If OpenWindow(0,100,150,450,200,#PB_Window_SystemMenu|#PB_Window_MinimizeGadget,"MyLittleTestApp " + Str(Random(500)))
SetWindowCallback(@MyWindowCallback())
If IsIconic_(WindowID(0))<>0 : MessageRequester("","",0) : EndIf
Repeat
ev=WaitWindowEvent()
Until ev=#PB_EventCloseWindow
EndIf
CloseHandle_(hMutex)
wenn minimiert, dann ruft ers auf und selektierts sogleich, wenn nur nicht selektiert das fenster, dann ist das jetzt ^^
dabei bleibt das alte fenster immer da, das neue verschwindet
Verfasst: 16.12.2005 00:44
von ts-soft
AND51 hat geschrieben:Oder erstell stumpf in C:\ ene Textdatei wo du einfach 1 reinschreibst.
geht dein programm aus, löscht es die Datei oder schreibt 0 rein. Läuft dein Programm und eine zweite Instanz wird gestartet, prüft die einfach ob die Datei existiert oder eine 1 drinsteht und sagt "nene, Du, ich laufe bereits!"
Am besten Die Datei nicht in C:\ sondern im selben Ordner wie das Program speichern.
Und wenn das Programm mal abstürzt, wird der "DAU" es nie wieder starten können

, oder glaubste der kommt auf die Idee, diese Datei zu löschen?
Verfasst: 16.12.2005 14:35
von sen-me
vor allem könnte man dan trixen
man löscht die datei und kanns nochmal aufrufen...
darum ist meine gepostete methode sicherer