AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Application Events in einer DLL empfangen
Thema durchsuchen
Ansicht
Themen-Optionen

Application Events in einer DLL empfangen

Offene Frage von "oschulz"
Ein Thema von oschulz · begonnen am 1. Mär 2007 · letzter Beitrag vom 2. Mär 2007
Antwort Antwort
oschulz

Registriert seit: 29. Nov 2005
Ort: Cottbus
44 Beiträge
 
Delphi 7 Architect
 
#1

Application Events in einer DLL empfangen

  Alt 1. Mär 2007, 13:23
Nach mehreren erfolglosen Versuchen in meiner DLL Ereignisse zu empfangen, wende ich mich nun mal ans Forum.
Wie der Titel schon sagt, hab ich mir eine DLL mit einer EXE zum starten erstellt. Nur erhält meine DLL keine Ereignisse. zB hab ich mir ein ApplicationEvents aufs Formular gezogen, doch zeigt das Teil keine Reaktion bei Ereignissen.

Kennt jemand das Problem, bzw ein Lösung?
Oliver
Der Optimist: Das Glas ist halbvoll. - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Application Events in einer DLL empfangen

  Alt 1. Mär 2007, 13:49
Solange du keine gemeinsamen Laufzeitpackages verwendet hast du in Exe und DLL zwei unabhängige Application-Instanzen.

Lösung: Verwendung von gemeinsamen Laufzeitpackages.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
oschulz

Registriert seit: 29. Nov 2005
Ort: Cottbus
44 Beiträge
 
Delphi 7 Architect
 
#3

Re: Application Events in einer DLL empfangen

  Alt 1. Mär 2007, 14:35
Ja gut, das hat aber IMHO nichts mit den Events zu tun. Die ApplicationEvents-Komponente fängt Ereignisse vom System ab. Da sollte es doch meines Erachtens keine Rolle spielen, ob die Instanzen zusammen gehören, oder?

Es ist schon richtig, das ich diese nicht verbunden hab. Aber auch wenn ich das Handle übergebe und der DLL zuweise funktioniert das nicht.
Oliver
Der Optimist: Das Glas ist halbvoll. - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Application Events in einer DLL empfangen

  Alt 1. Mär 2007, 16:01
Zitat von oschulz:
Ja gut, das hat aber IMHO nichts mit den Events zu tun. Die ApplicationEvents-Komponente fängt Ereignisse vom System ab. Da sollte es doch meines Erachtens keine Rolle spielen, ob die Instanzen zusammen gehören, oder?
Viele dieser Events sind keine System-Events sondern durch die VCL "durchgeleitete" Events. Und wenn du keine gemeinsamen Runtimepackages verwendest hast du 2 unabhängige VCL-Klassenbibliotheken!

Zitat von oschulz:
Es ist schon richtig, das ich diese nicht verbunden hab. Aber auch wenn ich das Handle übergebe und der DLL zuweise funktioniert das nicht.
Das bringt nur was das man keine zusätzlichen Icons in der Taskleiste hat!
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#5

Re: Application Events in einer DLL empfangen

  Alt 1. Mär 2007, 17:13
Will man Messages in einer DLL empfangen so sollte man sich mit AllocateHWnd sein eigenes verborgenes Top Level Window besorgen.
Aufpassen! In der Event-Methode von AllocateHWnd muss man unbehandelte Messages mit
Msg.Result := DefWindowProc(FHWnd, Msg.Msg, Msg.wParam, Msg.lParam); abhandeln, sonst bekommt man so unerklaerliche Fehler wie das das Shutdown des Rechners nicht mehr geht.
  Mit Zitat antworten Zitat
oschulz

Registriert seit: 29. Nov 2005
Ort: Cottbus
44 Beiträge
 
Delphi 7 Architect
 
#6

Re: Application Events in einer DLL empfangen

  Alt 2. Mär 2007, 07:36
Hallo, danke erst mal für die Antworten.

Das mit den runtime Packages scheint zu funktionieren. Nur hat das den Nachteil, das wir mit unserem Programm auch die BPLs mitgeben müssen. Das ist nicht unbedingt ideal.

Deshalb hab nun mal versucht, das AllocateHWnd zu benutzen. Das Delphi-Hilfe Beispiel ist nicht so sehr aussagekräftig.
In meine Startfunktion der DLL hab ich nun folgendes eingebunden
Code:
Application.Handle:=AllocateHWnd(WndProc);
Das bringt zumindest keine Fehler, bringt aber auch sonst nichts anderes. Kannst du mir einen Tip geben, wie ich das benutzen muss.

Gruss Oliver
Oliver
Der Optimist: Das Glas ist halbvoll. - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#7

Re: Application Events in einer DLL empfangen

  Alt 2. Mär 2007, 08:31
So ist es auch falsch. Man muss sich eine eigene Variable fuer den Handle anlegen.
Danach bekommt man direkt Windows-Messages ueber die bei AllocateHWnd angegebene Methode.
Natuerlich bekommt man nicht alles was ein TApplicationEvent bekommt, da der die Messages des Hauptfensters filtert.
Was fuer Events von TApplicationEvent sollen denn genutzt werden?
  Mit Zitat antworten Zitat
oschulz

Registriert seit: 29. Nov 2005
Ort: Cottbus
44 Beiträge
 
Delphi 7 Architect
 
#8

Re: Application Events in einer DLL empfangen

  Alt 2. Mär 2007, 08:49
Das mit dem TApplicationEvent war auch nur ein Beispiel zum testen .
Ich hab zB einen TWebbrowser, der Strg+C nicht ausführt, wenn er in der DLL eingebunden ist. In einer EXE geht das allerdings ohne Probleme.
Oder zum Beispiel bin ich grad dabei eine CHM-Datei als Hilfe einzubinden, die auf F1 reagieren sollte. Das geht in der Exe auch relativ problemlos, nur in der DLL nicht (wobei das hier aber auch andere Ursachen haben könnte, bin mir noch nicht sicher).
Prinzipiell werden aber Tastatureingaben gar nicht als Event gemeldet, was doch recht nervig ist, wenn man Globale Tastencode definieren möchte.
Oliver
Der Optimist: Das Glas ist halbvoll. - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#9

Re: Application Events in einer DLL empfangen

  Alt 2. Mär 2007, 09:09
Also klassischer Fall von Problem nicht beschrieben.
Warum willst du das ueberhaupt in einer DLL machen?
  Mit Zitat antworten Zitat
oschulz

Registriert seit: 29. Nov 2005
Ort: Cottbus
44 Beiträge
 
Delphi 7 Architect
 
#10

Re: Application Events in einer DLL empfangen

  Alt 2. Mär 2007, 09:25
Der Grund ist ganz einfach. Wir haben eine Hauptapplikation, an die zur Laufzeit unterschiedliche Module angebunden werden. Diese Module sind DLL's.
Das mit dem "Problem nicht beschrieben" würde ich so auch nicht sagen. Mit den TApplicationEvents kann am einfachsten getestet werden, ob events überhaupt ankommen. Deshalb hab ich das als Beispiel genommen.

hab aber grad noch ein anderen Beitrag gefunden, der das selbe Problem hat
Oliver
Der Optimist: Das Glas ist halbvoll. - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
  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 13:51 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