Popup bei bestimmter Worteingabe

sunflower84

Erfahrenes Mitglied
Hallo
Habe ein großes Problem. Ich bin gerade im 1.Lehrjahr und soll ein Programm programmieren das bei einem bestimmtem Wort ein Popup auf geht. Dieses Wort kann überall eingegeben werden. Egal ob in Word, Excel...
Ich weiss das ich es mit Hooks machen muss.
Aber die ganzen Informationen mit den Hooks kann ich einfach nicht umsetzen.

Sunflower
 
Das ist glaube ich gar nicht so einfach.
Auf jeden Fall mußt Du in Deiner Applikation mit 'SetWindowsHookEx' einen Hook des Typs 'WH_KEYBOARD' anlegen, nachdem Du die DLL mit Deinen Hookprozeduren geladen hast. In dessen Hookprozedur testest Du dann die Tastendrücke und wenn das Wort getippt wurde, dann zeigst Du das Popupmenü an. Auf jeden Fall solltest Du am Ende der Keyboard-Hookprozedur 'CallNextHookEx' aufrufen, um die Tastendrücke auch weiterzugeben.
Deine Applikation muß natürlich die ganze Zeit weiterlaufen, z.B. in der Art einer Schleife: 'while(!FinishHooks()) sleep10;', wobei 'FinishHooks()' genauso wie die Hookprozeduren in Deiner DLL ist und eine DLL-interne Variable 'BOOL b_finished' abfragt.
Um das ganze auch wieder zu beenden könntest Du im Popupmenü einen Menüpunkt 'Ende' haben, der z.B. eine ID 'ID_MYPOPUP_END_APPL' hat. Du installierst einen 2. Hook, der vom Typ 'WH_MSGFILTER' ist und dessen Hookprozedur bei Empfang dieser ID 'b_finished' auf 'TRUE' setzt. Alle anderen ID's die von Deinem Popupmenü kommen werden auch dort empfangen und bearbeitet.
Nach Beendigung der while-Schleife mußt Du die Hooks dann wieder mit 'UnhookWindowsHookEx' deinstallieren.
Das ganze ist nicht getestet und da es schon eine Weile her ist, daß ich mit Hooks gearbeitet habe bin ich mir bei meiner Lösung auch nicht 100%ig sicher. Ich bin mir auch nicht sicher, ob Du die Hookprozeduren wirklich in eine DLL auslagern mußt, aber so in der Art müßte es gehen.
 
Vielen Dank für deinen Vorschlag.
Du hast nicht zufällig mal Zeit diese Vorgehensweise zu programmieren und mir dann den Quelltext zu geben.
Auch wenn er nicht so wie es sein soll funktioniert.
Vielleicht versteh ich das dann besser.
Denn ich bin gerade dabei mich in Visual C++ 6 zurecht zu finden. Da ich erst im 1.Lehrjahr bin weiss ich auch noch nicht für was die ganzen Dateien da sind die mir dieses Programm automatisch bei einem neuem Projekt erstellt. Ich weiss für was die Header ist und für was das Hauptprogramm .cpp da ist.
Bei einem neuem Projetk, muss ich ja MFC exe auswählen. Soll ich dann danach Dialog auswählen oder nicht? :(
 
Du hast nicht zufällig mal Zeit diese Vorgehensweise zu programmieren und mir dann den Quelltext zu geben.
Auch wenn er nicht so wie es sein soll funktioniert.
Tut mir leid, im Mom habe ich keine Zeit, ein paar Tage da reinzuhängen. Außerdem wäre da das Lernziel ja wohl nicht erreicht, oder? :)
Was für eine Art Applikation Du verwendest, hängt von der Aufgabenstellung ab. Kannst sie ja mal posten oder mir schicken, evtl. kann ich's mal probieren. Aber versprechen tu ich nix!
 
Danke für deine Hilfe.
Aber du hast recht. Ich soll das ja selbst lernen :p
Wie schreibe ich denn eine DLL?
Bitte wenn es geht genaue vorgehensweise erklären.
 
Zurück