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 :lol: , 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