Delphi-PRAXiS
Seite 1 von 3  1 23   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Rechtsklick in minimierter Caption abfangen (https://www.delphipraxis.net/200788-rechtsklick-minimierter-caption-abfangen.html)

Amateurprofi 24. Mai 2019 18:43


Rechtsklick in minimierter Caption abfangen
 
Wenn ein Programm minimiert ist, wird beim Klicken in die minimierte Caption in der Taskleiste
1) Bei Linksklick das Programmfenster "geöffnet"
2) Bei Rechtsklick ein Menu geöffnet, in dem verschiedene Optionen angeboten werden.

Ich möchte, dass mein Programm einen Rechtsklick in die minimierte Caption abfängt und darauf reagiert.

Hintergrund:
Das Programm spielt den ganzen Tag Musikstücke ab.
Wenn ich einen Anruf erhalte will ich die Wiedergabe anhalten und wieder starten können, OHNE dafür das Programmfenster "offnen" zu müssen.

Ich habe bei den Schweizern folgendes gefunden, was aber nur funktioniert, wenn das Programmfenster geöffnet es.
Wenn es minimiert in der Tastleiste liegt, funktioniert das nicht.
" funktioniert das nicht" heißt, die Prozedur "TForm1.WMNCRBUTTONDOWN" wird nicht aufgerufen.

Weiß jemand eine Lösung für das Problem?

In der Deklaration der Form
Delphi-Quellcode:
private
   procedure WMNCRBUTTONDOWN(var msg: TMessage); message WM_NCRBUTTONDOWN;
end;
Im Implementation Abschnitt
Delphi-Quellcode:
Procedure TForm1.WMNCRBUTTONDOWN(var msg: TMessage);
begin
   if msg.wParam = HTCAPTION then Caption := 'Right Click!';
   // Message.Result := 0; {to ignore the message}
   inherited;
end;

DieDolly 24. Mai 2019 18:56

AW: Rechtsklick in minimiete Caption abfangen
 
Zitat:

Ich habe bei den Schweizern folgendes gefunden, was aber nur funktioniert, wenn das Programmfenster geöffnet es.
Dafür bieten sich doch perfekt Task-Buttons an oder wie die heißen. Diese Buttons im Taskicon die auch VLC hat.

Aviator 26. Mai 2019 16:11

AW: Rechtsklick in minimierter Caption abfangen
 
Seit XE6 oder XE7 gibt es die bereits angesprochenen TTaskBarButtons. Die sind genau dafür gedacht. Es gibt sogar eine Demo dafür im Demo Verzeichnis. Schau dir mal an was mit der TaskBar alles gemacht werden kann.

Hier noch ein etwas ausführlicherer Blogeintrag von Marco Cantu der das Thema behandelt. Ist aber im Prinzip nix anderes, als das er die Demo durchkaut.

EDIT: In deinem Profil steht XE2. Keine Ahnung ob das noch stimmt. Falls ja, dann müsstest du das entsprechende Interface von Microsoft manuell implementieren. Ist halt etwas mehr Aufwand, funktioniert aber genau so.

DieDolly 26. Mai 2019 16:18

AW: Rechtsklick in minimierter Caption abfangen
 
Zitat:

Zitat von Aviator (Beitrag 1433170)
EDIT: In deinem Profil steht XE2. Keine Ahnung ob das noch stimmt. Falls ja, dann müsstest du das entsprechende Interface von Microsoft manuell implementieren. Ist halt etwas mehr Aufwand, funktioniert aber genau so.

Oder einfach Windows7TaskbarComponents nehmen. Ich habe 10.3 und benutze trotzdem Windows7TaskbarComponents.
https://delphi.fsprolabs.com/

Aviator 26. Mai 2019 17:03

AW: Rechtsklick in minimierter Caption abfangen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also wenn ich das als BuiltIn Funktion hätte, dann würde ich die auch benutzen. Zumal die von dir verlinkte Komponente offiziell nur bis XE2 unterstützt wird.

Anhang 51155

DieDolly 26. Mai 2019 17:10

AW: Rechtsklick in minimierter Caption abfangen
 
Funktioniert wie gesagt einwandfrei mit 10.3.

Amateurprofi 27. Mai 2019 03:10

AW: Rechtsklick in minimierter Caption abfangen
 
Zitat:

Zitat von DieDolly (Beitrag 1433173)
Funktioniert wie gesagt einwandfrei mit 10.3.

Danke für den Tipp.
Leider für mich nicht tauglich (XE 2).

DeddyH 27. Mai 2019 07:30

AW: Rechtsklick in minimierter Caption abfangen
 
Zitat:

Zitat von Aviator (Beitrag 1433172)
Zumal die von dir verlinkte Komponente offiziell nur bis XE2 unterstützt wird.

Zitat:

Zitat von Amateurprofi (Beitrag 1433179)
Leider für mich nicht tauglich (XE 2).

:roll:

DieDolly 27. Mai 2019 12:09

AW: Rechtsklick in minimierter Caption abfangen
 
Abgesehen davon läuft die Komponente bis 10.3 problemlos.

Amateurprofi 27. Mai 2021 12:17

AW: Rechtsklick in minimierter Caption abfangen
 
Falls jemand ähnliches vorhat:
Ich habe mein Problem jetzt so gelöst:

1) Ein kurzes Programm geschrieben.
2) Eine Verknüpfung auf den Desktop gelegt.
3) Dieser einen Shortcut zugewiesen (Alt-Ctrl- .) (war erstaunt, dass " . " als Shortcut funktioniert.)

Wenn ich jetzt Alt-Ctrl-. drücke, wird
A) wenn das Musik.Programm geöffnet ist, diesem eine Message geschickt, die von dem Musik-Programm entsprechend verarbeitet wird.
B) wenn das Musik.Programm nicht geöffnet ist, wird es mit ShellExecute geöffnet.
Das funktioniert prächtig und gefällt mir noch besser als meine ursprüngliche Idee mit Rechtsklick auf die minimierte Caption in der TaskBar.
Was mir nicht gefällt: Das Programm "blitzt" kurz auf; hab noch keine Lösung gefunden, das zu verhindern.
Vielleicht weiß ja jemand auch dafür eine Lösung.

Delphi-Quellcode:
program ToggleMusic;

{$APPTYPE CONSOLE}

{$R *.res}

uses
   WinApi.Windows, WinApi.ShellApi,
   System.SysUtils;

const MusicPath='E:\Daten\Delphi XE2\Music\Win32\Debug\Music.exe';
var Win:HWND; StartUpInfo:TStartUpInfo; Dsn:String;
begin
   StartupInfo.cb:=SizeOf(StartUpInfo);
   StartupInfo.dwFlags:=STARTF_USESHOWWINDOW;
   StartupInfo.wShowWindow:=SW_HIDE;
   Win:=FindWindow(Nil,'Music Player');
   if Win<>0 then begin
      PostMessage(Win,$7FFF,0,0);
   end else begin
      Dsn:=MusicPath;
      if FileExists(Dsn) then
         ShellExecute(0,'open',PWideChar(Dsn),nil,nil,SW_SHOWNORMAL);
   end;
end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:02 Uhr.
Seite 1 von 3  1 23   

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf