![]() |
AW: Hotkey per Button
Danke schonmal für die Antworten,
Ich glaub ich hab da auch ein Verständnisproblem, wenn ich über die Windowseigen Bildschirmtastatur zwei mal auf Rollen drücke, schaltet der USB-Switch um. Von meinem Verständnis her ist es ja auch nur eine Software (Bildschirmtastatur), also warum kann ich es auch nicht so machen? LG |
AW: Hotkey per Button
Delphi-Quellcode:
Versuche mal
procedure TForm1.Button1Click(Sender: TObject);
begin Keybd_Event(VK_Scroll,0,0,0); end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin Keybd_Event(VK_Scroll,0,0,0); // <- taste drücken Keybd_Event(VK_Scroll,0,KEYEVENTF_KEYUP,0); // <- taste loslassen Keybd_Event(VK_Scroll,0,0,0); // <- taste drücken Keybd_Event(VK_Scroll,0,KEYEVENTF_KEYUP,0); // <- taste loslassen end; |
AW: Hotkey per Button
Also, wenn ich das so ausführe,
Code:
Passiert bei Button nix,
procedure TForm1.Button1Click(Sender: TObject);
begin Keybd_Event(VK_Scroll,0,0,0); // <- taste drücken Keybd_Event(VK_Scroll,0,KEYEVENTF_KEYUP,0); // <- taste loslassen Keybd_Event(VK_Scroll,0,0,0); // <- taste drücken Keybd_Event(VK_Scroll,0,KEYEVENTF_KEYUP,0); // <- taste loslassen end; Aber wenn ich es nochmal in das KeyDown Event reinschreibe und zwar so
Code:
funktioniert es über den Button aber es hängt in einer Schleife. Somit sollt es ja irgendwie funktionieren.procedure TForm1.Button1Click(Sender: TObject); begin Keybd_Event(VK_Scroll,0,0,0); // <- taste drücken Keybd_Event(VK_Scroll,0,KEYEVENTF_KEYUP,0); // <- taste loslassen Keybd_Event(VK_Scroll,0,0,0); // <- taste drücken Keybd_Event(VK_Scroll,0,KEYEVENTF_KEYUP,0); // <- taste loslassen end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin Keybd_Event(VK_Scroll,0,0,0); // <- taste drücken Keybd_Event(VK_Scroll,0,KEYEVENTF_KEYUP,0); // <- taste loslassen end; LG |
AW: Hotkey per Button
Zitat:
Es gibt ein paar Tastatur-States, die werden an die Tastatur gesendet und da kann dann auch wieder der Switch drauf reagieren, auf die Befehle an die Tastatur. Hier muß ja der PC der Tastatur sagen "schalte deine Scroll-Lock-LED an", sonst zeigt die Tastatur-LED etwas anderes/falsches, als der Status im PC aussagt, wenn es von der virtuellen Tastatur kam. (Scroll-Lock, Shift-Lock und Num-Lock) Im Prinzip ist es einfach. Der Switch reagiert nur auf Befehle, welche durch das USB-Kabel wandern. SendInput und Dergleichen schleußen ihre Signale aber erst nach dem USB-Port in deinem PC ein. Via Software kannst du dich aber nur an gewissen Stellen einmischen (dort deine virtuellen Tastatur-Events senden), also bei "<---" und bei "<--- ?" nur, wenn du das Programm hookst, bzw. selber dort etwas dafür einkompiliers. Alles davor nur über zusätzliche Hardware, oder wenn sich die vorhandene Hardware steuern ließe, also ein API für den Switch oder eben eine steuerbare Tastatur.
Code:
Im Fall der Lock-LEDs ist das halt ein Steuerbefehl für die Tastatur durch das Kabel, auf welchen der Switch reagieren kann, wenn er auch den Rückkanal überwacht,
Tastatur
V Kabel V USB-Switch V Kabel V USB-Port V USB-Treiber V <--- LowLevel-Tastatur-Funktionen V <--- HighLevel-Tastatur-Funktionen V <--- Windows-Messages V <--- ? Ereignisbehandlung im Programm V <--- ? die Auswertung im Programm aber da ist das eben nicht direkt der Tastatur-Code von der Tastatur durch das Kabel, sondern eben die zugehörige LED, auf welche hier reagiert wird. |
AW: Hotkey per Button
So funktioniert das ganze.
Code:
Danke für die Hilfestellung.
procedure TForm1.Button1Click(Sender: TObject);
var Count:integer; begin for Count:= 1 to 2 do begin Windows.keybd_event(VK_Scroll, Windows.MapVirtualKey(VK_Scroll, 0), KEYEVENTF_EXTENDEDKEY, 0); // Scroll drücken Windows.keybd_event(VK_Scroll, Windows.MapVirtualKey(VK_Scroll, 0), KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0); // Scroll loslassen sleep(200); end; end; |
AW: Hotkey per Button
:thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:13 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