Reaktion wenn Fenster minimiert ist

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
fastbit
Beiträge: 13
Registriert: 14.11.2006 17:09

Reaktion wenn Fenster minimiert ist

Beitrag von fastbit »

Hallo Leute,

ich habe ein Problem:

Ich hab n kleines chat programm geschrieben und nun soll mein Client auf eingehende Nachrichten ragieren, wenn das Fenster minimiert in der Taskleiste liegt.

Ich hab schon mit IsIconic_ aus der WIN API herumexperimentiert aber es geht nicht.

Hat mir vieleicht jemann n tip oder n codeschnipsel wie das geht?

Also wenn das Fenster minimiert ist oder den Fokus nicht hat, dann soll es wieder aufgehen oder einen Sound spielen, wenn eine Mess reinkommt.

Vielen Dank an Alle

Andi
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

nuja.. du musst das ganze schon richtig ansetzen...

eine möglichkeit ist, in jedem schleifendurchlauf erstmal zu checken, ob dein fenster den fokus hat.

Code: Alles auswählen

If GetFocus_()<>WindowID(MeinFensterNr) 
    Focus = 0 
  Else 
    Focus = 1 
  EndIf
und du wirst ja in deiner hauptschleife irgendwo darauf reagieren, dass ne nachricht reinkommt...
wenn also ne nachricht reinkommt, und dein Flag Focus ist 0,
dann spielste nen sound ab....

PS:
vielleicht hat das mit IsIconic_() nicht geklappt, weil du nicht
das Handle sondern die PB-Nummer des Fensters angegeben hast?

Code: Alles auswählen

IsIconic_(WindowID(MeinFensterNr))
sollte funktionieren.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
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

Beitrag von ts-soft »

Code: Alles auswählen

If OpenWindow(0, 100, 100, 640, 480, "", #PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_SystemMenu|#PB_Window_SizeGadget)
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow : Break
      Case #PB_Event_MoveWindow, #PB_Event_SizeWindow
        Iconic = GetWindowState(0)
        Select Iconic
          Case #PB_Window_Normal   : Debug "Normal"
          Case #PB_Window_Minimize : Debug "Minimiert"
          Case #PB_Window_Maximize : Debug "Maximiert"
        EndSelect
      Case #PB_Event_ActivateWindow
        Debug "wurde aktiviert"
    EndSelect
  ForEver
EndIf
Bin gerade unter Linux, bzw. gibt ja keinen Grund API zu nehmen
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.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@ts
hast du auch ne non-api lösung für gotfocus/lostfocus?

viele chat-maschinen piepen auch, wenn ihr fenster normal ist,
aber im hintergrund, also, nicht den fokus hat...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
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

Beitrag von ts-soft »

Kaeru Gaman hat geschrieben:@ts
hast du auch ne non-api lösung für gotfocus/lostfocus?

Code: Alles auswählen

Case #PB_Event_ActivateWindow 
lostfocus geht zur Zeit wohl nicht.
Was heißt hier Lösung, das steht alles in der Hilfe :lol:
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.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> lostfocus geht zur Zeit wohl nicht.

ja eben das ist das problem..

ich bin damit nur deshalb ohne API klargekommen, weil ich nen windowedscreen hatte,
da reagiert IsScreenActive() auf das lostfocus....

aber ohne screen hat man probleme mit nem focuscheck...

eigentlich widersinnig, dass GotFocus einen Eventbezeichner hat,
LostFocus jedoch nicht.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
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

Beitrag von ts-soft »

Naja, #PB_Event_ActivateWindow ist ein normalles Windows-Ereignis,
welches man fast immer braucht. Z.B. ein Editor, dann kann man dort prüfen
ob die Zwischenablage etwas enthält.
Bei lostfocus wüßte ich nicht, wozu das nütze sein soll, abgesehen von Chat,
sowas progg ich nicht :mrgreen:
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.
Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

GetActiveWindow duerfte dafuer doch reichen .

Beispiel :

Code: Alles auswählen

    [...]
    
    net_event = NetworkClientEvent()
    
    If net_event = #PB_NetworkEvent_Data
      
      ReceiveNetworkData([...])
      
      If GetActiveWindow() <> #fenster
        MessageRequester("Willkommen!","Sie haben Post")
      EndIf 
      
    EndIf
    
    [...]
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@edel

hm... hatte ich das jetzt übersehen, oder hatte es nicht richtig funktioniert?
muss ich mal austesten, thnx


> Bei lostfocus wüßte ich nicht, wozu das nütze sein soll, abgesehen von Chat,
> sowas progg ich nicht

z.b. wenn du in deinem fenster ne kontinuierliche datenausgabe hast,
sowas wie z.b. Martin66xxx mit seiner meßvorrichtung...
dieses aufwendige aktualisieren muss man eigentlich nur dann vornehmen,
wenn das fenster auch den fokus hat.

klar, bei GotFocus schalte ich es ein... aber ich muss es ja zuvor abschalten können... ;)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
fastbit
Beiträge: 13
Registriert: 14.11.2006 17:09

Vielen Dank!!!

Beitrag von fastbit »

Vielen Dank an Euch alle!!!

Ich denke damit kriege ich es hin!!1

Keep on coding!

Andi
Antworten