Hallo
DP,
ich habe einen
DLL-Hook programmiert, der jeden Tastendruck der F9-Taste abfängt und stattdessen oder eher gesagt zusätzlich
an ein anderes Programm von mir, welches den Hook nutzt, einen Tastendruck der Media-Tasten simulieren soll.
Dazu habe ich folgende Prozeduren:
Delphi-Quellcode:
function KeyboardHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
Result := CallNextHookEx(HookHandle, nCode, wParam, lParam);
KeyUp := ((lParam and (1 shl 31)) <> 0);
case nCode < 0 of
TRUE: exit; //wenn code kleiner 0 wird nix gemacht
FALSE:
begin
if not KeyUp then
begin
case wParam of
VK_F9:
begin
PostMessage(WindowHandle, WM_KEYDOWN, VK_PLAY, 0);
PostMessage(WindowHandle, WM_KEYUP, VK_PLAY, 0);
end;
end;
end;
end;
end;
end;
Das ist die Prozedur in dem Hook, die den F9-Tastendruck abfängt! Das funktioniert DEFINITIV, habe ich per MessageBox getestet!
Die zweite Prozedur ist in meinem Programm und reagiert auf die Media-Tasten:
Delphi-Quellcode:
procedure TJP.HookMessage(var Msg: TMessage);
begin
case Msg.lParam of
APPCOMMAND_MEDIA_PREVIOUSTRACK: BtnBackClick(BtnBack);
APPCOMMAND_MEDIA_NEXTTRACK: BtnNextClick(BtnNext);
APPCOMMAND_MEDIA_STOP:BtnStopClick(BtnStop);
APPCOMMAND_MEDIA_PLAY_PAUSE: BtnPlayPauseClick(BtnPlayPause);
end;
end;
Habe es auch schon mit einem direkten WM_APPCOMMAND senden versucht, aber funktinierte auch nicht:
sendMessage(WindowHandle, WM_APPCOMMAND, 0, APPCOMMAND_MEDIA_PLAY_PAUSE);
Ich komm da nicht mehr weiter -.-
Plz help!
mfg 64Jabor