AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Dll: Funktionen erkennen

Ein Thema von Desmulator · begonnen am 15. Dez 2007 · letzter Beitrag vom 15. Dez 2007
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Desmulator
Desmulator

Registriert seit: 3. Mai 2007
Ort: Bonn
169 Beiträge
 
#1

Dll: Funktionen erkennen

  Alt 15. Dez 2007, 08:38
Hallo Leute,

also ich habe das Problem, dass, falls man dlls benutzen will, deren funktionen schon alle kennen muss, damit man sie entwerder dynamisch laden kann oder schon direkt am anfang. Ich will aber sowas sie Module machen, sodass man einfach die dll datei in das verzeichniss legt, sie geladen wird und wenn ein TcpClient ein commando sendet, soll gegukt werden, ob diese funktion in einer Dll zur verfügung steht. Dann sollen eventuelle parameter erkannt werden, damit ich diese vom Client anfordern kann...

Beispiel ( <- Server zu Client, -> Client zu Server ):

<- Ready
-> [Command]

Jetzt wird gegukt ob [Command] zurverfügung steht, wenn nicht

<- Undefined

ansonsten, falls Parameter gebraucht werdern

<- Param
-> [Param1]
-> [Param2]
-> ParamEnd

Jetzt wird die Funktion [Command] mit den Parametern [Param1] und [Param2] aufgerufen.

Ich hoffe ihr habt das jetzt verstanden^^

Naja ich suche in der Zeit auch mal weiter nach möglichkeiten...

cia
Lars
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Dll: Funktionen erkennen

  Alt 15. Dez 2007, 09:40
Ich habe noch nicht genau verstanden, was du willst.
Es ist richtig, dass du bei einer Win32-DLLs maximal die Funktionsnamen und deren Einsprungadresse bekommst. (ist übrigens bei .Net anders/besser)
Das kannst du natürlich auch bei Win32DLLs ändern indem du eine standard-Funktion implementierst, welche RTTI-mäßig dier den Ihalt der DLL erzählt.
Der zweite Teil deines Beitrags klingt, als willst du in der DLL einen TCP-Server initialisieren, der jedem Client erzählt, welche Funktionen in der DLL sind. Das auch ein schönes Konzept.

Ähm und wo war jetzt die Frage?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von Desmulator
Desmulator

Registriert seit: 3. Mai 2007
Ort: Bonn
169 Beiträge
 
#3

Re: Dll: Funktionen erkennen

  Alt 15. Dez 2007, 16:11
Ist eigendlich ganz einfach.

der Client sendet dem Server ein Command, dieser gukt, ob es in einer der zur verfügung stehenden dlls gibt. dann führt er es aus und gibt das ergbeniss zurück.

wir kann ich jedoch eine dll so auslesen, dass ich alle funktionen + parameter erhalte...

atm bin ich drauf und dran es über die RTTI methode zu machen, oder ein documentations file zumachen, der eingelesen wird
Lars
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.334 Beiträge
 
Delphi XE5 Professional
 
#4

Re: Dll: Funktionen erkennen

  Alt 15. Dez 2007, 16:48
Mit LoadLibrary kann man eine DLL laden und über GetProcAddress den Einsprungpunkt suchen. Die erforderlichen Parameter musst Du allerdings wissen und vorher unter Type deklarieren. Ergibt Assigned dann NIL, existiert Deine Funktion nicht.

Delphi-Quellcode:
Const
  szNameDLL = 'MediaInfo.DLL';

  szNameMediaInfo_Open = 'MediaInfo_Open';
  ...

Type
  TFNMediaInfo_Open = function(File__: PAnsiChar): Cardinal cdecl {$IFDEF WIN32} stdcall {$ENDIF};
  ...

var
  lib: THandle;
  MediaInfo_Open: TFNMediaInfo_Open;
  ...

Function GetEntryPoints: Boolean;

implementation

Function GetEntryPoints: boolean;
begin
  @MediaInfo_Open := NIL;
  ...

  lib := LoadLibrary(@szNameDLL[1]);
  if lib = 0
  then GetEntryPoints := False
  else begin
    GetEntryPoints := True;
    @MediaInfo_Open := GetProcAddress(lib, @szNameMediaInfo_Open[1]);
    if not Assigned(MediaInfo_Open) then GetEntryPoints := False;

    ...
  end;
end;
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Benutzerbild von Desmulator
Desmulator

Registriert seit: 3. Mai 2007
Ort: Bonn
169 Beiträge
 
#5

Re: Dll: Funktionen erkennen

  Alt 15. Dez 2007, 16:56
ja wie man läd weiß ich ja, und auch benutzt habe ich dlls schon, jedoch will ich ja auch das jeder andere einfach ein modul für das prog schreiben kann und ohne das ich davon was wissen muss...
Lars
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Dll: Funktionen erkennen

  Alt 15. Dez 2007, 16:59
Schreib dir eine Funktion in der DLL, die dir eine Liste verfügbaren Funktionen der DLL zurückgibt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.334 Beiträge
 
Delphi XE5 Professional
 
#7

Re: Dll: Funktionen erkennen

  Alt 15. Dez 2007, 17:01
Dann musst Du Deine Funktionsaufrufe definieren und die anderen ihre Funktionen entsprechend programmieren.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Benutzerbild von Desmulator
Desmulator

Registriert seit: 3. Mai 2007
Ort: Bonn
169 Beiträge
 
#8

Re: Dll: Funktionen erkennen

  Alt 15. Dez 2007, 17:02
daran habe ich schon gedacht... dann müsste allerdings jedes modul diese funktion beinhalten, aber das is immernoch besser als ne ini-datei für jede dll
Lars
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.334 Beiträge
 
Delphi XE5 Professional
 
#9

Re: Dll: Funktionen erkennen

  Alt 15. Dez 2007, 18:35
Nicht unbedingt. Du müsstest definieren, welche Funktionen enthalten sein müssen und welche enthalten sein dürfen. Dann musst Du prüfen, welche Funktion tatsächlich enthalten sind und entsprechend reagieren.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Benutzerbild von Desmulator
Desmulator

Registriert seit: 3. Mai 2007
Ort: Bonn
169 Beiträge
 
#10

Re: Dll: Funktionen erkennen

  Alt 15. Dez 2007, 18:51
es läuft alle gut, doch atm steh ich auf dem schlauch, ich brauche ein array das so aufgebaut ist

[Funktionsname] -> [DllPath]
[Funktionsname2] -> [DllPath]
[...] -> [...]

also ein array in dem steht , in welcher dll welche funktion ist, wie bekomm ich das hin,ich wette die lösung ist einfach und lag die ganze zeit vor meiner nase
Lars
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 22:12 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