Deutsch
Includes

MemoryModule - DLLs direkt aus Speicherberich laden

 
- Seite 1 -



Sebastian
König
Hallo zusammen,

hier mal eine Kleinigkeit zu Weihnachten Da mich jemand darum gebeten hatte, habe ich einen Code, mit dem man DLLs direkt und ohne Umweg über eine temporäre Datei aus einem Speicherbereich (der zum Beispiel von Frank Abbings Datengenerator erstellt wird) in ein Programm laden kann, von C nach XProfan übersetzt und eine Include erstellt. Da es vielleicht noch andere interessiert, poste ich es mal hier.

Die Benutzung ist wirklich sehr einfach und sollte an Hand des beigelegten Testcodes leicht nachzuvollziehen sein - ansonsten einfach fragen! Leider funktioniert es erst ab XProfan 9.0, da ich Version 8.0 manche verschachtelten long()-Aufrufe irgendwie nicht besonders mag...

Viel Spaß damit und natürlich Frohe Weihnachten!

Sebastian

32 kB
Hochgeladen:24.12.2006
Ladeanzahl303
Herunterladen
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
24.12.2006  
 



 
- Seite 2 -



Sebastian
König
So - hier ist jetzt Version 0.0.2 - veröffentlicht unter der Mozilla Public License.

Noch ein kleiner Hinweis: Für den Einsatz in fertigen Programmen lassen sich die Debug-Ausgaben sehr einfach komplett deaktivieren, indem die Print-Zeile in der Prozedur OutputStatus auskommentiert wird.

MfG

Sebastian

46 kB
Kurzbeschreibung: Version 0.0.2
Hochgeladen:30.12.2006
Ladeanzahl139
Herunterladen
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
30.12.2006  
 



Wer lieber mit Klassen arbeitet (besonders wenn man MemoryModule in PCUs verwendet wichtig) kann auch meine geänderte Version nutzen. Ist nicht dasselbe wie iF seine Klasse, benötigt also nicht unbedingt XPSE

Ist jetzt nur die Include, MemoryModule.ph wird zusätzlich noch benötigt. Anleitung gibts keine, dafür den dokumentierten angepaßten Testcode
KompilierenMarkierenSeparieren
 $I LoadDLLMem.inc
 $I TestDLL.inc
WindowTitle "MemoryModule - Test"
Cls
Klasse erstellen
Declare MM#
MM# = New(LoadDLLMem, mem#)
Dispose mem#
Declare pFunc&
pFunc& = MM#.Get("TestBox") entspricht GetProcAddressM, erster Parameter entfällt
Print "Funktion:", pFunc&
Case pFunc& <> 0 : Call(pFunc&, %hwnd, "Hallo Welt!")
MM#.Free()  entspricht FreeLibraryM, Parameter entfällt
Print
Print "Taste zum Beenden!"
WaitKey
End

Einziger Unterschied ist nur, das die Funktionen in einer Klasse gekapselt sind!

Gruß
Thomas

5 kB
Hochgeladen:07.01.2007
Ladeanzahl172
Herunterladen
 
30.12.2006  
 




Frank
Abbing
Experimentell habe ich eine XPIA-Version entwickelt, die mit den MemoryModulen arbeitet. Dabei werden die Module direkt in den Code integriert, ohne dass eine separate inc- oder ph-Datei nötig wäre. Zu finden im XPIA-Forum.
 
30.12.2006  
 



@Thomas: Ich hatte auch einen einfachen Callwrapper der Klasse hinzugefügt, ich fand den ganz praktisch ich finde den solltest Du übernehmen.
 
30.12.2006  
 



[quote:6184349714=iF]@Thomas: Ich hatte auch einen einfachen Callwrapper der Klasse hinzugefügt, ich fand den ganz praktisch ich finde den solltest Du übernehmen. [/quote:6184349714]
Die Idee ist ja nicht schlecht, aber das Get war mir wichtiger, weil nur einmal gesucht wird. Ein Call dessen Zeitvorsprung aufgrund von jedesmal suchen fehlt ist nicht das gelbe vom Ei Werde aber etwas ähnliches bei Gelegenheit noch integrieren, erhöht die Kompatibilität zu Deiner Klasse
 
30.12.2006  
 



Die Funktion war auch keinesfalls für maximale Performance gedacht, eher als Helper für Dinge bei denen es nicht ins Gewicht fällt - wie z.B. MessageBoxen etc...
 
30.12.2006  
 



Hab jetzt die Methode Call zur Klasse hinzugefügt (obiger Link)
CLASS#.Call(Funktion, P1&, P2& ... P12&)
Strings sind per Addr(Text$) zu übergeben
 
30.12.2006  
 




Sebastian
König
Update auf Version 0.0.2a

Nach einem Hinweis von Thomas Schulz (danke nochmal!) habe ich noch eine weitere Funktion eingebaut: GetInstanceM. Der Rückgabewert kann als Instanz- bzw. Modul-Handle zum Beispiel zum Laden von Resourcen aus der DLL verwendet werden.

45 kB
Kurzbeschreibung: Version 0.0.2a
Hochgeladen:07.01.2007
Ladeanzahl368
Herunterladen
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
07.01.2007  
 



Hab die Classe LoadDLLMem auch um die Methode GetHandle ohne Parameter erweitert

Gruß
Thomas
 
07.01.2007  
 



Ich habe den Eindruck, dass das leider nicht mit allen DLLs geht - liege ich da richtig?

PS: Empfehle auch hierzu ModHunter, der auch in dieser Art geladene Module listet.
 
30.03.2007  
 




Frank
Abbing
Mit welchen Dll gehts denn nicht? Mir ist bislang noch keine unter gekommen.
 
30.03.2007  
 



vlt. dlls die sich als file selbst öffnen wollen...
 
30.03.2007  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

40.468 Betrachtungen

Unbenanntvor 0 min.
Jens-Arne Reumschüssel28.05.2023
H.Brill30.04.2023
iF01.11.2020
p.specht12.06.2020
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie