Wird das Fenster vollständig angezeigt oder nicht?
-
Wie bekomme ich heraus ob mein Fenster teilweise durch ein fremdes Fenster verdeckt ist oder nicht?
-
für was brauchst du dann das?
-
Das verrate ich dir wenn alles klappt
Hast du keine Idee?
-
natürlich :xmas1:
wenn dein fenster nicht toplevel ist, dann alle fenster iterieren, rect auslesen und gegen dein fensterrect vergleichen. allerdings wird dieses irgendwann etwas albern, somit habe ich dich gefragt fü was du das brauchst dann könnten wir evtl. etwas besseres vorschlagen :xmas2:
-
Ich lese aus einer anderen Anwendung einiges Pixel heraus, doch das kannich nur machen wenn das Fenster vollständig zu sehen ist
(GetPixel(..))Hm, wie komme ich am besten an alle Fenster? - zuerst alle Anwendungen ausfindig machen und dann die Handles sammeln?? - Wie mach ich alle Anwendungen ausfindig ;-(?
-
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/enumwindows.asp
und die forensuche sollten dir helfen.für die grösse und position
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/getwindowrect.aspalternative wäre findwindow aber nicht so angebracht.
wie oft liesst du den die pixel aus? einmal, alle minute, x sec?
nach wie vor bin ich der meinung das dieses nicht die beste lösung ist
-
Ich lese die Pixel nur selten aus, von daher kein Problem.
Wie finde ich heraus ob sich ein Fenster über oder unter einem anderen Fenster befindet?
-
Habs hiermit gelöst:
bool windowHooded() { RECT posiSpiel; GetWindowRect(handle,&posiSpiel); POINT pStart, pEnd,pLauf; pStart.x=posiSpiel.left; pStart.y=posiSpiel.top; pEnd.x=posiSpiel.right; pEnd.y=posiSpiel.bottom; for(int z=pStart.y; z<=pEnd.y-24; ++z) { pLauf.y=z; for(int s=pStart.x; s<pEnd.x; ++s) { pLauf.x=s; if(WindowFromPoint(pLauf) != handle ) return true; } } return false; }handle ist das HANDLE von dem Fenster das überprüft wird ob es in irgendeiner Art verdeckt wird.
PS: Wäre etwas für die FAQ?
-
great work, aber ich hätte die recktecke miteinander verglichen könnte vermutlich schneller gehen.
therealscri schrieb:
PS: Wäre etwas für die FAQ?
wenn du eine schöne funktion daraus machst ohne globale variable :xmas1:
und die höhe der titelleiste nicht mit einer konstanten berücksichtigst evtl. wäre getclientrect besser geeignet
-
GetClipBox
-
Die Rechtecke vergleichen Idee hilft nicht, denn:
Wenn ein kleineres Fenster 'a' vor einem größeren Fenster 'b' ist (a ist zb. der windows taschenrechner und b ein geöffnetes word document) und man vergleicht deren rechtecke, und prüft ob sie sich schneiden -> und das tun sie -> obwohl a vollkommen sichtbar ist.Du kannst nicht auf einem 2d Bildschirm feststellen ob sich ein Fenster hinter einem anderen Fenster befindet oder ob es sich davor befindet, zumindest nicht mit vergleichen der Rechteckkoordinaten. :xmas2:
-
gutes argument. ich dachte es gibt so etwas wie getwindowpos
-
Habe noch eine wichtige Frage: Ich habe die Statusleiste jetzt nicht berücksichtigt weil sich der Text laufend ändert (z.b. wenn die aktuelle Uhrzeit immer in der Statusleiste sich aktualisiert). FindWindow braucht aber den Klassennamen und die konstante Text/Beschriftung.
Wie bekomme ich trotz dynamischen Tet in der Statusleiste das Handle der Statusleiste?
-
therealscri schrieb:
Habe noch eine wichtige Frage: Ich habe die Statusleiste jetzt nicht berücksichtigt weil sich der Text laufend ändert (z.b. wenn die aktuelle Uhrzeit immer in der Statusleiste sich aktualisiert).
vermute mal du meinst die taskleiste
therealscri schrieb:
FindWindow braucht aber den Klassennamen und die konstante Text/Beschriftung.
nicht beides entweder oder
therealscri schrieb:
Wie bekomme ich trotz dynamischen Tet in der Statusleiste das Handle der Statusleiste?
die antwort hat du eigentlich dir schon selber gegeben. :xmas1:
findwindow(..);
-
Nein, ich meine wenn eine Programm in seine Statusleiste die aktuelle Uhrzeit anzeigt, dann kann ich doch bei findwindow kein konstanten string angeben. :xmas2:
-
die fensterklasse ist doch konstant und lass den fenstername einfach weg
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/findwindow.asp
-
Und wenn mehrere Fenster diesen Klassennamen haben?