Boolean in LongInt casten und in Message-Result setzen. Das war das was ich wissen musste. Danke
EDIT: Genau so wie du frage ich WM_APPCOMMAND ab um die Sondertasten von Tastaturen sowie die Knöpfe von Windows Media Fernbedienungen abzufragen. Das funktioniert soweit auch alles. Nur wird bei den Lautstärke leiser/lauter die System-Lautstärke geändert. Ich dachte das würde Windows durch den Rückgabewert nun unterlassen. Leider ist dem nicht so. Weiß jemand wie ich Windows sage "Lass die Sys-Lautstärke in Ruhe mein Programm verändert seine eigene Lautstärke-Regelung" so wie es z. B. iTunes auch macht?
Delphi-Quellcode:
TCsWindowsAppCommand = (
cwacVolumeMute = APPCOMMAND_VOLUME_MUTE,
cwacVolumeDown = APPCOMMAND_VOLUME_DOWN,
cwacVolumeUp = APPCOMMAND_VOLUME_UP,
cwacMediaPlay = APPCOMMAND_MEDIA_PLAY
);
procedure TForm2.WndProc(var Message: TMessage);
var
cmd: TCsWindowsAppCommand;
begin
if (Message.Msg = WM_APPCOMMAND) then
begin
cmd := TCsWindowsAppCommand(GET_APPCOMMAND_LPARAM(Message.LParam));
case cmd of
cwacMediaPlay: ListBox1.Items.Add('Play');
cwacVolumeDown: ListBox1.Items.Add('Vol down');
cwacVolumeUp: ListBox1.Items.Add('Vol up');
end;
Message.Result := LongInt(True);
end
else
Message.Result := LongInt(False);
inherited WndProc(Message);
end;
EDIT 2: Problem gelöst. inherited WndProc(); darf - wie in deinem Code - nur aufgerufen werden wenn es sich um keine WM_APPCOMMAND-Nachricht handelt.