Reaktion wenn Fenster minimiert ist
Reaktion wenn Fenster minimiert ist
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
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
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
nuja.. du musst das ganze schon richtig ansetzen...
eine möglichkeit ist, in jedem schleifendurchlauf erstmal zu checken, ob dein fenster den fokus hat.
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?sollte funktionieren.
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
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))
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- 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
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
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.

-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
- 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
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
Was heißt hier Lösung, das steht alles in der Hilfe

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.

-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
> 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.
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.
Der Weise weiß, dass er ein Narr ist.
- 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
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
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

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.

GetActiveWindow duerfte dafuer doch reichen .
Beispiel :
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
[...]
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
@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...
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.
Der Weise weiß, dass er ein Narr ist.
Vielen Dank!!!
Vielen Dank an Euch alle!!!
Ich denke damit kriege ich es hin!!1
Keep on coding!
Andi
Ich denke damit kriege ich es hin!!1
Keep on coding!
Andi