AGB  ·  Datenschutz  ·  Impressum  







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

CreateWindow in einer DLL....

Ein Thema von Tyrael Y. · begonnen am 27. Apr 2006 · letzter Beitrag vom 27. Apr 2006
Antwort Antwort
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#1

CreateWindow in einer DLL....

  Alt 27. Apr 2006, 10:34
Hallo zusammen,

ich benutze folgenden Code einmal innerhalb einer DLL und
einmal innerhalb einer Testapplikation.
Innerhalb der DLL wird das Fenster nicht erzeugt (CreateWindow gibt kein Handle zurück)
Innerhalb der Testapplikation läuft der Code einwandfrei.

Hat einer vielleicht eine Idee woran es liegt?

P.S.: Das Fenster bleibt unsichtbar und dient nur als ein Message-Empfänger(bei
beiden Versionen).

Delphi-Quellcode:
procedure CreateCommandWindow();
var LWndClassStruct: TWndClass;
begin
  
  LWndClassStruct.style := 0;
  LWndClassStruct.lpfnWndProc := @DoOnCommand;
  LWndClassStruct.cbClsExtra := 0;
  LWndClassStruct.cbWndExtra := 0;
  LWndClassStruct.hInstance := HInstance;
  LWndClassStruct.hIcon := 0;
  LWndClassStruct.hCursor := 0;
  LWndClassStruct.hbrBackground := 0;
  LWndClassStruct.lpszMenuName := nil;
  LWndClassStruct.lpszClassName := PAnsiChar('MeinKlassenName');

  if Windows.RegisterClass(LWndClassStruct) <> 0 then
  begin
    WindowHandle := Windows.CreateWindow(PAnsiChar('MeinKlassenName'),
                          PAnsiChar('MeinFensterName'),
                          0,0,0,0,0, 0, 0, HInstance,nil);
  end
  else
    ...
Danke euch.
Gruß Tyrael
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#2

Re: CreateWindow in einer DLL....

  Alt 27. Apr 2006, 10:39
Ich sehe jetzt kein unmittelbares Problem.
Ab Delphi 6 kann man auch Classes.AllocateHWnd nehmen. Vorher war es in Forms und zog einem die ganze VCL in die DLL.
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#3

Re: CreateWindow in einer DLL....

  Alt 27. Apr 2006, 10:51
Hm, Classes.AllocateHWnd hört sich gut an, da hab ich nur jetzt das Problem, daß es einen procedure of object erwartet, ich habe aber kein Object innerhalb dieses Plugins (nur eins, daß für Threads zuständig ist, aber das kann ich dafür nicht nutzen)
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#4

Re: CreateWindow in einer DLL....

  Alt 27. Apr 2006, 11:57
Na dann schreib dir doch eins. Einfach eine TObject-Ableitung mit der Methode.
Du kannst ja auch mal probieren ob nicht eine class procedure funktioniert, dann brauchst du nicht mal eine Objektinstanz.
Delphi-Quellcode:

type
  TWndObject = class(TObject)
  public
     class procedure WndProc(var Msg: TMessage);
  end;

procedure TWndObject.WndProc(var Msg: TMessage);
begin
end;
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#5

Re: CreateWindow in einer DLL....

  Alt 27. Apr 2006, 12:46
Das Problem mit Classes.AllocateHWnd ist, daß ich damit ein gültiges Fenster erzeugt kriege, es aber nicht mit einem anderen Programm identifizieren kann.

Das Fenster soll Nachrichten aus einer CommandLine-Applikation erhalten.
Bisher geh ich so vor, daß ich im CommandLine-Programm anhand des von mir festegelegten
Klassennamen und Fensternamen, mittels FindWindow, das Fenster finde und genau an dieses Fenster einen Windows-Nachricht schicke (WM_COPYDATA).

AllocateHwnd erzeugt mir ein Fenster von dem ich weder Klassennamen noch Fensternamen kenne. Ok der Klassenname steht ja in der Funktion selbst, aber der ist halt allgemein und
identifiziert mein Fenster nicht eindeutig.
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#6

Re: CreateWindow in einer DLL....

  Alt 27. Apr 2006, 12:50
Warum pluenderst du dann nicht die Delphi-Sourcen?
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#7

Re: CreateWindow in einer DLL....

  Alt 27. Apr 2006, 13:32
Hab ich jetzt gemacht, hab sie aus der Classes Unit genommen den Namen verändert und es an meine Bedürfisse angepasst.....funktioniert

Danke dir Robert

P.S.: Klassen-Prozedur muss es nicht sein, geht auch so
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  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 06:33 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