Hallo Zusammen,
ich habe ein Problem mit dem Applikations-Focus unter Windows XP. Ich habe zwar schon die Suche bemüht, aber leider nicht wirklich was passendes gefunden.
Zum Problem:
Ich starte in meiner Anwendung ein externes Programm über QProcess. Diese externe Anwendung bekommt den Focus. Wenn die Anwendung beendet wird, bekomme ich das über das Signal QProcess::finished mit. Nun bekommt aber meine Applikation nicht mehr automatisch den Focus unter Windows, wenn noch eine weitere Applikation geöffnet ist.
Meine Frage:
Wie kann ich Windows dazu bringen meiner Applikation den Focus zu geben, wenn das externe Programm beendet wird.
[gelöst] Focus Problematik (externe Anwendung)
[gelöst] Focus Problematik (externe Anwendung)
Zuletzt geändert von 101 am 10. November 2010 11:57, insgesamt 1-mal geändert.
WINAPI verwenden?
Hallo,
ich muss noch einmal dieses Thema nach vorn holen. Da es unter Windows nicht möglich ist einer Applikation gezielt den Focus zu geben wollte ich hierfür die WINAPI Funktionen AllowSetForegroundWindow() und SetForegroundWindow() verwenden.
Mein Problem: Wie kann ich unter Qt diese Windows API Funktionen aufrufen. Ein #include "windows.h" reicht scheinbar hierfür nicht aus.
ich muss noch einmal dieses Thema nach vorn holen. Da es unter Windows nicht möglich ist einer Applikation gezielt den Focus zu geben wollte ich hierfür die WINAPI Funktionen AllowSetForegroundWindow() und SetForegroundWindow() verwenden.
Mein Problem: Wie kann ich unter Qt diese Windows API Funktionen aufrufen. Ein #include "windows.h" reicht scheinbar hierfür nicht aus.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Laut Doku muss man windows.h includieren. Aber wie immer 'Geht nicht' ist ne gute Fehlermeldung...
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Habe ich auch so gelesen.
Im Header:
Im CPP-Code:
Fehlermeldung von Qt:
main.cpp:118: error: 'ASFW_ANY' was not declared in this scope
main.cpp:118: error: 'AllowSetForegroundWindow' was not declared in this scope
Im Header:
Code: Alles auswählen
#include "windows.h"Code: Alles auswählen
AllowSetForegroundWindow(ASFW_ANY);main.cpp:118: error: 'ASFW_ANY' was not declared in this scope
main.cpp:118: error: 'AllowSetForegroundWindow' was not declared in this scope
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
So ich habe jetzt in der windef.h die Windowsversion von 0x0400 auf 0x0500 geändert. Jetzt sind die benötigten API Funktionen verfügbar!
Folgendes ist aber noch zu beachten. Es kommt noch auf die Thread ID vom aktiven Window an:
Siehe:
http://msdn.microsoft.com/de-de/library/bb979463.aspx
Das Problem konnte mit dieser Anleitung gelöst werden!
Folgendes ist aber noch zu beachten. Es kommt noch auf die Thread ID vom aktiven Window an:
Siehe:
http://msdn.microsoft.com/de-de/library/bb979463.aspx
Das Problem konnte mit dieser Anleitung gelöst werden!