Seite 1 von 5

PureDLLHelper Windows 1.2 (x86 and x64)

Verfasst: 28.01.2011 01:26
von ts-soft
12.02.2012
Update
Bugfixrelease

02.02.2011
Update
Erkennung der Anzahl an Parametern bei StdCall DLLs
verbessert.

29.01.2011
Update
+ Speichern von Source
+ Speichern und laden von Project
+ Erkennung von x86 und x64
+ diverse Kleinigkeiten geändert
+ viele Fehler beseitigt

Im download befinden sich die x86 und x64 Version für Windows.

Bilder sagen mehr als 1000 Worte:
Bild
Bild
Bild

Download

Ich hoffe, Ihr habt Spaß und seid mir nützlich beim Bughunting :mrgreen:

Gruß
Thomas

Re: PureDLLHelper Windows (z. Zeit Alpha Test)

Verfasst: 28.01.2011 02:10
von TomS
MSCTFIME UI: PureDLLHelper_x68.exe - Systemfehler hat geschrieben:Das Programm kann nicht gestartet werden, da FTD2XX.dll auf dem Computer fehlt. Installieren Sie das Programm erneut, um das Problem zu beheben.
Diese Fehlermeldung kommt zweimal, ehe sich das Fenster öffnet.
Allerdings wird auch nichts angezeigt im ListView-Gadget.

Die FTD2XX.dll wird bei der zu öffenden DLL (DMX4ALL.dll) mitgeliefert liegt im gleichen Verzeichnis, wie die zu öffnende Dll (DMX4All.dll). Das kopieren in ein Verzeichnis im "Path" z.B. C:\windows\system32\ hat auch nicht geholfen.

Da diese DLL zum Ansteuern eines USB-Devices verwendet wird, ist es möglich, dass die nicht gefundene DLL als Treiber fungiert (kann ich momentan nicht testen, da ich die Hardware nicht griffbereit habe und die Treiber als einzelne Dateien vorliegen ohne Installer) und die DLL schon beim laden darauf zu greifen will?
Zur Benutzung des USB-Gerätes muss man nur die dmx4all.dll laden, weshalb ich der FTD2XX.dll nie Beachtung geschenkt habe.
Falls das irgendjemandem hilft: Hier kann man die Treiber und die DLLs inkl. Sourcen herunterladen: http://www.dmx4all.de//DMX4ALL-PC-Inter ... ce::1.html

Ansonsten funktioniert das Laden von irgendwelchen Windows-DLLs und auch der Code-Generator scheint zu funktionieren.

Re: PureDLLHelper Windows (z. Zeit Alpha Test)

Verfasst: 28.01.2011 02:20
von ts-soft
Danke für die Fehlermeldung :D

Ich setze jetzt immer den Pfad zur DLL als aktuelles Verzeichnis, kannst Du bitte mal testen ob es jetzt
funktioniert?

Gruß
Thomas

Re: PureDLLHelper Windows (z. Zeit Alpha Test)

Verfasst: 28.01.2011 02:45
von TomS
Jetzt funktioniert es :)
Aber nur wenn die DLL im gleichen Verzeichnis liegt. Wenn sie nur im "Path" liegt, klappt's nicht.
Wird wohl ne Einschränkung von Windows sein (dachte, es wird automatisch im "Path" nachgesehen, wenn im gleichen Verzeichnis nichts gefunden wird...)

Jetzt noch etwas, was mir aufgefallen ist. In der Doku zur DLL steht
Es werden zwei Funktionsgruppen von der DLL bereitgestellt, die sich durch ihre
Definition unterscheiden. Die Funktionen mit „__“ beginnend sind mit __stdcall
aufzurufen. Funktionen ohne „__“ in der Bezeichnung besitzen keine definierte
Aufrufkonvention und sind aus Kompatibilitätsgründen weiterhin enthalten.
Aber dein Programm zeigt auch bei den __-Funkionen sdtcall an.
Ist das der Defaultwert bei dir (falls nix anderes gefunden wird)?

