Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Sondertasten (Play, Stop, nächster Titel) bei Tastaturen (https://www.delphipraxis.net/24835-sondertasten-play-stop-naechster-titel-bei-tastaturen.html)

SirThornberry 27. Jun 2004 09:48


Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
Hallo,

ich hab eine Logitechtastatur auf welcher sich Sondertasten befinden. Zum Beispiel: Play/Pause, Stop, nächster Titel etc.

Jetzt würde ich gern in meinem Programm auf diese Tasten reagieren. Winamp2 reagiert auf die Tasten (Play/Pause etc.), Winamp3 nicht. Jetzt weiß ich nicht ob bei Winamp3 einfach diese Funktionen nicht mehr unterstützt werden oder ob der Tastaturtreiber Play/Pause etc. auslöst wenn Winamp geöffnet ist.

Auf der Logitechseite hab ich leider nix gefunden was mir weiterhilft und auch bei google nicht. Und wenn ich bei Logitech anrufe
Zitat:

Logitech GmbH
Streiflacher Strasse 7
D - 82110 Germering
+49 (0)89-89 467-0
+49 (0)69-92 032 165 Product Information
+49 (0)69-92 032 166 Technical Help
+41 (0)21-863 54 00 Product Information - English
+41 (0)21-863 54 01 Technical Help - English
geht zum Sonntag niemand ran und mir werden die Geschäftszeiten genannt. Ich wollte es aber möglichst heute noch in mein Programm implementieren

Sharky 27. Jun 2004 10:30

Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
Zitat:

Zitat von SirThornberry
...geht zum Sonntag niemand ran und mir werden die Geschäftszeiten genannt. Ich wollte es aber möglichst heute noch in mein Programm implementieren

Das nenne ich einen Skandal! Wie kann sich diese Firma ertreisten Sonntags nicht für dich da zu sein? ;-)
Habe mal eben diese Zeilen getippt:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  KeyPreview := True;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  ShowMessage (IntToStr (key));
end;
Ergebniss bei meiner Typhoon-Tastatur:
Code:
Play  : 179
Stop  : 178
nächster Titel : 176
voriger Tigtel : 177
Da ich keinen extra Treiber installiert habe kann ich mir gut vorstellen das diese Werte bei allen Tastaturen geleich sind?

Chewie 27. Jun 2004 10:36

Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
Werden dafür nicht auch diese "Human Interface Device"-Treiber von Windows verwendet?

SirThornberry 27. Jun 2004 10:38

Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
ok, probier ich dann gleich mal wenn ich delphi wieder drauf hab... Sind 176,177,178,179 nicht auch schon durch andere Tasten der Tastatur verwendet?

[Edit]Habs grad ausprobiert und bei mir wird bei den entsprechenden Taste immer 255 ausgegeben[/Edit]

Sharky 27. Jun 2004 10:41

Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
Zitat:

Zitat von SirThornberry
...176,177,178,179 nicht auch schon durch andere Tasten der Tastatur verwendet?

Ich habe noch keine anderen gefunden.

fkerber 27. Jun 2004 10:50

Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
Hi!
Bei meiner Logitech-Tastatur wird gar nichts ausgegeben.

Ciao fkerber

xineohp 27. Jun 2004 10:50

Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
moin,

meine Medion Tastatur liefert auch:
Code:
Play  : 179 
Stop  : 178 
nächster Titel : 176 
voriger Tigtel : 177

SirThornberry 27. Jun 2004 10:54

Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
@fkerber: Welches Betriebssystem hast du? Unter Win98 und Win95 wurde bei mir auch nix ausgegeben. Seit dem ich xp hab kann ich jetzt nicht mal mehr die Lautstärke über die tastaturregeln ohne das der Bildschirmschoner aus geht..

fkerber 27. Jun 2004 10:59

Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
Hi!

Ich verwende WinXP Home, und die Tasten funktionieren auch wunderbar.

habe auch rausgefunden, warum er nix anzeigt:
Bei mir lief iTouch (= das logitech-Programmm zur Tastatur), mache ich das aus, dann gehen die tasten nimmer (außer lautstärkedreher) aber dann kommen folgende Werte raus:

Code:
Play: #179
Stopp: #178
Vor: #176
Zurück: #177
Lauter: #175
Leiser: #174
Mediencenter: #181
Lautlos an/aus: #173
Ciao fkerber

Sharky 27. Jun 2004 11:02

Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
Zitat:

Zitat von fkerber
....mache ich das aus, dann gehen die tasten nimmer (außer lautstärkedreher) aber ...

Gehen bei mir (XP-home) auch ohen extra Software.

