Einzelnen Beitrag anzeigen

Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Rückgabewert für Message WM_APPCOMMAND

  Alt 10. Mai 2012, 16:05
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.
Andreas Lauß
Blog

Geändert von Andreas L. (10. Mai 2012 um 16:39 Uhr)
  Mit Zitat antworten Zitat