Re: PureDLLHelper Windows (z. Zeit Alpha Test)

Verfasst: 28.01.2011 02:54
von ts-soft
TomS hat geschrieben:Aber dein Programm zeigt auch bei den __-Funkionen sdtcall an.
Ist das der Defaultwert bei dir (falls nix anderes gefunden wird)?
Diese Angabe bezieht sich ja nur auf den Hersteller und hat keine allg. Gültigkeit.
Die Conventionen werden pauschal auf STDCALL (unter x64 auf FASTCALL) gesetzt.
Wenn ich nur 0 Parameter oder keine Auskunft finde, ist es oft CDECL, aber darauf
kann ich mich nicht verlassen.
Ein klick im Header invertiert die Einstellung!

So das man nichts mehr Einstellen braucht, so gut wird es wohl nicht werden können.
Conventionen sind zu setzen und die Anzahl Parameter immer zu prüfen!

Ich kämpfe im moment aber mit den blöden Resourcen :mrgreen:

Danke fürs Feedback.

Re: PureDLLHelper Windows (z. Zeit Alpha Test)

Verfasst: 28.01.2011 04:09
von TomS
ts-soft hat geschrieben:Ein klick im Header invertiert die Einstellung!
Oha. Jetzt wird überall CDECL anzeigt^^
ts-soft hat geschrieben:...die Anzahl Parameter immer zu prüfen!
Was meinst du damit? Dass die Werte, die dein Programm liefert nicht stimmen müssen? Es zeigt nämlich immer mindestens 1 an, auch wenn eine Funktionen keinen Parameter erwartet. Aber nur bei der o.g. DLL.
Bei verschiedenen Windows DLLs steht immer mal wieder 0 da.

Re: PureDLLHelper Windows (z. Zeit Alpha Test)

Verfasst: 28.01.2011 04:30
von ts-soft
TomS hat geschrieben:Was meinst du damit? Dass die Werte, die dein Programm liefert nicht stimmen müssen?
So sieht es aus! Ich versuche zwar noch etwas mehr Zuverlässigkeit einzubauen, aber ...
Mit CDECL und FASTCALL versagt das ganze sowieso. Aber ich denke es wird trotz allem nützlich sein :wink:

Re: PureDLLHelper Windows (z. Zeit Alpha Test)

Verfasst: 28.01.2011 08:13
von RSBasic
Hab zwar noch nicht getestet, aber sieht vielversprechend aus :D

Re: PureDLLHelper Windows (z. Zeit Alpha Test)

Verfasst: 28.01.2011 08:44
von DrShrek
Hallo ts-soft,
Feine Sache! Was ich mir noch wünsche:

1) Source Pfad sollte (optional) noch mit angegeben werden können (und automatisch ausgewertet)
=> Oder alternativ: der Funktionsaufruf mit den Parametern von Hand eingetragen werden können.

Vorteil: Das Prototypen wäre sprechender und der Returnwert wäre mit angegeben.
Also statt:

Code: Alles auswählen

Prototype  aFunktion(a, b, c, d, e)
so etwas:

Code: Alles auswählen

Prototype.b  aFunktion(Window.l, Body$, Title$, Flags.l = 0)
2) Das gleiche gilt für Strukturen (siehe 1) und sehr schön wäre es wenn diese automatisch in PureBasic Strukturen umgewandelt werden)


Wichtig:
Wenn die Funktionen/Strukturen von Hand angepasst werden, sollten diese gespeichert werden (nicht das die Arbeit umsonst war, wenn das ganze nicht in einen Rutsch angepasst wurde). Beim Laden der DLL sollten dann die gespeicherten Werte wieder mit angezeigt werden um daran weiterarbeiten zu können.

DrShrek

Re: PureDLLHelper Windows (z. Zeit Alpha Test)

Verfasst: 28.01.2011 09:02
von Helle
Beim Frühstück kurz mit Win7_64 angeschaut: Mit der x86.exe funktionierts, aber mit x64: "0 of 0 functions selected!". Keine Funktion wird angezeigt.
Gruß
Helle