| |
|
|
Timotheus | Hallo,
Ich habe folgendes Problem. Es gibt ein Fremdfenster, dises ruft ein zweites Programm auf, und übergibt dass Hauptfenster Handle. Mit dem zweiten Programm möchter ich jetzt die Tastaturabfrage machen. Aber dass Fenster wurde ja nicht von dem zweiten Programm erzeugt. Dabei ist auch wichtig dass es wirklich ein Programm ist, und kein Thread.
Kurz: Wie zwänge ich dass Handle dieses Fenster in die System-Variable %HWnd, damit es Profan anerkennt, und ich mit %ScanKey die Abfrage machen kann?
Timo |
|
|
| |
|
|
|
| Ich verstehe den Sinn nicht - daher fällt mir auch nichts passendes ein. Vielleicht erleuterst Du das Ganze noch etwas genauer. Ich verstehe nur Bahnhof.
Handelt es sich bei dem durch das erste Programm gestarteten zweiten Programm um eine KonsolenApp?
Salve, iF. |
|
|
| |
|
|
|
Timotheus | Also, im ersten Programm wird das Programm eingegeben, dass zu einer bestimmten Zeit gestartet wird, ich habe also keine direkte Kontrolle über das Erste. Das Zweite wird gestartet, und soll jetzt die auf diesem Fenster speziell gedrückte Tasten ermitteln. Ganz einfach!
Timo |
|
|
| |
|
|
|
| Probiere Dich am Themenfinder. [...]
Salve. |
|
|
| |
|
|
|
| Hallo Timo...
Ich hätte da zumindestens eine Idee - keine Ahnung, ob das klappt. Wenn ich aus meiner Nachtschicht komme, teste ich das mal aus. |
|
|
| |
|
|
|
Timotheus | @iF: Naja, wenn es nur eine Taste wäre, die ich abfragen wollte, aber ich würde gerne den Rückgabewert der gedrückten Taste erhalten, und nicht ob eine Taste im Moment gedrückt ist.
Timo |
|
|
| |
|
|
|
| Hallo Timo...
Erst mal ein paar Vorüberlegungen, vielleicht kommst du dann schon selbst zurecht:
Mit der API AttachThreadInput ist es möglich, Eingaben eines fremden Threads auf den eigenen Thread umzuleiten. Wie man damit den Focus eines Fremdfensters erhält, habe ich ja mal gezeigt.
Mit der API GetMessage müßte es dann eigentlich möglich sein, zumindestens an die Message WM_KEYDOWN zu kommen, die den Scancode der gedrückten Taste übermittelt. Frank Abbing hat auf seiner Homepage eine Message.DLL als Freeware - vielleicht klappt das nach der Umleitung auch damit.
Mit der API GetAsyncKeyState und einzelnen IF-Abfragen habe ich das auch schon mal gemacht - mit Profan ist das aber viel zu langsam => evtl. über Profan2Cpp?
Desweiteren funktioniert das über Hooks und DLLs (beste Lösung) => dafür ist Frank Abbing der Experte. Er hat mal einen sehr guten Keylogger gebaut... |
|
|
| |
|
|
|
Timotheus | GetAsyncKeyState geht!
Das hätte ich nicht gedacht, weil in der API-Lybrary, sowie in der Win32.hlp steht drin, dass der Rüchgabewert nur seit dem letzten Aufruf abgefragt wird. Also wenn F gedückt wird, und A abgefragt wird, müsste dass F doch eigentlich aus dem Speicher verschwinden, oder nicht?
Timo |
|
|
| |
|
|
|
| Hallo Timo...
GetAsyncKeyState ist eine meiner Lieblingsfunktionen, ist in fast jedem Programm von mir drin.
Zu beachten: Wird bei Abfrage zurückgesetzt. D.h., willst du diese Funktion benutzen, mußt du, bevor du sie wirklich verwendest, die Funktion erst einmal aufrufen um den evtl. enthaltenen Wert auf 0 zurückzusetzen - das ist in der WIN32.HLP gemeint. Außerdem klauen sich zwei Programme die diese Funktion benutzen evtl. gegenseitig die Tastendrücke. |
|
|
| |
|
|
|
| Guten Tag.
Die GetKeyState-API reicht föllig und ist viel besser geeignet. |
|
|
| |
|
|
|
| Hallo Werner...
Das will ich dir gerne glauben - schreib doch mal einen Code mit GetKeyState: Ich möchte, daß eine Messagebox erscheint, wenn in einem anderen Programm die Taste F12 gedrückt wird - und das auf allen 32Bit Windows Betribssystemen... Das Problem hatten wir vor ein paar Jahren schon mal. |
|
|
| |
|
|
|
Timotheus | Hallo,
Nochmal ich. Passt ungefähr zu dem Thema, deshalb schreibe ich nochmal hier rein. Ich möchte jetzt auch noch die Messages von einem anderen Fenster auslesen können. Beide Programme habe ich selbst gestartet. Mit AttachThreadInput scheint es in Bezug auf Messages nicht ganz hinzuhauen. Gibt es da eine andere Möglichkeit?
Timo |
|
|
| |
|
|