AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi SendMessageTimeout: Nachrichten zwischen 2 Programmen
Thema durchsuchen
Ansicht
Themen-Optionen

SendMessageTimeout: Nachrichten zwischen 2 Programmen

Ein Thema von VizeTE · begonnen am 15. Dez 2005 · letzter Beitrag vom 17. Dez 2005
Antwort Antwort
VizeTE

Registriert seit: 31. Dez 2002
178 Beiträge
 
Delphi 5 Enterprise
 
#1

SendMessageTimeout: Nachrichten zwischen 2 Programmen

  Alt 15. Dez 2005, 14:13
Hallo zusammen,

ich möchte beim starten von Programm A prüfen ob Programm B nicht läuft oder Programm B sein "ok" für das starten von Programm A gibt.

Mein Ansatz ist die Funktion SendMessageTimeout.
Das Timeout habe ich gewählt da Programm B zeitweise mit komplexen "SQL-Statements" beschäftigt ist und eventuell erst nach längerer Zeit reagiert. In dem Fall soll sicherheitshalber Programm A nicht gestartet werden.

Der Plan sieht so aus:
1) mit FindWindow prüfen ob Programm B da ist
2) mit RegisterWindowMessage eine MessageId holen
3) an Programm B eine Nachricht schicken ob A starten darf

Meine Problem ist wie ich die Antwort von B setze.
Der letzte Parameter von SendMessageTimeout scheint ja ein Ergebnis zurückzugeben.

Delphi-Quellcode:
LRESULT SendMessageTimeout(
    HWND hWnd,
    UINT Msg,
    WPARAM wParam,
    LPARAM lParam,
    UINT fuFlags,
    UINT uTimeout,
    PDWORD_PTR lpdwResult
);
PSDK: lpdwResult: Receives the result of the message processing. This value depends on the message sent.

Nun ist aber die Frage wie ich in Programm B diesen Parameter setzen kann.

Oder habt ihr einen anderen/besseren Ansatz?
Alternativ könnte ja Programm B wieder eine Message an Programm A senden. Falls das aber mit dem Result aus MessageSendTimeout funktioniert würde mir das ehe zusagen

Vielen Dank!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: SendMessageTimeout: Nachrichten zwischen 2 Programmen

  Alt 15. Dez 2005, 16:59
Hallo.

In Programm B wirst du die Message über einen message handler verarbeiten. Im message cracker setzt du dann das Feld Result auf den Wert, den du in deinem Protokoll festgelegt hast.

Grüße vom marabu
  Mit Zitat antworten Zitat
VizeTE

Registriert seit: 31. Dez 2002
178 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: SendMessageTimeout: Nachrichten zwischen 2 Programmen

  Alt 17. Dez 2005, 10:43
Zitat von marabu:
In Programm B wirst du die Message über einen message handler verarbeiten. Im message cracker setzt du dann das Feld Result auf den Wert, den du in deinem Protokoll festgelegt hast.
mmm...wie sieht denn so ein Message Cracker aus? Ich habe die Message im Programm B verarbeitet indem ich die folgende Methode überschrieben habe.procedure TMyControl.WndProc(var Message: TMessage); Alternativ würde mir noch die ApplicationEvents-Komponente einfallen. Dort weiß ich aber auch nicht wie ich das Result setze. Die Methode sieht ja folgendermaßen aus:
ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean) Ein Codeschnipsel wäre hilfreich.

Danke!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: SendMessageTimeout: Nachrichten zwischen 2 Programmen

  Alt 17. Dez 2005, 21:15
Hallo Daniel,

mit einem message cracker meine ich einen Record, der die für deine Nachricht typische Verwendung der einzelnen Felder in einem message record redefiniert um einen komfortableren Zugriff zu ermöglichen oder einfach sprechende Namen für die Parameter einzuführen. Beispiele für solche message cracker sind in der Unit Messages reichlich zu finden (z.B. TWMKey). Beim Studieren dieser records wird dir auffallen, dass eine message einen Standardaufbau hat. Es sind immer 4 Doppelworte. Das erste DWORD ist der message code, den du als Diskriminator in deiner Fensterprozedur verwendest. Das letzte DWORD nimmt deinen Rückgabewert auf. Die beiden in der Mitte übermitteln zusätzliche Werte für den message handler.

Ich weiß jetzt nicht, was ich dir an Code anbieten könnte, aber vielleicht sind deine Unklarheiten ja jetzt schon beseitigt?

Grüße vom marabu
  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 16:24 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