AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi SendMessage funktioniert bei minimiertem Programm nicht
Thema durchsuchen
Ansicht
Themen-Optionen

SendMessage funktioniert bei minimiertem Programm nicht

Ein Thema von Aurelius · begonnen am 27. Dez 2007 · letzter Beitrag vom 27. Dez 2007
Antwort Antwort
Benutzerbild von Aurelius
Aurelius

Registriert seit: 29. Jan 2007
Ort: Erfurt
753 Beiträge
 
Delphi 7 Personal
 
#1

SendMessage funktioniert bei minimiertem Programm nicht

  Alt 27. Dez 2007, 20:51
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?
Jonas
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: SendMessage funktioniert bei minimiertem Programm nicht

  Alt 27. Dez 2007, 20:57
Moin Jonas,

ich kenne jetzt CoolTrayIcon nicht, aber probier' erst mal diesen Teil ohne Komponente zu lösen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Aurelius
Aurelius

Registriert seit: 29. Jan 2007
Ort: Erfurt
753 Beiträge
 
Delphi 7 Personal
 
#3

Re: SendMessage funktioniert bei minimiertem Programm nicht

  Alt 27. Dez 2007, 22:28
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 ). 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.
Jonas
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: SendMessage funktioniert bei minimiertem Programm nicht

  Alt 27. Dez 2007, 23:56
Moin Jonas,

Zitat von xX0815Xx:
Dort habe ich als Identifikationstext den selben Namen wie mein Fenster angegeben und deswegen geht das Ganze im minimierten Zustand nicht.
An Stellen, an denen ich einen eindeutigen String benötige, generiere ich mir immer eine GUID.
Dazu einfach in der IDE mal STRG-SHIFT-G drücken.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 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