AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Benutzer definierte Messages Handling

Offene Frage von "Tarry"
Ein Thema von Tarry · begonnen am 16. Mai 2009 · letzter Beitrag vom 16. Mai 2009
Antwort Antwort
Seite 1 von 3  1 23      
Tarry

Registriert seit: 6. Nov 2007
123 Beiträge
 
#1

Benutzer definierte Messages Handling

  Alt 16. Mai 2009, 16:41
Hi,
Ich moechte, dass wenn jemand mein Program zum zweiten mal oeffnet (Eine Instanz schon laeuft) sich die erste Instanz aus dem System Tray wiederherstellt.

Ich versuche dies mit der Hilfe von Windows Messages durchzusetzen, aber es funktioniert einfach nicht.
Entweder wird meine Message nicht gesendet oder nicht empfangen. Der Code wird nicht ausgefuert.

Ich bin mit meinem Latein am Ende...
Hier sind die betroffenen Code Schnipsel.

Beim Starten des Programms (Senden der Message):
Delphi-Quellcode:
uses
  [..]
  Messages
  [..]

const tAlreadyRunning = 'The program is already running !';
      AppName = 'Alarm Clock by Tarry91';
      [b]UM_RISEANDSHINE = WM_USER + 100;[/b]

var mHandle: THandle; // Mutexhandle
 
begin
  mHandle := CreateMutex(nil,True,AppName);
  If GetLastError = ERROR_ALREADY_EXISTS
    Then begin
         // application.MessageBox(tAlreadyRunning, AppName, mb_ok+MB_ICONINFORMATION);
         [b]SendMessage(FindWindow(nil,pchar(AppName)),UM_RISEANDSHINE,0,0);[/b]
         end
    Else Begin
          Application.Initialize;
          Application.Title:= 'Alarm Clock by Tarry91';
          Application.CreateForm(TMainForm, MainForm);
          Application.Run;
         End;
  If mHandle <> 0 Then CloseHandle(mHandle);
end.
In dem Hauptprogramm (Deklaration und Handling der Message):

Delphi-Quellcode:
[...]
const UM_RISEANDSHINE = WM_USER + 100;
[...]
procedure RiseAndShine(var Msg: TMessage); message UM_RISEANDSHINE;
Delphi-Quellcode:
procedure TMainForm.RiseAndShine(var Msg: TMessage);
begin
  ShowMessage('Test');
  MainForm.Show;
  Msg.Result := 1;
end;
Ich hoffe ihr koennt heraufinden, warum die Message nie ankommt

Danke schonmal,
Thomas
"Es gibt zwei Dinge, die unendlich sind. Das Universum und die menschliche Dummheit. Beim Universum bin ich mir noch nicht ganz sicher." -Albert Einstein

Probiere doch mal mein Wecker aus
--> http://tarry91.quotaless.com/index.html
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Benutzer definierte Messages Handling

  Alt 16. Mai 2009, 18:36
SendMessage(FindWindow(nil, pchar('MainForm')), UM_RISEANDSHINE, 0, 0); FindWindow sucht nicht nach der Application sondern nach der Fenstercaption.
  Mit Zitat antworten Zitat
Tarry

Registriert seit: 6. Nov 2007
123 Beiträge
 
#3

Re: Benutzer definierte Messages Handling

  Alt 16. Mai 2009, 18:44
Zitat von omata:
SendMessage(FindWindow(nil, pchar('Form1')), UM_RISEANDSHINE, 0, 0); FindWindow sucht nicht nach der Application sondern nach der Fenstercaption.
Hi,
Aber meine Fenstercaption ist die gleiche, wie der Application name ("Alarm Clock by Tarry91").
Gibt es eine Moeglichkeit zu checken ob FindWindow, das Fenster gefunden hat ?

Danke,
Thomas
"Es gibt zwei Dinge, die unendlich sind. Das Universum und die menschliche Dummheit. Beim Universum bin ich mir noch nicht ganz sicher." -Albert Einstein

Probiere doch mal mein Wecker aus
--> http://tarry91.quotaless.com/index.html
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Benutzer definierte Messages Handling

  Alt 16. Mai 2009, 18:45
Ja, der Rückgabewert von FindWindow muss <> 0 sein.
Angehängte Dateien
Dateityp: zip nureinmalstarten_213.zip (1,3 KB, 3x aufgerufen)
  Mit Zitat antworten Zitat
Tarry

Registriert seit: 6. Nov 2007
123 Beiträge
 
#5

Re: Benutzer definierte Messages Handling

  Alt 16. Mai 2009, 18:59
Zitat von omata:
Ja, der Rückgabewert von FindWindow muss <> 0 sein.
Danke,
der Rueckgabewert ist <> 0 (2229586 um genau zu sein).
Kann es sein das die Message gesendet wird, aber nicht ankommt ?

Wie kann ich das testen ?

Gruss,
Thomas
"Es gibt zwei Dinge, die unendlich sind. Das Universum und die menschliche Dummheit. Beim Universum bin ich mir noch nicht ganz sicher." -Albert Einstein

Probiere doch mal mein Wecker aus
--> http://tarry91.quotaless.com/index.html
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Benutzer definierte Messages Handling

  Alt 16. Mai 2009, 19:00
Das Beispiel, das ich oben angehängt habe, funktioniert bei mir.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: Benutzer definierte Messages Handling

  Alt 16. Mai 2009, 19:11
Programmübergreifende Messages sollte man auch nicht einfach so definieren.
Dafür gibt es MSDN-Library durchsuchenRegisterWindowMessage

ein Beispiel ist z.B. in dem dort angehängten Code zu finden,

oder in der DP
Hier im Forum suchenRegisterWindowMessage
OK, ich weiß daß die Suche da nix findet (das Wort ist zu lang), aber [google]RegisterWindowMessage site:delphipraxis.net[/google]
$2B or not $2B
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Benutzer definierte Messages Handling

  Alt 16. Mai 2009, 19:13
Neues Beispiel
Angehängte Dateien
Dateityp: zip nureinmalstarten_672.zip (2,1 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat
Tarry

Registriert seit: 6. Nov 2007
123 Beiträge
 
#9

Re: Benutzer definierte Messages Handling

  Alt 16. Mai 2009, 19:22
Zitat von omata:
Neues Beispiel
Ich werde daraus nicht schlau
Ich kann einfach keinen Unterschied zwischen deiner und meiner Version finden
Koennte es daran liegen, dass ich die Komponente CoolTrayIcon benutze ?

Gruss,
Thomas
"Es gibt zwei Dinge, die unendlich sind. Das Universum und die menschliche Dummheit. Beim Universum bin ich mir noch nicht ganz sicher." -Albert Einstein

Probiere doch mal mein Wecker aus
--> http://tarry91.quotaless.com/index.html
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Benutzer definierte Messages Handling

  Alt 16. Mai 2009, 19:24
Funktioniert das Beispiel bei dir?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 23:47 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