![]() |
SendMessage funktioniert bei minimiertem Programm nicht
Hallo DPler :hi:
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:
Das Deskband soll mit FindWindow das Hauptfenster suchen und dann die entsprechende Message an dieses abschicken:
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;
Delphi-Quellcode:
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.
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; 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? |
Re: SendMessage funktioniert bei minimiertem Programm nicht
Moin Jonas,
ich kenne jetzt CoolTrayIcon nicht, aber probier' erst mal diesen Teil ohne Komponente zu lösen. |
Re: SendMessage funktioniert bei minimiertem Programm nicht
Aufgrund deines Postes habe ich mal alle Komponenten entfernt --> hat nix genützt
Dann habe ich alle Units durchsucht und - voila - den Fehler gefunden. Ich verwende zur Verhinderung des Doppelten Startens die Unit "SingleInstance" hier aus dem Forum (glaube ich zumindest :oops: ). Dort habe ich als Identifikationstext den selben Namen wie mein Fenster angegeben und deswegen geht das Ganze im minimierten Zustand nicht. Einfach den Namen geändert und das Problem ist gelöst. |
Re: SendMessage funktioniert bei minimiertem Programm nicht
Moin Jonas,
Zitat:
Dazu einfach in der IDE mal STRG-SHIFT-G drücken. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz