Autor Beitrag
f.elix
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19

winXP/7/10 SuseXX.X
Delphi 10.1 Berlin
BeitragVerfasst: Mi 28.02.07 13:00 
Hallo erstmal ... wieder

Ich hab ein klitzekleines Problem...chen

Ich hab eine DLL, die alle meine Apps als Message-Ausgabe benutzen. Also wird ein Formular erzeugt:

NCMessageForm := TNCMessageForm.create(Application);

Nun erzeugt jede Applikation eine eigene Instanz davon und bastelt sich ein eigenes Fenster - was nicht gewollt ist.

Also Handle ermitteln (und falls noch nicht existiert Fenster erzeugen) mit:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var
  MyHandle          : THandle;
begin
  MyHandle:=  FindWindow('TNCMessageForm',nil);
  if MyHandle=0 then
    NCMyMessageForm := TNCMessageForm.create(Application)
  else
    NCMyMessageForm := ...-> Problem!!!

end;


Wie mach ich aus dem gefundenen Handle ein NCMessageForm oder einen Zeiger darauf? Sendmessage will ich nicht nutzen.

Hat mal jemand einen schnellen Tip.

Vielen Dank schonmal.

Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt
HelgeLange
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 735
Erhaltene Danke: 6

Windows 7
Delphi7 - Delphi XE
BeitragVerfasst: Mi 28.02.07 13:14 
eine DLL, welche in verschiedenen apps benutzt wird, wird auch mehrfach in den Speicher geladen. Dadurch hat jede Kopie der DLL seinen eigenen Adressraum, auch für Daten. Du kannst also nicht direkt ene Variable in der DLL setzen und danach Fenster anzeigen oder nicht.

Was du machen kannst : Einfach das Fenster suchen, wenn es existiert, garnicht erst neu erzeugen. Schau doch mal nach FindWindow etc...

Es gibt auch noch andere Methoden wie MemoryMappedFiles oder irgendwas in die Registry schreiben etc... Aber meiner Meinung nach ist das Fenster-Suchen das Beste.

_________________
"Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
f.elix Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19

winXP/7/10 SuseXX.X
Delphi 10.1 Berlin
BeitragVerfasst: Mi 28.02.07 14:15 
Titel: Findwindow ist wird genutzt
Hi, danke erstmal für die schnelle Antwort,

aber ich ermittle ja schon das Fester-Handle, falls eins existiert.

Aber wie bekomme ich einen Zeiger auf das Fenster, zu dem dieses Handle gehört?
HelgeLange
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 735
Erhaltene Danke: 6

Windows 7
Delphi7 - Delphi XE
BeitragVerfasst: Mi 28.02.07 14:27 
Frage Deine Form mit SendMessage...
achne.. das willste ja nicht benutzen.. Pech gehabt dann...

Warum machst Du denn den Führerschein, kaufst Dir ein Auto setzt dich rein und fährst dann nicht ?

_________________
"Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw