Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Bestimmte WM_APPCOMMAND teilweise weiterleiteten an Standard (https://www.delphipraxis.net/120026-bestimmte-wm_appcommand-teilweise-weiterleiteten-standard.html)

chri_ri 4. Sep 2008 15:35


Bestimmte WM_APPCOMMAND teilweise weiterleiteten an Standard
 
Also ich habe eine kleines tool, worin eine Art Mini-Player integriert ist. Die Ansteuerung über die Multimedia-Tasten klappt perfekt (Wenn auch leider nur im Focus). Jedoch gibt es ein kleines Problem: ich brauche nicht alle Multimediatasten. Ich brauche nur Stop, Play/pause, next/back-track und viellei eventuell später noch ein oder zwei andere. Der Rest wie Laut/leise und ton Aus brauche ich nicht in meinem Tool, dafür jedoch deren uhrsprünglichen Zweck. Nun also meine Frage, wie ich die nicht benötigten Messages wieder weitergeben kann.

So hab ichs im Moment gelöst (ohne Weitergabe):

Delphi-Quellcode:
type
  TMain = class(TForm)
    procedure MultiKey(var Msg: tagMsg); message WM_APPCOMMAND;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

procedure TMain.MultiKey(var Msg: tagMSG);
begin
  case Msg.wParam of
    720896: if radio <> 3 then Switch(radio + 1);
    786432: if radio <> 0 then Switch(radio - 1);
    851968: if btn_play.Caption = 'II' then btn_play.Click;
    917504: btn_play.Click;
  end;
end;

Nun möchte ich suche ich noch eine Möglichkeit bei der Case-Anweisung irgendwie die Ungenutzen Messages weiterzuschicken, statt abzufangen.

Schonmal Thx im Vorraus!



mfg. chri_ri

Der.Kaktus 4. Sep 2008 16:14

Re: MultimediaTasten + WM_APPCOMMAND / WM_APPCOMMAND weiterl
 
Hallo, vielleicht mit Postmessage im Else Zweig? ;-)

chri_ri 4. Sep 2008 16:50

Re: MultimediaTasten + WM_APPCOMMAND / WM_APPCOMMAND weiterl
 
@Der.Kaktus: hm ok hab ich mir auch schon gedacht aber das war mir bissl zu einfach um die lösung zu sein. nungut ok aber wenn, dann welches handle? handle 0? weil ich will das ja einfach so hinaus schickn sozusagen und nicht speziell an einen bestimmten prozess.


mfg. chri_ri

Der.Kaktus 4. Sep 2008 16:56

Re: MultimediaTasten + WM_APPCOMMAND / WM_APPCOMMAND weiterl
 
Zitat:

Zitat von chri_ri
@Der.Kaktus: hm ok hab ich mir auch schon gedacht aber das war mir bissl zu einfach um die lösung zu sein. nungut ok aber wenn, dann welches handle? handle 0? weil ich will das ja einfach so hinaus schickn sozusagen und nicht speziell an einen bestimmten prozess.


mfg. chri_ri

Du bekommst doch das Handle woher die Message kommt..zurueck an Absender ;-)

chri_ri 4. Sep 2008 17:01

Re: MultimediaTasten + WM_APPCOMMAND / WM_APPCOMMAND weiterl
 
@Der.Kaktus:
Zitat:

Zitat von Der.Kaktus
Du bekommst doch das Handle woher die Message kommt..zurueck an Absender ;-)

Habe ich ja auch gedacht aber es geht nicht:

Delphi-Quellcode:
PostMessage(Msg.hwnd, Msg.message, Msg.wParam, Msg.lParam);
Delphi-Quellcode:
procedure TMain.MultiKey(var Msg: tagMSG);
begin
  case Msg.wParam of
    720896: if radio <> 3 then Switch(radio + 1);
    786432: if radio <> 0 then Switch(radio - 1);
    851968: if btn_play.Caption = 'II' then btn_play.Click;
    917504: btn_play.Click;
    else PostMessage(Msg.hwnd, Msg.message, Msg.wParam, Msg.lParam);
  end;
end;
Das scheint sozusagen dann wohl vermutlich von dort auch bloß wieder an mein Tool zurück zu kommen :(



mfg. chri_ri

Der.Kaktus 4. Sep 2008 17:13

Re: MultimediaTasten + WM_APPCOMMAND / WM_APPCOMMAND weiterl
 
und wenn Du nix weiter machst ausser dem "case"?..geht dann irgendwas nicht?

chri_ri 4. Sep 2008 17:20

Re: MultimediaTasten + WM_APPCOMMAND / WM_APPCOMMAND weiterl
 
Zitat:

Zitat von Der.Kaktus
und wenn Du nix weiter machst ausser dem "case"?..geht dann irgendwas nicht?

Das habe ich ja schon bereits erwähnt. Ich brauche einige Multimedia-Tasten. Das heißt, dass einige Multimedia-Tasten ihre ursprüngliche Funktion behalten sollen statt abgefangen zu werden.

//EDIT: Ich habe jetzt mit folgendem Code:
Delphi-Quellcode:
...
    else begin
      Application.Minimize;
      if PostMessage(Msg.hwnd, Msg.message, Msg.wParam, Msg.lParam) then Application.Restore;
    end;
...
Delphi-Quellcode:
procedure TMain.MultiKey(var Msg: tagMSG);
begin
  case Msg.wParam of
    720896: if radio <> 3 then Switch(radio + 1);
    786432: if radio <> 0 then Switch(radio - 1);
    851968: if btn_play.Caption = 'II' then btn_play.Click;
    917504: btn_play.Click;
    else begin
      Application.Minimize;
      if PostMessage(Msg.hwnd, Msg.message, Msg.wParam, Msg.lParam) then Application.Restore;
    end;
  end;
end;
festgestellt, dass
Delphi-Quellcode:
PostMessage(Msg.hwnd, Msg.message, Msg.wParam, Msg.lParam);
anscheinend so nicht funktioniert. Irgendwas ist da falsch.

Wäre über nen Tipp, was da falsch sein könnte sehr dankbar!
//EDIT ENDE



mfg. chri_ri

chri_ri 6. Sep 2008 13:22

Re: Bestimmte WM_APPCOMMAND teilweise weiterleiteten an Stan
 
Thema beendet.

Lösung gibts bei: http://www.delphipraxis.net/internal...t.php?t=141699



mfg. chri_ri


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