![]() |
Tasten an Handle senden
Hallo Leute,
ich verwende diese Funktion, um einen Tastendruck an ein Window zu senden:
Delphi-Quellcode:
aufgerufen wird das dann mit z.b.
procedure sendvk(vk:integer);
var wnd: HWND; begin wnd := FindWindow('{DA7CD0DE-1602-45e6-89A1-C2CA151E008E}', nil); if wnd <> 0 then begin PostMessage(wnd, WM_KEYDOWN, vk, 0); end; end;
Delphi-Quellcode:
Funktioniert auch problemlos, das problem ist: Ich will nichtnur einfache Tastendrücke (wie in dem Fall 'V' simulieren, sondern auch ALT+V. Wie geht das?
sendvk(ord('V'));
Danke TO |
Re: Tasten an Handle senden
Moin The Omega,
dann musst Du, um bei Deinem Beispiel zu bleiben, erst einmal das Drücken von ALT, dann das Drücken von V, dann das Loslassen von V, und anschliessend das Loslassen von ALT senden. |
Re: Tasten an Handle senden
das hatte ich auch schon probiert, alledings auch nicht hinbekommen:
Delphi-Quellcode:
zu einen WM_KEYUP komm ich garnicht, die Anwendung reagiert sofort und zwar mit einen V und nicht einen SHIFT+V.
PostMessage(wnd, WM_KEYDOWN, VK_SHIFT, 0);
PostMessage(wnd, WM_KEYDOWN, ord('V'), 0); Hatte mich oben vertippt, ich will kein ALT+V sondern ein Shift+V. Das ganze dient zum fernsteuern eines Mediaplayers! Danke schonmal TO |
Re: Tasten an Handle senden
wie löst du das ganze aus? über einen Buttonclick? wenn ja versuchs mal per timer ansonsten ist ja die maustaste zu dem zeitpunkt gedrückt was das ganze beeiflussen kann
|
Re: Tasten an Handle senden
Moin The Omega,
Zitat:
Wenn Du die Message mit PostMessage verschickst läuft Dein Programm doch weiter. Das das andere Programm halt schon beim Drücken, von SHIFT-V reagiert, und nicht erst beim Lösen kann damit eigentlich nichts zu tun haben, und dürfte sich auch nicht beeinflussen lassen. |
Re: Tasten an Handle senden
also, ich löse das ganze per button aus, und das empfangende programm scheint nicht zu merken, dass shift auchnoch gedrückt ist und statt zum vorherigen song (SHIFT+V) zu springen, springt es zum nächsten (V). Un ob ich jetzt noch ein KEYUP mache oder nicht ändert garnichts an der Situation!
|
Re: Tasten an Handle senden
Moin The Omega,
merkwürdig. Dafür fällt mir jetzt so keine Lösung ein. :gruebel: |
Re: Tasten an Handle senden
mir erschien die sache auch nicht logisch so, weil: damit werden doch nacheinander die tastendrück simuliert. Und vermutlich sag sich das programm als erstes: "Aha, ein shift, aber damit fang ich wenig an" und dann kommt das V rein und das Programm macht das, was das V normalerweise tut! Ich denke das wird nicht gleichzeitig gemacht!
|
Re: Tasten an Handle senden
es liegt mit gaaaaaaaaanz hoher wahrscheinlichkeit an dem buttonclick. Du sendest mit PostMessage die Shifttaste, als nächstes wird der focus wieder an dein Programm gegeben (weil maus down) und somit ist die aktion abgeschlossen. Du könntest versuchen die Tasten verzögert per timer zu senden (wenn die maustaste auf deinem button nicht mehr down ist) oder das ganze mal mit SendMessage versuchen
|
Re: Tasten an Handle senden
gut, also ich hab ein bischen rumprobiert: postmessage oder sendmessage macht keine unterschied. Ob Button oder Timer macht auch keinen!
ich habe dann noch diesen Code hier konstruiert, der hilft aber auch nicht!
Delphi-Quellcode:
hat sonst noch jemand nen guten tip?
procedure prev();
var wnd: HWND; KeyBrdSt : TKeyboardState; begin; wnd := FindWindow('{DA7CD0DE-1602-45e6-89A1-C2CA151E008E}', nil); if wnd <> 0 then begin GetKeyboardState( KeyBrdSt ); KeyBrdSt[ VK_SHIFT ] := $80; SetKeyboardState( KeyBrdSt ); SendMessage(wnd, WM_KEYDOWN, ord('V'), 0); KeyBrdSt[ VK_SHIFT ] := $00; SetKeyboardState( KeyBrdSt ); end; end; Danke TO |
Re: Tasten an Handle senden
Moin The Omega,
schau Dir doch mal ![]() Vor dem Postmessage verbinden, und anschliessend wieder die Verbindung trennen. Nur so als Idee. |
Re: Tasten an Handle senden
habe auch das problem
komme mit den threadfunktionen aber nicht zurecht :( |
Re: Tasten an Handle senden
Zitat:
|
Re: Tasten an Handle senden
andere möglichkeit?
bessere möglichkeit? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz