Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Handle eigener DLL bei Initialisierung (https://www.delphipraxis.net/158717-handle-eigener-dll-bei-initialisierung.html)

EWeiss 28. Feb 2011 09:21


Handle eigener DLL bei Initialisierung
 
Wie ich das Handle übergeben kann ist klar nur wie bzw ,welches ist das
wenn der User meine DLL initialisiert über eine Funktion ähnlich diese..

Delphi-Quellcode:
function SK_AERO_INIT: HWND; stdcall;

fällt mir im moment nicht ein ;) Sorry

Ist das hInstance???

Delphi-Quellcode:
function SK_AERO_INIT: LRESULT; stdcall;

implementation

function SK_AERO_INIT: LRESULT; stdcall;
begin
  result := hInstance;
end;

gruss

himitsu 28. Feb 2011 09:46

AW: Handle eigener DLL bei Initialisierung
 
Ja.

Vergleich doch einfach mal HInstance mit GetModuleHandle('deine.dll').

EWeiss 28. Feb 2011 09:54

AW: Handle eigener DLL bei Initialisierung
 
Zitat:

Zitat von himitsu (Beitrag 1084812)
Ja.

Vergleich doch einfach mal HInstance mit GetModuleHandle('deine.dll').

Danke!
Sorry wenn das eine dumme frage war aber ich war mir jetzt nicht sicher.

gruss

himitsu 28. Feb 2011 10:11

AW: Handle eigener DLL bei Initialisierung
 
Macht nix.

HInstance ist quasi einfach nur eine Variable, welche bei Initialisierung eines Modules (DLL oder EXE) mit dem Handle des Modules (LoadLibrary/GetModuleHandle) befüllt wird.

Aktuell (seit WinNT) stimmt das das "zufällig" mit
Delphi-Quellcode:
{$IMAGEBASE $xxxxxxxx}
überein (falls die EXE/DLL nicht verschoben werden mußte.

EWeiss 28. Feb 2011 12:45

AW: Handle eigener DLL bei Initialisierung
 
Delphi-Quellcode:
  procedure LibraryProc(Reason: integer);
  begin
    case (Reason) of
      DLL_PROCESS_ATTACH:
      begin
        //
      end;
      DLL_PROCESS_DETACH:
      begin
        //
      end;
    end;
  end;
Kann oder btw.. muss ich meine Anwendung also die EXE die meine DLL verwendet
mit der Libraryproc iniziieren?

Hab da im moment ein problem eine Classe zu erstellen innerhalb der DLL

SKAERO_InitSkin..

In der EXE
Delphi-Quellcode:
SKAERO_InitSkin(hMain, 'Sample.ske');


In der DLL
Delphi-Quellcode:
function SKAERO_InitSkin(hMain: HWND; ConfigFile: string): BOOL; stdcall;
begin
  Result := SkinEngine.InitSkin(hMain, ConfigFile);
end;

Soll meinen Skin einladen und an dem Handle hMain übergeben.
Irgendwo hängt es .

Delphi-Quellcode:
function TSkinEngine.InitSkin(hMain: HWND; zConfigFile: string): BOOL;
var
  wExePath:      string;
  zTip:          PAnsiChar;
  ImageFile:     PAnsiChar;
  rc:            TRect;
  x, y:          integer;
  CloseButton:   TSkinImageButton;
  RestoreButton: TSkinImageButton;
  MaximizeButton: TSkinImageButton;
  MinimizeButton: TSkinImageButton;

begin

  // Speichere das HauptFenster Handle
  MainWindow(hMain);
  // ermittle die Fenster größe
  GetClientRect(hMain, rc);
  // erstelle die Class TSkinConfig
  FConfig := TSkinConfig.Create;

kann das mit der LibraryProc zu tun haben?

Delphi-Quellcode:
FConfig := TSkinConfig.Create;

Kann ich nicht auflösen einzige Meldung zu viele aufeinanderfolgende Fehler.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:38 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