Fremd DLL - Funktionsnamen abfragen
Moderator: Moderatoren
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Fremd DLL - Funktionsnamen abfragen
Hi,
bei vielen API / DLL Funktionen wird nun ja zwischen dem öffentlichen Namen und dem mit W/A Anhang unterschieden.
Also in der Doku steht GibMirString(), tatsächlich muss man aber GibMirStringA() aufrufen.
DllInfo() kann laut Doku nur die Xbase++ DLLs nach exportierten Funktionen abfragen, wie geht das bei fremden dynamischen DLLs ?
bei vielen API / DLL Funktionen wird nun ja zwischen dem öffentlichen Namen und dem mit W/A Anhang unterschieden.
Also in der Doku steht GibMirString(), tatsächlich muss man aber GibMirStringA() aufrufen.
DllInfo() kann laut Doku nur die Xbase++ DLLs nach exportierten Funktionen abfragen, wie geht das bei fremden dynamischen DLLs ?
Gruß
Hubert
Hubert
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2829
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 97 Mal
- Danksagung erhalten: 13 Mal
Re: Fremd DLL - Funktionsnamen abfragen
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Fremd DLL - Funktionsnamen abfragen
das Tool ist super, danke.
für die Integration wäre natürlich der selbst programmierte Weg besser, aber Listen lesen geht ja auch
für die Integration wäre natürlich der selbst programmierte Weg besser, aber Listen lesen geht ja auch
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21216
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Fremd DLL - Funktionsnamen abfragen
stümmt.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Fremd DLL - Funktionsnamen abfragen
Hi,
man schrieb mir, dass es keine API Funktion dafür gibt, sondern man die Tabelle der exportierten Funktionen auslesen muss.
In 2 DLL Dateien habe ich so eine gefunden direkt nach dem exacten Namen der DLL Datei. Jeweils durch chr(0) getrennt und sortiert.
man schrieb mir, dass es keine API Funktion dafür gibt, sondern man die Tabelle der exportierten Funktionen auslesen muss.
In 2 DLL Dateien habe ich so eine gefunden direkt nach dem exacten Namen der DLL Datei. Jeweils durch chr(0) getrennt und sortiert.
Gruß
Hubert
Hubert
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Fremd DLL - Funktionsnamen abfragen [erledigt]
dieser Code hat bei 3 DLL richtige Ergebnisse geliefert:
Code: Alles auswählen
PROCEDURE Main
LOCAL aF:={}, cDLLName,cDLLPfad, cBufDLL, nStart, nEnd, nLen, i := 0
cDLLName := "libxl.dll"
cDLLPfad := ""
cBufDLL := memoread(cDLLPfad+cDllName)
nStart := at(lower(cDLLName),lower(@cBufDLL))
if nStart > 0
nEnd := at(chr(0),@cBufDLL,nStart)
nLen := nEnd-nStart
? "Startwert: ",nStart, nEnd, substr(@cBufDLL,nStart,nLen)
?
? "Funktionsliste:"
do while .t.
nStart := nEnd+1
if substr(@cBufDLL,nStart,1)==chr(0) // alles eingelesen
? "---"
exit
endif
nEnd := at(chr(0),@cBufDLL,nStart)
i++
nLen := nEnd-nStart
aadd(aF,substr(@cBufDLL,nStart,nLen))
? str(i,4)+":",aF[i]
enddo
else
? "Funktionsliste wurde nicht gefunden. "
endif
? "Ende"
inkey(10)
RETURN
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Fremd DLL - Funktionsnamen abfragen
hi,
zunächst mal den Codenun nehme ich den Dependency Walker ( z.b. hier http://www.heise.de/download/dependency-walker.html ) und starte es mit dem EXE als Parameter
wie ihr am Code seht muss ich bis zum WAIT warten bis es im DW interessant wird.
wenn ich den TreeView Node LIBXL.DLL öffne erscheinen rechts die Functionen.
wenn man nun einen DblClick auf eine Function macht öffnet er den Browser und sucht bei MSDN.
zunächst mal den Code
Code: Alles auswählen
#include "DLL.CH"
PROCEDURE Main
LOCAL nDll, cCall
nDll := DllLoad( "libxl.dll" )
IF nDll <> 0
// hier stehen lassen !
WAIT
//
DllUnload( nDll )
ENDIF
RETURN
Code: Alles auswählen
depends libxl.exe
wenn man nun einen DblClick auf eine Function macht öffnet er den Browser und sucht bei MSDN.
gruss by OHR
Jimmy
Jimmy