Hallo DPler
Ich möchte in meinem Programm ein Deskband nutzen. Dieses muss zwingenderweise mit dem Hauptprogramm kommunizieren können. Die Message empfange ich so:
Delphi-Quellcode:
Procedure BPAPI_Commands(Var aMSG: tMessage); message WM_COMMAND;
Procedure TfrmMain.BPAPI_Commands(Var aMSG: tMessage);
begin
case aMSG.WParam of
40044 : btnVor.Click;
40045 : btnPlay.Click;
40046 : btnPlay.Click;
40047 : btnStop.Click;
40048 : btnNext.Click;
else inherited;
end
end;
Das Deskband soll mit FindWindow das Hauptfenster suchen und dann die entsprechende Message an dieses abschicken:
Delphi-Quellcode:
const Window_Name : string = 'ProgrammName';
procedure TfrmMainBand.btnPlayClick(Sender: TObject);
var hwndBP: THandle;
begin
hwndBP:= FindWindow(nil,PChar(WINDOW_NAME));
if hwndBP<>0 then SendMessage(hwndBP,WM_COMMAND, 40045, 0);
end;
Ist das Fenster sichtbar klappt das auch wunderbar. Sobald es minimiert ist geht das Ganze aber nicht mehr. Das DEskband macht aber eben nur wirklich sinn wenn der Player auch minimiert ist.
Aber eigentlich muss das ganze mit obigen Code auch im minimierten Zustand klappem, habe es bei einem anderen Programm testweise versucht und es funktioniert.
Ich habe mir mal Testweise das
Handle des mit FindWindow ermittelten Fensters per ShowMessage ausgeben lassen. Ergebnis war, dass es minimiert ein anderes
Handle ist als wenn es sichtbar ist. Ich bin mir aber 100% sicher dass ich kein weiteres Fenster mit dem selben Namen habe. Kann es vielleicht an verwendeten DrittKomponenten wie JvShellHook oder dem CoolTrayIcon liegen?
Habt ihr eine Lösung dafür?