SirThornberry 27. Jun 2004 11:03

Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
hmm, muss ich auch mal probieren ob es geht wenn ich itouch ausmache. Allerdings will ich das die tasten auch funktionieren währen itouch an ist, bei winamp2 funktionierts ja auch. Und die Leute welche die Tasten nutzen haben in aller regel auch die dazugehörige software aktiviert

Legolas 27. Jun 2004 11:57

Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
Hallo,

also ich habe das mit meiner elta media auch mal gerade probiert. Das Ergebnis ixt das gleiche wie bei bei sharky und den anderen:

Delphi-Quellcode:
Play: #179 
Stopp: #178 
Vor: #176 
Zurück: #177 
Lauter: #175 
Leiser: #174 
Mediencenter: #181 
Lautlos an/aus: #173

Ich benutze im übrigen auch keinen speziellen Tastaturtreiber.

Es läßt sich wohl daraus schließen das es bei (fast?) jeder Multimediatastatur so ist.

SirThornberry 27. Jun 2004 12:00

Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
Ok, dann werd ich die Tastencodes nehmen die bei der Mehrzahl der leute funkioniert. Thx fürs testen und posten

himitsu 27. Jun 2004 12:10

Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
Also wenn ich meinen Tastaturtreiber nicht Installiert hab und die Tastatur auch nur über PS2 und nicht über USB betreibe, dann kommen bei mir auch Tastatur-Codes an, aber im Moment kommen keine Codes an (hab ja alles installiert)

S - tefano 27. Jun 2004 12:39

Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
Hi,

vielleicht findest du wenn du morgen bei Logitech einen erreichst ja noch mehr raus - vielleicht gibts bspw. sone Art i-Touch API mit der du auf die Tastendrücke reagieren kannst auch wenn i-Touch an ist.
Vielleicht könnte man auch mal mit Winsight oder so (weiß nich ob dad damit geht) nachgucken was genau bei i-Touch und Winamp für Messages ein- und ausgehen wenn du eine der Tasten drückst.

Ansonsten habe ich bei mir dieselben Werte, wenn i-Touch aus ist. Sonst kommt nix an. Habe Internet Navigator SE von Logitech soweit ich weiß ;-)

Bis dann,

S - tefano

DaFox 27. Jun 2004 13:06

Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
Hi,

seit Windows 2000 gibt es diese, oben genannten, virtuellen KeyCodes ($AD bis $B3):
http://msdn.microsoft.com/library/en...alKeyCodes.asp

Gruß,
Markus

S - tefano 27. Jun 2004 14:17

Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
Zitat:

Zitat von MSDN
[...]
VK_VOLUME_MUTE (AD)
Windows 2000/XP: Volume Mute key

VK_VOLUME_DOWN (AE)
Windows 2000/XP: Volume Down key

VK_VOLUME_UP (AF)
Windows 2000/XP: Volume Up key

VK_MEDIA_NEXT_TRACK (B0)
Windows 2000/XP: Next Track key

VK_MEDIA_PREV_TRACK (B1)
Windows 2000/XP: Previous Track key

VK_MEDIA_STOP (B2)
Windows 2000/XP: Stop Media key

VK_MEDIA_PLAY_PAUSE (B3)
Windows 2000/XP: Play/Pause Media key

VK_LAUNCH_MAIL (B4)
Windows 2000/XP: Start Mail key

VK_LAUNCH_MEDIA_SELECT (B5)
Windows 2000/XP: Select Media key
[...]

Wow, tatsächlich :shock:

Der_Ventilator 28. Jul 2004 21:59

Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
Delphi meint aber (KeyPress), dass es

VK_MEDIA_NEXT_TRACK (B0)
Windows 2000/XP: Next Track key

VK_MEDIA_PREV_TRACK (B1)
Windows 2000/XP: Previous Track key

VK_MEDIA_STOP (B2)
Windows 2000/XP: Stop Media key

VK_MEDIA_PLAY_PAUSE (B3)
Windows 2000/XP: Play/Pause Media key

...

nicht kenne.

Wie kann ich ein eigenes Programm dazu bringen auf diese Tasten zu reagieren?

Wenn ich z.B in einer FullScreenAnwendung [Spiel] bin und ich meinem eigenen MediaPlayer sagen möchte, dass er weiterschalten solle?

Kann mir jemand helfen?

P.S hab ne Logitech Internet/Office Tastatur

XHelp 29. Jul 2004 00:38

Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
Zitat:

Zitat von Der_Ventilator
Delphi meint aber (KeyPress), dass es
VK_MEDIA_NEXT_TRACK (B0)
Windows 2000/XP: Next Track key
[...]
nicht kenne.

