AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Auf Tastendruck der Spezialtastatur reagieren!

Auf Tastendruck der Spezialtastatur reagieren!

Ein Thema von Coolspot · begonnen am 13. Jun 2007 · letzter Beitrag vom 15. Jun 2007
Antwort Antwort
Coolspot

Registriert seit: 13. Mär 2005
Ort: Berlin
42 Beiträge
 
#1

Auf Tastendruck der Spezialtastatur reagieren!

  Alt 13. Jun 2007, 19:11
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.

Danke schon mal im Vorraus ^^
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

Registriert seit: 26. Mär 2007
Ort: Klingenstadt
541 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Auf Tastendruck der Spezialtastatur reagieren!

  Alt 13. Jun 2007, 22:40
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.
Es ist zu wahr um schön zu sein...
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#3

Re: Auf Tastendruck der Spezialtastatur reagieren!

  Alt 14. Jun 2007, 04:37
Die Multimediatasten kommen per WM_APPCOMMAND. Die JVCL hat eine einfache Komponente dazu (TJvAppCommand).
  Mit Zitat antworten Zitat
Coolspot

Registriert seit: 13. Mär 2005
Ort: Berlin
42 Beiträge
 
#4

Re: Auf Tastendruck der Spezialtastatur reagieren!

  Alt 15. Jun 2007, 11:56
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
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#5

Re: Auf Tastendruck der Spezialtastatur reagieren!

  Alt 15. Jun 2007, 12:30
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.
  Mit Zitat antworten Zitat
Coolspot

Registriert seit: 13. Mär 2005
Ort: Berlin
42 Beiträge
 
#6

Re: Auf Tastendruck der Spezialtastatur reagieren!

  Alt 15. Jun 2007, 13:26
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
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#7

Re: Auf Tastendruck der Spezialtastatur reagieren!

  Alt 15. Jun 2007, 13:35
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.
  Mit Zitat antworten Zitat
Coolspot

Registriert seit: 13. Mär 2005
Ort: Berlin
42 Beiträge
 
#8

Re: Auf Tastendruck der Spezialtastatur reagieren!

  Alt 15. Jun 2007, 13:46
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
  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 04:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf