Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Auf Tastendruck der Spezialtastatur reagieren! (https://www.delphipraxis.net/93952-auf-tastendruck-der-spezialtastatur-reagieren.html)

Coolspot 13. Jun 2007 19:11


Auf Tastendruck der Spezialtastatur reagieren!
 
Guten Abend die Damen und Herren, ich hab mal wieder ne bescheidene Frage...

Also ich hab ne Tastatur von "Creative" und die hat so zusatztasten wie Play/pause oder Stop, kennt jeder. So, die Frage is jetzt aber, wie kann ich die abfangen, gibts für die vielleicht auch sowas wie VK_playpause oder so ? also VK_PLAY gibts, is aber nich das richtige ^^ wie man systemweit Tastenanschläge abfängt weiß ich, aber leider nich für diese Tasten. :wall: :gruebel:

Danke schon mal im Vorraus ^^ :lol:

Dunkel 13. Jun 2007 22:40

Re: Auf Tastendruck der Spezialtastatur reagieren!
 
Hallo!

Öffne ein neues Projekt und erweitere die Ereignisbehandlung für OnKeyDown des Formulars etwa so:
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  Caption:= IntToStr(Key);
end;
Dann siehst Du in der Fensterleiste, welchen Wert die Tasten zurückgeben. Bei mir hat z.B. diese Play/Pause-Taste den Wert 179.

Dann kannst Du ganz einfach im OnKeyDown oder OnKeyUp auf diesen Wert überprüfen:
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  case Key of
    179: { Play/Pause }
  end;
end;
Ich weiß nicht, ob sich alle Tastatur-Hersteller auf den selben Standard für die Multimediatasten geeinigt haben; es kann sein, dass eine andere Tastatur einen anderen Wert zurück gibt.

Robert Marquardt 14. Jun 2007 04:37

Re: Auf Tastendruck der Spezialtastatur reagieren!
 
Die Multimediatasten kommen per WM_APPCOMMAND. Die JVCL hat eine einfache Komponente dazu (TJvAppCommand).

Coolspot 15. Jun 2007 11:56

Re: Auf Tastendruck der Spezialtastatur reagieren!
 
Joa also danke erstmal an beide aber ich hab da noch nen Problem.

@Dunkel
mit deiner Variante bekomm ich zwar raus, wie der Integerwert für die Taste is, aber ich brauch den wert inna anderen Form, der "VK_" Keys oder in der Form : "$xx", weil wenn ich nen Windows-Hotkey erstelle brauch ich die in der Form. Ich will das Ganze ja systemweit abfangen.

@Robert Marquardt
Hmm, damit komm ich gar net klar ^^ Du redest bestimmt von Messages oder ?? damit hab ich leider null ahnung ^^ außerdem werden die doch auch nur Anwendungsweit abgefangen, oder ? naja wenn du das noch nen kleines bisschen ausführlicher beschreiben könntest, wär echt nice ^^


Danke

Robert Marquardt 15. Jun 2007 12:30

Re: Auf Tastendruck der Spezialtastatur reagieren!
 
Na dann fangen wir mal vorne an. Erstens sind das keine Tasten die VK_-Tastencodes haben und zweitens kommen sie garnicht von der Tastatur.
Bei einer USB-Tastatur gibt es zwei separate Geraete. Die nortmale Tastatur und die Multimedia-Tasten als eigenes Geraet (und das ist noch vereinfacht).
Ein System-Service liest dieses Geraet und generiert WM_APPCOMMAND Messages an das Programm mit dem Fokus. Signalisiert die Applikation das sie die WM_APPCOMMAND Messages akzeptiert (per Rueckgabewert von SendMessage), dann macht der Service nichts weiter. Hat die Applikation kein Interesse an der Message bekundet, so implementierr der Service das Standardverhalten und startet beispielsweise den Browser oder den Taschenrechner oder veraendert die Lautstaerke.

Wieso willst du ueberhaupt systemweit die Tasten abfangen? Das macht ueblicherweise keinen Sinn. Tasten gehen nur das Programm mit Fokus etwas an.

Coolspot 15. Jun 2007 13:26

Re: Auf Tastendruck der Spezialtastatur reagieren!
 
ich will die Tasten nutzen für mein Winamp-Controll Programm, wenn ich zum Beispiel Counter-Strike spiele, dann will ich nich immer raus aus dem Spiel und dann von Hand umstellen. Die Tasten funktionieren komischerweise nur mit dem wmp ... achso und meine tastatur is ganz normal über PS2 angeschlossen, kein USB. Die Frage is jetzt eigentlich nur, wie ich diese nutzen kann ?! Aber danke für die Aufklärung ;)

