X11 Beta: ImportFunc und Win98



X11 Beta: ImportFunc und Win98

Nico Madysa, 04.04.2008 21:02: Wie Dietmar und ich gerade festgestellt haben, funktioniert ImportFunc (und demnach wohl auch ImportDLL) nicht unter Windows 98. Ich habe in einem Programm GetStockObject und GetVersionEx mittels ImportFunc definiert zur Exe verlinkt. Unter Windows 98 kam dann jedes Mal die Fehlermeldung "Funktion nicht gefunden" (oder ähnlich) Mit Def hat alles funktioniert.
Das Problem trat wohl schon in allen Betaversionen seit der Einführung von ImportFunc auf.
Gruss Nico


David Strutz, 04.04.2008 21:03: Die Exe und genaue Betaversion?


Dietmar Horn, 04.04.2008 21:33: Hier spricht Nico:
Das Problem besteht meines Wissens schon von Anfang an, bei RC2 definitiv auch noch. Eine nicht-funktionierende Exe ist hier angehängt.

NMotizzettel.zip


RGH, 04.04.2008 21:39: Also ImportFunc sollte auf jedem Rechner laufen, da hier im Grunde nichts anders gemacht wird, wie bei DEF, aber eben schon bei ImportFunc und nicht erst beim Aufruf: Die Adresse wird mit der API GetProcAddr ermittelt. Das ging sogar schon unter 16 Bit (Windows 3.x und früher),
Aber was ImportDLL betrifft, sehe ich gerade in der API-Hilfe:
"Redistributable: Requires DbgHelp.dll on Windows NT 4.0 and Windows Me/98/95."
Mit anderen Worten: Vor Windows XP/Vista wird für diese Funktion die Dll "DbgHelp.dll" benötigt.
Dese DLL kann man sich bei Microsoft herunterladen und ins System32-Verzeichnis von Windows kopieren. Da es etliche Programme gibt, die diese benötigen und installieren, ist es durchaus möglich, dass das Problem nicht auf allen älteren Windowsrechnern besteht.
Natürlich werde ich diesen Hinweis mit in die Hilfe aufnehmen.
Aber wie gesagt: ImportFunc sollte funktionieren. Bringe mal einen Beispielcode (Quellcode, nicht EXE),, der bei Dir Probleme macht, damit ich das dann mal unter Win98 testen kann.
Gruss
Roland


Nico Madysa, 04.04.2008 22:00: 

var hDLL& = UseDLL("USER32")
ImportFunc(hDLL&,"SetCursorPos","")
SetCursorPos(120,120)
print "Dies ist ein Test!"
FreeDLL hDLL&
waitinput
end
Sogar im Interpreter (RC2) Fehlermeldung "Funktion unbekannt: SetCursorPos"


RGH, 04.04.2008 22:52: Zu ImportFunc:
Fehler gefunden und korrigiert!
Das lag nicht primär an der Windowsversion, sondern an einer falschen Überprüfung einer gültigen Adresse: Im Bereich bis ca. 2 Mia gings gut, darüber eben nicht. Jetzt geht's im ganzen Adrssraum!
Danke für die Meldung!
Gruss
Roland


Nico Madysa, 04.04.2008 23:03: Gern geschehen, Dietmar wird sich freuen.


Jac, 05.04.2008 08:13: Heisst das jetzt, dass wir die DLL trotzdem benötigen oder nicht mehr?


RGH, 05.04.2008 10:41:   Zitat von ""Jac"": „Heisst das jetzt, dass wir die DLL trotzdem benötigen oder nicht mehr?
Für ImportFunc definitiv nicht, für ImportDLL möglicherweise* ja!
Gruss
Roland
*Da diese DLL mit mancher Software mitinstalliert wird, kann nicht ausgeschlossen werden, dass sie auch auf einem Win9x/NT/2000-System schon da ist. Unter XP und Vista ist sie definitiv immer dabei.
Wenn sie fehlt, einfach bei Microsoft downloaden (DLL-Name als Suchbegriff eingeben) und ins System32-Verzeichnis kopieren.


Jac, 05.04.2008 15:11: Vielleicht kannst du die DLL ja der CD beilegen und es auch in der Hilfe erwähnen.


Jac, 06.04.2008 10:22: Laut M$ ist die DLL auch schon in Windows 2000 enthalten.


Dies ist die Offlinevariante vom Thread [X11 Beta: ImportFunc und Win98].

Valid CSS!

©2006 XProfan.Com