Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 249410 (10846)

| Suchen
| Zurück zur Übersicht

Autor | Thema: eine Windows API - Frage
Matthias Nowatka
| Datum:09.10.01 01:16 (MatthiasNowatka@web.de) |
Hey Ihr! Kann mir jemand mit dem Befehl "SetWindowsHookEx" aus der Windows-API weiterhelfen? Ich habe zwar die Dokumentation unter http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/hooks_7vaw.asp gelesen, weiß aber nicht, wie ich das unter Profan anwenden soll. Ziel ist es, die Tastatureingabe VOR allen anderen Programmen auszulesen, ggf. auszuwerten und zu reagieren. (ähnlich dem Problem der "Hotkeys" -> anderer Thread). Mein Profan-Programm soll also still und leise im Hintergrund die Tastaturanschläge analysieren und bei einem bestimmten Reiz reagieren. Dieser Reiz soll zB. sein, dass der Anwender in einem beliebigen Programm "Sesam öffne Dich" eintippt - und mein Programm erscheint. Klingt jetzt dumm, ist ja nur ein Beispiel... Ich wäre echt dankbar, wenn mir jemand weiterhelfen könnte! Matthias.
Sebastian König
| Datum:10.10.01 18:03 (webmaster@sekoenig.de) |
Hallo, Es ist mit reinem Profan leider nicht möglich, einen systemweiten (Keyboard-)Hook zu installieren. Die Funktion SetWindowsHookEx() erwartet als 2. Parameter einen Zeiger auf eine Callback-Funktion, die bei jedem Tatstatur-Ereignis vom System aufgerufen wird. Diese Funktion kann aus zwei Gründen nicht mit Profan² erstellt werden: 1. Profan² erzeugt keinen nativen Code, sondern nur einen "P-Code", der von der Runtime interpretiert wird. 2. Die Funktion muss für einen systemweiten Hook in einer DLL enthalten sein. (Zitat aus dem MSDN: "When you install a systemwide hook or a thread-specific hook for a thread in another process, you must use the instance handle of the DLL where the filter function resides.") Das erste Problem könnte man zwar lösen, indem man den Code der Funktion direkt als Maschinencode in eine Bereichsvariable schreibt (mehr dazu siehe hier), aber das löst leider das zweite Problem noch nicht... MfG Sebastian
Matthias Nowatka
| Datum: 10.10.01 20:07 (MatthiasNowatka@web.de) |
Trotzdem vielen Dank für die Mühe! Gruß, Matthias

| Zurück zur Übersicht