![]() |
Re: Dll von *.res Datei laden
Zitat:
Bin auch nicht so pingelig.. Meine Datei ist die BassVis welche von Developern im Forum von Un4Seen in deren projekte eingebunden wird um verschiedene arten von Visualisations Plugins auszuführen. Ich will denen nicht zumuten sich mit dieser zusätzlichen DLL rumzuschlagen deshalb will ich allen eventualitäten vorbeugen. Die müssen ja nicht wissen das in BassVis noch ne DLL versteckt ist. auch wenn man es jetzt weiss. Zitat:
ist lediglich ein Wasabi Wrapper für die neuen Winamp Plugins der code in c++ läßt sich leider in Delphi wegen der Classen nicht übersetzen .. aber eagl gruss EMil |
Re: Dll von *.res Datei laden
Zitat:
Zitat:
Zitat:
Wenn du sie unbedingt aus der Ressource laden willst, dann dürftest du wesentlich mehr Probleme unter Vista bekommen, als wenn du sie ins temporäre Verzeichnis entpackst. Du kannst dir ja mal Nicos Code angucken, wie er eine Exe aus den Speicher ausführt: ![]() |
Re: Dll von *.res Datei laden
Zitat:
Es sind halt undokumentierte Wasabi Funktionen enthalten die ich mir mühsam erarbeitet habe. Bei offenlegung der DLL kann sie jeder für seine zwecke nutzen nur dafür habe ich mir nicht die mühe gemacht. In verbindung mit BassVis kein problem solange sie nur dort verwendet wird. Nicht mal im Forum von Winamp wollte man mir helfen.. :wall: Denke alleine das ist ein grund diese nicht publik zu machen. Werde mir das Sample mal anschauen .. Danke gruss Emil |
Re: Dll von *.res Datei laden
Wenn du wirklich nur die Funktionen brauchst und nicht die Load und Unload Events
dann könnte ich mir vorstellen das du darauf zugreifen kannst. Du müstest vorher die relativen Adressen der Funktionen mit GetProcAddress ermitteln und notieren. Dann die Res in den Stream laden und die Proceduralen variablen mit den entsprechenden Zeigern belegen. Ich weiß nicht ob das bei DLLs funktioniert aber mit *.com Dateien (kein Datenregister) konnte man sowas früher machen. Und du wirst bei solchen Actionen (s. inmemexe.exe) auf jedenfall probleme mit Virenscannern bekommen. Mein Kasperski meckert einen heur.Trojan.generic an bei Michaelpuffs inmemexe und heutzutage verzichtet kaum ein Scanner auf heuristic. Tatsächlich willst du ja Daten als Code ausführen...das ist das verhalten eines Virus. Vielleicht hilft es Dir die Datei nicht nur im $TempDir abzulegen sondern auch ein flag zu setzen dem Zufolge die Datei beim Schließen vom Betriebssystem gelöscht wird...das macht zwar auch probleme mit Virenscannern.... |
Re: Dll von *.res Datei laden
Zitat:
habe da, glaube ich das richtige gefunden vielleicht ist es auch für andere ganz interessant ![]() This tutorial describes a technique how a dynamic link library (DLL) can be loaded from memory without storing it on the hard-disk first. genau das was ich erreichen will. gruss Emil |
Re: Dll von *.res Datei laden
Auch wenn es gehen mag, halte ich das für den falschen Weg. Zum einem, weil es wohl undokumentiert ist, das heißt, du musst bei jedem Update prüfen, ob es noch funktioniert und das bei zich Systemen und Konfigurationen. Du wirst also nie sicherstellen können, dass es läuft. Und zum anderem wird jemand der an die Funktionen will und deine Exe debuggt, sehr schnell sehen, was Sache ist und hat sich deine DLL ohne weiteres aus der Ressource mit einem Resourcenhacker extrahiert.
Zitat:
|
Re: Dll von *.res Datei laden
Zitat:
werde es erstmal ausgibig testen davon abgehen kann ich immer noch. muss mich mal informieren ob das den Leuten genehm ist wenn sie 2 DLL's bekommen gruss Emil |
Re: Dll von *.res Datei laden
Zitat:
|
Re: Dll von *.res Datei laden
hab mich jetzt entschieden..
Mache es wie cruiser vorgeschlagen hat. aus resource extrahieren Attribute auf hidden , dann nach Anwender /Lokale Einstellungen/temp Beim beenden dll löschen (was es nicht immer tut (Zugriff verweigert) --------- Eigentlich müßte das gehen DLL (Winamp Plugin) wird entladen in "Finalize" der letzte aufruf bevor BassVis geschlossen wird mit DeleteFile zum Pfad der extrahierten dll diese löschen.. dürfte eigentlich kein zugriff mehr sein. gruss Emil |
Re: Dll von *.res Datei laden
Uwe sagt mir das ich eine *.obj Datei in Delphi einbinden kann
Nun habe ich diese dem Projekt hinzugefügt als Meldung kommt [Pascal Error] Winamp_IO.pas(138): E2045 Bad object file format: GetAPIService.obj'
Delphi-Quellcode:
jetzt frage ich mich ob es daran liegt das sie mit MSVC erstellt wurde..
{$MINENUMSIZE 4}
{$ALIGN ON} {$L GetAPIService.obj} jemand irgendwelche informationen darüber warum es nicht geht ? bzw.. geht es theoretisch wenn ich diese mit Borland c++ erstelle und compiliere.(müßte dann erst noch installieren) Das wäre denke ich die optimale lösung für mein DLL problem gruss Emil |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz