AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi In Service-Anwendung dynamisch DLL laden
Thema durchsuchen
Ansicht
Themen-Optionen

In Service-Anwendung dynamisch DLL laden

Ein Thema von gmc616 · begonnen am 27. Feb 2008 · letzter Beitrag vom 28. Feb 2008
 
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#1

In Service-Anwendung dynamisch DLL laden

  Alt 27. Feb 2008, 12:23
Hallo DP,

irgendwie stehe ich auf dem Schlauch.
Ich versuche eine Service-Anwendung zu schreiben, die dynamisch eine DLL lädt.

Frage 1: Das sollte doch funktionieren, oder?

hierfür habe ich mir eine Klasse gebastelt:
Delphi-Quellcode:
type
  TFN_fInit = function (ADocID : integer) : boolean; Stdcall;

  TDynDll = Class (TObject)
  private
    FDllHandle : Integer;
    Finit : TFN_fInit;

  public
    Constructor Create (ADllFilePath : string);
    
  end;

[...]

constructor TDynDll.Create(ADllFilePath: string);
var
  bErr : boolean;
begin
  bErr := false;
  if FileExists (ADllFilePath) then
  begin
    FDllHandle := loadLibrary(pchar(ADllFilePath));

    if FDllHandle <> 0 then
    begin
      FInit := GetProcAddress(FDllHandle,'fInit'); // <-- hier knallts in DLL laut Debugger

    end
    else
      bErr := true;

  end else
    bErr := true; // <-- Hier laut EurekaLog
end;
Nutze ich diese Klasse um meine Dll zu laden in einer normalen Win32-Anwendung, funktioniert es wunderbar.
Benutze ich diese Klasse in meiner Service-Anwendung, knallts es mit einer AV auf der Zeile FInit := GetProcAddress(FDllHandle,'fInit'); laut Debugger.
Eurekalog gibt mir allerdings die letze Codezeile vom TDynDll.Create als Fehlerstelle an. Das finde ich eigenartig.



Frage 2: Gibts es irgend etwas zu beachten beim dynamischen laden von DLLs in Service-Anwendungen?


Ich nutze die für die Service-Anwendung die TService-Klasse aus SvcMgr.pas, die mir die Delphi7-IDE anbietet.
Das ganze soll als Interaktiver Dienst laufen im Lokalen Systemaccount.
In der DLL wird ein ActiveX geladen, aber erst wenn ich es rufe.

Hab ich was übersehen oder vergessen oder überlesen?

Grüße
gmc
  Mit Zitat antworten Zitat
 


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 07:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz