aktive fenster ????
-
wie kann ich alle namen der aktiven fenster herausfinden und einzelne fenster beenden????????
-
Du kannst in einer Schleife mit GetWindow (hWnd, GW_HWNDFIRST) bzw ... GW_HWNDNEXT alle Fenster der laufenden Programme ermitteln. Eine Applikation beenden kann man indem man eine WM_CLOSE Message schickt.
-
case WM_TIMER: GetWindow (hwnd, GW_HWNDNEXT); GetWindowText(hwnd,text,100); TextOut(hdc,100,100,text,strlen(text)); break;
is hiern fehler drin oder wieso geht des nicht
-
static HWND hFoundWnd, hOldWnd; ... case WM_TIMER: hFoundWnd = GetWindow (hOldWnd, GW_HWNDNEXT); if(hFoundWnd) { GetWindowText(hFoundWnd,text,100); TextOut(hdc,100,100,text,strlen(text)); hOldWnd = hFoundWnd; } return 0;
-
bei mir geht des irgentwie nich da passiert einfach nix
nur dass hFoundWnd immer NULL ist also unsuccessful
-
EnumWindows?!
-
hast Du hOldWnd inititialisiert? Am besten mit dem eigenen Fensterhandle.
-
ja hab ich gemacht
-
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