Versuche statt VK_MEDIA_NEXT_TRACK, einfach $B0 einzusetzen.

Luckie 29. Jul 2004 00:54

Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
Oder besser:
Delphi-Quellcode:
const
  VK_MEDIA_NEXT_TRACK = $B0;

XHelp 29. Jul 2004 01:25

Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
Zitat:

Zitat von Der_Ventilator
Wenn ich z.B in einer FullScreenAnwendung [Spiel] bin und ich meinem eigenen MediaPlayer sagen möchte, dass er weiterschalten solle?

Das muss man, denk ich, mit einem hook ("Falle") machen.

Delphi-Quellcode:
const
  WM_USER = $0400; // aus messages.pas
  WM_KEYBHOOK = WM_USER + 346;

[...] type [...]

var
  KeyboardHook: HHOOK;

function KeyboardProc(hCode: Integer; wParam: Longint; lParam: Longint): LRESULT; stdcall;
var
  Wnd: THandle;
begin
  if hCode = HC_ACTION then
    begin
      Wnd := FindWindow(nil, 'Form1');
      if Wnd > 0 then
        PostMessage(Wnd, WM_KEYBHOOK, wParam, lParam);
    end;
  Result := CallNextHookEx(KeyboardHook, hCode, wParam, lParam);
end;

function SetKeyboardHook: Boolean;
begin
  KeyboardHook := SetWindowsHookEx(WH_KEYBOARD, @KeyboardProc, HInstance, 0);
  Result := KeyboardHook <> 0;
end;

function RemoveKeyboardHook: Boolean;
begin
  Result := UnhookWindowsHookEx(KeyboardHook);
end;
Das sind erstmal die funktionen, die du unbedingt brauchst.

Jetzt erstellst du eine prozedur mit dem namen: "WMKEYBHOOK". Das ist so was wie OnKeyPress in diesem fall.

Delphi-Quellcode:
procedure TMainForm.WMKEYBHOOK(var Msg: TMessage);
begin
    if IntToStr(Msg.wParam)=13 then [......];
end;
Um die falle jetzt zu starten, irgendwo in dein programm
Delphi-Quellcode:
if not SetKeyboardHook then ShowMessage('error');
reinschreiben. (OnCreate oder so was)

Um es zu stopen:
Delphi-Quellcode:
if not RemoveKeyboardHook then ShowMessage('error');
Bei dem Beispiel wurde eigentlich eine dll benutzt, aber ich habe es auch so ausprobiert, das funktioniert trotzdem

Der_Ventilator 30. Jul 2004 19:18

Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
OK.... danke für die Antwort; werde wohl etwas brauchen um die Funktion zu verstehen... mal nach meinem Umzug testen.

Alexander 30. Jul 2004 19:57

Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
Für allgemeine Fragen bezüglich Hooks kannst du dir von Assarbad das Tutorials bezüglich Hooks ansehen (sehr umfangreich & gut beschrieben)

Robert Marquardt 30. Jul 2004 20:47

Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
Um mal die Extra-Tasten genauer zu erklaeren:
Die gehoeren garnicht zur Tastatur. Eine USB Tastatur tritt als mehrere Geraete auf und
nur die normalen Tasten sind im Keyboard-Interface.
Unter Win 2000/XP laeuft ein System-Thread um das zweite Interface auszulesen und die entsprechenden
Tasten-Messages zu generieren.
Es gibt noch ein drittes Interface nur fuer die Power-Taste auf den Tastaturen.

Daraus ergeben sich mehrere lustige Seiteneffekte. Das Keyboard-Interface ist gegen Lesen durch
ein Programm geschuetzt, da Windows das Interface exklusiv oeffnet.
Das zweite Interface hingegen ist nicht exklusiv geoeffnet (oder unter Win 98 garnicht).
Daher kann die Tray-Applikation zum Tastaturtreiber selber die Funktion des in Win 98 fehlenden
System-Threads uebernehmen. Zusaetzlich kann die Tray-Applikation auch noch den Treiber beeinflussen
und alle moeglichen Mappings vornehmen.

Der_Ventilator 1. Aug 2004 01:31

Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
Dennoch springt KeyDown bei mir weder auf $B0 an, noch funktioniert die beschriebene Funktion von XHelp.

Hat jemand eine funktionierende Demo?

Vjay 1. Aug 2004 03:26

Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
 
evtl auch auf shift+strg+etc down achten dabei
hab ne fujitsu und da sind manche doppelt belegt weils wohl nichtmehr soviele freie vks_ gab.

ps habn simplen timer gemacht + getkeystate funzt auch. wie man die keys rausfindet dürfte bekannt sein


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