AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Hotkey per Button

Ein Thema von SaFu · begonnen am 12. Jun 2018 · letzter Beitrag vom 13. Jun 2018
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#11

AW: Hotkey per Button

  Alt 13. Jun 2018, 12:05
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
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Hotkey per Button

  Alt 13. Jun 2018, 12:11
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
 Keybd_Event(VK_Scroll,0,0,0);
end;
Versuche mal
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;
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#13

AW: Hotkey per Button

  Alt 13. Jun 2018, 13:01
Also, wenn ich das so ausführe,

Code:
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;
Passiert bei Button nix,

Aber wenn ich es nochmal in das KeyDown Event reinschreibe und zwar so

Code:

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;
funktioniert es über den Button aber es hängt in einer Schleife. Somit sollt es ja irgendwie funktionieren.


LG
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#14

AW: Hotkey per Button

  Alt 13. Jun 2018, 13:04
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?
Das ist etwas Anderes.
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:
          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
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,
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (13. Jun 2018 um 13:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#15

AW: Hotkey per Button

  Alt 13. Jun 2018, 14:59
So funktioniert das ganze.

Code:
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;
Danke für die Hilfestellung.
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Hotkey per Button

  Alt 13. Jun 2018, 15:14
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz