Fenster CallBack
-
Hi,
kennt jemand eine möglichkeit mein Programm darüber zu informieren wenn ein neues Fenster aufgeht?Ich wollte keine Schleife nutzen und ständig alle Fenster abfragen...
Gibts da ne möglichkeit ne Callback Funktion zu schreiben oder so?
ThX
-
Hallo,
soetwas kann man mit einem Systemweiten Hook machen.
Siehe dazu Win32 Hooks in der MSDN.
Stichwörter:
SetWindowsHookEx and UnhookWindowsHookEx
HSHELL_WINDOWCREATED: Windows calls the WH_SHELL hook when a top-level window is created. The window already exists when this hook is called
Gruss
-
soweit ich weiß muss ein hook aber in einer DLL stehen (systemweit) oder?
Gibts nicht andere lösungen?danke aufjedenfall
-
anders gefragt, kann ich die DLL in meiner EXE mitliefern und aus den resourcen lokal ablegen und von dort aufrufen?
Es wäre für mich zu umständlich wenn der User erst noch andere Dateien installiern oder kopieren muss.
Ist leider vorgabe, aber ich muss da ja vom DAU ausgehen
Also Möglichkeit DLL aus resource? und dann hook mit der dll? machbar?
-
ok, also die hook dll hab ich soweit.
und ich bekomme auch mit wenn ein neues fenster aufgeht, ist ja auch sau geil.
bloß wie zum teufel krieg ich jetzt den handel auf das window? bzw. kann ich gucken wie das fenster heisst.da steig ich noch nicht ganz durch!!
merci
-
Hallo,
also wenn das mit der DLL schon klappt hast du es ja fast geschafft
Also wenn Du WH_SHELL abfängst und dann in die Callback reinkommst,
ist der nCode = HSHELL_WINDOWCREATED daraus ergibt sich das
WPARAM das Handle auf des erzeugte Fenster ist.
Der LPARAM ist dabei nutzlos.Mit dem Handle kann man ja dann so allerhand nettigkeiten anfangen...
-
jo, aber er ballert wenn ich mir ne MsgBox ausgeben lassen einige davon auf den screen, ich denk er reagiert da nur einmal
das wäre ja etwas krass wenn die operationen die dann ausgeführt werden sollen mehrmals durchgejagt werden!?
-
Möglicherweise reagiert dein Hook auf deine eigene MessageBox. Hast du für die MessageBox ein Owner-Fenster angegeben?
-
args nachtürlich
oh man wie kann ich so blöd sein
-
ja danke,das wars natürlich *schäm*
jetzt funzt es super, auch das mit dem Handel geht gut... jetzt kann ich endlich weiter machen..
-
mhh blöd.
ich kann zwar alles im dialog ändern etc.aber diesen blöden button bekomme ich nicht gedrückt! obwohl der handel passt und ich mitlerweile alle varianten durch gegangen bin (ans parent etc)
weiß jemand rat?
(habs auch schon mit keyboards events versucht (tab bis zum button und feuer)) nichts