AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von SirThornberry · begonnen am 27. Jun 2004 · letzter Beitrag vom 1. Aug 2004
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von XHelp
XHelp

Registriert seit: 12. Jul 2004
Ort: Duisburg
172 Beiträge
 
Delphi 6 Enterprise
 
#21

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

  Alt 29. Jul 2004, 01:25
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 programmif not SetKeyboardHook then ShowMessage('error'); reinschreiben. (OnCreate oder so was)

Um es zu stopen: if not RemoveKeyboardHook then ShowMessage('error'); Bei dem Beispiel wurde eigentlich eine dll benutzt, aber ich habe es auch so ausprobiert, das funktioniert trotzdem
Alex
Von allen Dingen die mir verloren gegangen,
hab ich am meisten an meinem Verstand gehangen
  Mit Zitat antworten Zitat
Der_Ventilator

Registriert seit: 11. Apr 2004
Ort: Kanada
136 Beiträge
 
Delphi 2010 Professional
 
#22

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

  Alt 30. Jul 2004, 19:18
OK.... danke für die Antwort; werde wohl etwas brauchen um die Funktion zu verstehen... mal nach meinem Umzug testen.
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#23

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

  Alt 30. Jul 2004, 19:57
Für allgemeine Fragen bezüglich Hooks kannst du dir von Assarbad das Tutorials bezüglich Hooks ansehen (sehr umfangreich & gut beschrieben)
Alexander
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#24

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

  Alt 30. Jul 2004, 20:47
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.
  Mit Zitat antworten Zitat
Der_Ventilator

Registriert seit: 11. Apr 2004
Ort: Kanada
136 Beiträge
 
Delphi 2010 Professional
 
#25

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

  Alt 1. Aug 2004, 01:31
Dennoch springt KeyDown bei mir weder auf $B0 an, noch funktioniert die beschriebene Funktion von XHelp.

Hat jemand eine funktionierende Demo?
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#26

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

  Alt 1. Aug 2004, 03:26
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
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 02:24 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