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 ^^)
programm verbieten sich mermals offen zu haben
naja thx for help
das nun der code
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
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)
dabei bleibt das alte fenster immer da, das neue verschwindet
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Und wenn das Programm mal abstürzt, wird der "DAU" es nie wieder starten könnenAND51 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.

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
