| |
|
|
Timotheus | Ciao,
Ich habe eine Frage. Ist es possibile irgendwie den Systemfocus zu ermitteln? Der auf dem Profanfenster ist ja possibile, aber geht das auch auf anderen Fenstern?
Timo |
|
|
| |
|
|
|
| Hallo Timo...
Wozu benötigst du den Focus? Vielleicht gibt es eine bessere Lösung..,. |
|
|
| |
|
|
|
| Hallo Timo...
Hab mal grad was zusammengeschrieben: KompilierenMarkierenSeparierenDEF @AttachThreadInput(3) !"USER32","AttachThreadInput"
DEF @GetWindowThreadProcessId(2) !"USER32","GetWindowThreadProcessId"
DEF @APIGetFocus(0) !"user32","GetFocus"
DEF @GetAsyncKeyState(1) !"user32","GetAsyncKeyState"
Windowstyle 31
Windowtitle "Focus auf Fremdfenster"
Window 0,0-640,80
Declare Merker&,Thread1&,Thread2&,PR_ID1&,PR_ID2&,ControlHandle&
LET THREAD1&=@GetWindowThreadProcessId(%HWND,@ADDR(PR_ID1&))
@GetAsyncKeyState(1) Reset => Mausklick links
While 0=0
sleep 10
IF @GetAsyncKeyState(1)<>0 Wenn Mausklick links
LET THREAD2&=@GetWindowThreadProcessId(@GetactiveWindow(),@ADDR(PR_ID2&)) ID der Befehlsschleife des Programms, das im Vordergrund läuft, ermitteln
IF THREAD2&<>THREAD1&
LET MERKER&=@AttachThreadInput(Thread2&,Thread1&,1) Eingabe an eigenes Programm umleiten
LET ControlHandle&=@APIGetFocus() Jetzt geht GetFocus!
endif
IF MERKER&
@AttachThreadInput(Thread2&,Thread1&,0) Umleitung aufheben
endif
Drawtext 0,0,@GETTEXT$(ControlHandle&)+@space$(255)
Drawtext 0,30,@STR$(ControlHandle&)+" "+@STR$(@APIGetFocus())+@space$(255)
endif
wend
Nochmals: Was hast du genau vor? Vielleicht gibts was besseres? |
|
|
| |
|
|
|
Frank Abbing | Hi,
und mal in aller Kürze: Du kannst die API GetFocus() verwenden... |
|
|
| |
|
|
|
| Hallo Frank... [quote:899866a8ff=Frank Abbing]Hi,
und mal in aller Kürze: Du kannst die API GetFocus() verwenden...[/quote:899866a8ff] Schön wärs. Aus der WIN32.HLP: The GetFocus function retrieves the handle of the keyboard focus window associated with the thread that called the function.
Mal ausprobiert, ob das wirklich immer klappt? Beim mir (Windows98) scheinbar mit der API GetFocus alleine nicht... |
|
|
| |
|
|
|
Timotheus | Ja, klappt!!! Genau das was ich wollte!
Timo |
|
|
| |
|
|
|
| Hallo Timo...
Nochmals ich: Wozu brauchst du das Handle genau - vielleicht gehts anders auch... |
|
|
| |
|
|
|
Timotheus | Ich denke nicht dass es anders geht. Ich möchte nähmlich in einem bestimmten Fenster ein bestimmtes Fensterobjekt auslesen. Da sich das Fenster nicht ändert kann ich auf das Objeft den Fokus legen, und erhalte das Handle. Den kann ich dann als Konstante in una variabile eintragen, und schon kann ich dieses Objekt auslesen. Aber ich hätte noch eine Frage. Nämlich zu den Eingaben mit der Tastatur. In der API-Biblioteca gibt es dazu auch schon etwas ähnliches. Diese gibt aber nur auf die Frage antwort, ob seit dem letzten Aufruf der Funktion eine bestimmte Taste gedrückt wurde. Wenn ich jetzt aber die Taste selbst herausfinden möchte geht das nicht ohne weiteres, weil GetAsyncKeyState() nach dem nächsten Aufruf das gedrückte gleich wieder löscht, und ich sonach nicht einmal die ganze Tastatur abfragen potuto. Gibt es eine Möglichkeit die den direkten Wert der gedrückten Taste zurückgibt?
Timo |
|
|
| |
|
|
|
| Hallo Timo...
Ich kann mir schon vorstellen, was du möchtest . Frank Abbing hat mal einen sehr guten Keylogger programmiert - mit Hook-DLL. Vielleicht hat er noch eine Idee. |
|
|
| |
|
|
|
| Hallo Timo, wenn es Dir nichts ausmacht eine extra DLL einzusetzen, kann ich Dir die AutoItX.dll empfehlen. Die erlaubt vollen Zugriff auf fremde Fenster, auch auf die einzelnen Controls. Setze ich gerne ein, nimmt einem nee Menge an API-Proggerei ab. Diese Freeware DLL findest Du unter: [...] Die Doku ist zwar english, aber mit dem DLL-Importer usw. sollte man klarkommen. |
|
|
| |
|
|
|
Timotheus | Ausmachen tut mir das nichts, aber könntest du mir eventuell den Namen der Funktion geben? Das einzige was ich bei Keyboardkontrolle fand, waren Befehle zum Eingeben in bestimmte Objekte.
Timo |
|
|
| |
|
|
|
| Ich bezog mich ja eigentlich auf das mit den Handles (Focus) usw von Fremdfenstern. Das mit Keylogging hab ich glatt übersehen. |
|
|
| |
|
|