ICQ störrt Fullscreen-Anwendung
-
Habe folgendes Problem:
Habe eine Win API Anwenung geschrieben und diese Mit Hilfe von DirectX zu einer Fullscreen-Anwendung "aufgeblasen". Jetzt erscheint immer, wenn bei ICQ ein neuer nutzer online kommt, unten rechts dieser kleine Weiße bildschirm und benachrichtigt mich. Dieses kleine weiße Fenster schimmert ab diesem Moment dann die ganze Zeit etwas unten rechts.
Kann ich das irgendwie verhindern? Kann ich dem Fenster bestimmte Eigenschaften zuordnen, so dass es immer im Vordergrund bleibt und das blöde ICQ Fenster nicht erscheint, wenn ich im Vollbild-Modus bin?Hoffe, jemand weiß da weiter...
MfG
Hundefutter
-
Glaube da gibt nit so viele Möglichkeiten, da das Fenster ja auch nur zu bestimmten Zeiten angezeigt wird (eben wenn ein User online geht). Du müsstest also via High-Level-Timer prüfen, ob das Fenster aktiv ist...das brauch ne Menge an Rechenzeit...dann kannste die Styles des Fensters ändern, oder es gleich ins Nirvana schießen (->DestroyWindow
).
-
Das Problem hatte ich auch eine Weile..
mit WS_EXTOPMOST funktioniert es aber einwandfrei und die kleinen fenster werden nicht mehr angezeigtMfG Kuldren
-
Kuldren schrieb:
Das Problem hatte ich auch eine Weile..
mit WS_EXTOPMOST funktioniert es aber einwandfrei und die kleinen fenster werden nicht mehr angezeigt.Hm jo dann:
SetWindowPos(hWndICQ, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_SHOWWINDOW | SWP_NOSIZE);bzw.:
LONG_PTR lpStyles= GetWindowLongPtr(hWndICQ, GWL_EXSTYLE); if(lpStyles & WS_EX_TOPMOST) lpStyles &= ~WS_EX_TOPMOST; SetWindowLongPtr(hWndICQ, GWL_EXSTYLE, lpStyles);
-
Habe es zuerst damit versucht, meinem Fenster WS_EX_TOPMOST als erweiterten Stil zu übergeben, nur kann das Fenster dann trotzdem durch andere Fenster, die auch diesen erweiterten Stil haben, verdeckt werden, das ICQ fenster kommt also trotzdem noch.
CodeFinder schrieb:
Hm jo dann:
SetWindowPos(hWndICQ, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_SHOWWINDOW | SWP_NOSIZE);Wenn ich das richtig verstehe, dann willst du dem icq fenster andere Eigenschaften zuordnen. Aber das muss ja eigentlich dann so sein, dass immer wieder abgefragt wird, ob das icq fenster da ist und wenn ja, dann die eigenschaften geändert werden, oder? Und das würde doch wieder total viel rechenleistung ziehen....
Gibt es da nicht noch eine andere Möglichkeit?Und habe noch ein Problem: Wie soll ich an das Fensterhandle des ICQ Fensters kommen? Habe es schon über Spy++ versucht, nur wird da das Handle nicht ausgegeben...
-
Hundefutter schrieb:
Habe es zuerst damit versucht, meinem Fenster WS_EX_TOPMOST als erweiterten Stil zu übergeben, nur kann das Fenster dann trotzdem durch andere Fenster, die auch diesen erweiterten Stil haben, verdeckt werden, das ICQ fenster kommt also trotzdem noch.
Tja, das funktioniert deshalb nicht, weil diese ICQ-Meldung dann den Stil WS_EX_TOPMOST hat und dein Fenster überdeckt.
Hundefutter schrieb:
Wenn ich das richtig verstehe, dann willst du dem icq fenster andere Eigenschaften zuordnen. Aber das muss ja eigentlich dann so sein, dass immer wieder abgefragt wird, ob das icq fenster da ist und wenn ja, dann die eigenschaften geändert werden, oder? Und das würde doch wieder total viel rechenleistung ziehen...
Ja, schlägt CodeFinder vor. Könnte aber auch mit einem Hook für CreateWindow bzw. CreateWindowEx gemacht werden. Ob dieser Aufwand jedoch gerechtfertigt ist, bezweifle ich. Bedenke auch dass jede andere Anwendung stören könnte, nicht nur ICQ...
Hundefutter schrieb:
Gibt es da nicht noch eine andere Möglichkeit?
Du könntest beim Start deiner Anwendung prüfen, ob irgendwas läuft, was dich stört, und dies dann (nach Userbesätigung
) schließen.Hundefutter schrieb:
Und habe noch ein Problem: Wie soll ich an das Fensterhandle des ICQ Fensters kommen? Habe es schon über Spy++ versucht, nur wird da das Handle nicht ausgegeben...
Mit
FindWindow( )Greetz, Swordfish
-
Naja, jetzt habe ich zwar Möglichkeiten, aber ob es sich lohnt, jetzt so eine "Sperre" für ICQ einzubauen?
Weil wenn das relativ viel Rechenzeit benötigt, ist das nicht gerade von nutzen, weil der preis für die ICQ-Sperre dann viel zu hoch wäre.
Naja, werde es dann wohl so lassen müssen...
Das ICQ fenster kommt ja sogar bei komerziellen Spielen, also die haben es auch nicht geschafft, es zu blocken
Trotzdem danke für die Hilfen
MfG
Hundefutter
-
Hehe, eigentlich ist icq ja ein wenig doof

Es erkennt automatisch wenn ne DirectX-Anwendung fullscreen läuft und geht auf N/A (sofern nicht gepatched ;D), aber das popup-teil lässt es trotzdem nerven
Die sinnvollste Möglichkeit: In ner Textdatei oder während der Installation der anwendung darauf hinweisen dass man diese notify-kacke in icq auch einfach in den einstellungen ausschalten kann...