aktive fenster ????
-
flenders schrieb:
EnumWindows?!
...ist immernoch die sicherste Methode, das schreibt selbst die MSDN: GetWindow
MSDN schrieb:
The EnumChildWindows function is more reliable than calling GetWindow in a loop. An application that calls GetWindow to perform this task risks being caught in an infinite loop or referencing a handle to a window that has been destroyed.
-
ahh jetzt gehts danke @ all
-
gibts da auch so eine funktion das es alle anwendungen herausfiltert????
-
Was meinst du mit "alle Anwendungen"?
-
also ich meins so wie im Task-Manager da gibt anwendungen und prozesse
und ich brauch jetzt eine funktion für die anwendungen :p
-
EnumWindows liefert doch schon alle Fenster aller Anwendungen, es gäbe da noch EnumProcesses, aber das liefert, wie unschwer am Namen zu erkennen, alle Prozesse...
Ich verstehe da das Problem nicht?!?
-
also ich krieg auch noch so komisch windows wie z.B
Xprt Message Window
DDE Server Window
DDE Server Window
und ich will jetzt nur solche wins wie z.B
Yahoo! Messenger
gibts da vielleicht ne funktion oder muss ich die herausfiltern
-
Viele Anwendungen haben eben "versteckte" Fenster oder aber mehr als nur ein Fenster...
Sei doch froh das Du sogar versteckte Fenster bekommst... ich hab lieber etwas mehr und such mir heraus, was ich brauche, anstatt zu wenig zu haben...
-
Also ich hab mal vor einiger Zeit mit Google gesucht und bin dabei auf folgenden Code gestoßen (hab ihn etwas verändert, kann also sein, dass sich ein Fehler eingeschlichen hat), der dir genau die Fenster liefert, die du auch in der Task-Leiste findest:
if(IsWindowVisible(hwnd) && (GetParent(hwnd) == NULL)) { BOOL bNoOwner = (GetWindow(hwnd, GW_OWNER) == NULL); LONG lExStyle = GetWindowLong(hwnd, GWL_EXSTYLE); if( ( ((lExStyle & WS_EX_TOOLWINDOW) == 0) && bNoOwner ) || ((lExStyle & WS_EX_APPWINDOW) && !bNoOwner) ) { int iBufferSize = GetWindowTextLength(hwnd) + 1; char *buffer = new char[iBufferSize]; GetWindowText(hwnd,buffer,iBufferSize); if(lstrcmp(buffer,"") != 0) { // wenn du hier ankommst ist es ein Fenster, das auch in der Task-Leiste angezeigt wird } } }
Wenn du nur daran interessiert bist, ob das Fenster einen Text hat kannst du den Abschnitt mit GetWindowTextLength, GetWindowText und lstrcmp noch etwas vereinfachen
Ist das das, wonach du gesucht hattest?!
-
genau das danke