Robert Marquardt 15. Jun 2007 13:35

Re: Auf Tastendruck der Spezialtastatur reagieren!
 
Wie das bei PS/2-Tastaturen genau geregelt ist, weiss ich nicht, aber letztlich werden die Multimediatasten sicherlich an den Service weitergereicht.
Es gibt doch einige VK_-Codes fuer dieser Tasten (schlag mal bei Microsoft in der Onlinehilfe nach). Es kann sein das man darauf Hotkeys setzen kann. Probier mal aus.

Coolspot 15. Jun 2007 13:46

Re: Auf Tastendruck der Spezialtastatur reagieren!
 
Jo danke hat sich erledigt , gibt wirklich VK_ Keys dafür ^^

ich schreib die mal hier hin, für alle die es auch später nutzen wollen :

aus der "JwaWinUser.pas" :
Zitat:

VK_BROWSER_BACK = $A6;
{$EXTERNALSYM VK_BROWSER_BACK}
VK_BROWSER_FORWARD = $A7;
{$EXTERNALSYM VK_BROWSER_FORWARD}
VK_BROWSER_REFRESH = $A8;
{$EXTERNALSYM VK_BROWSER_REFRESH}
VK_BROWSER_STOP = $A9;
{$EXTERNALSYM VK_BROWSER_STOP}
VK_BROWSER_SEARCH = $AA;
{$EXTERNALSYM VK_BROWSER_SEARCH}
VK_BROWSER_FAVORITES = $AB;
{$EXTERNALSYM VK_BROWSER_FAVORITES}
VK_BROWSER_HOME = $AC;
{$EXTERNALSYM VK_BROWSER_HOME}

VK_VOLUME_MUTE = $AD;
{$EXTERNALSYM VK_VOLUME_MUTE}
VK_VOLUME_DOWN = $AE;
{$EXTERNALSYM VK_VOLUME_DOWN}
VK_VOLUME_UP = $AF;
{$EXTERNALSYM VK_VOLUME_UP}
VK_MEDIA_NEXT_TRACK = $B0;
{$EXTERNALSYM VK_MEDIA_NEXT_TRACK}
VK_MEDIA_PREV_TRACK = $B1;
{$EXTERNALSYM VK_MEDIA_PREV_TRACK}
VK_MEDIA_STOP = $B2;
{$EXTERNALSYM VK_MEDIA_STOP}
VK_MEDIA_PLAY_PAUSE = $B3;
{$EXTERNALSYM VK_MEDIA_PLAY_PAUSE}
VK_LAUNCH_MAIL = $B4;
{$EXTERNALSYM VK_LAUNCH_MAIL}
VK_LAUNCH_MEDIA_SELECT = $B5;
{$EXTERNALSYM VK_LAUNCH_MEDIA_SELECT}
VK_LAUNCH_APP1 = $B6;
{$EXTERNALSYM VK_LAUNCH_APP1}
VK_LAUNCH_APP2 = $B7;
{$EXTERNALSYM VK_LAUNCH_APP2}
Damit wird das Ganze zu nem Kinderspiel. Danke nochmal an dich Robert Marquardt für deine Hilfe ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:28 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