Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Dll zum Löschen bzw. Ersetzen freigeben (https://www.delphipraxis.net/56005-dll-zum-loeschen-bzw-ersetzen-freigeben.html)

Nogge 30. Okt 2005 11:49


Dll zum Löschen bzw. Ersetzen freigeben
 
Hallo Community,
Ich habe mir eine DLL programmiert, auf die der Explorer zugreift, wenn ein ContextMenu mit Rechtsklick geöffnet wurde. Nachdem ich einmal solch ein PopUp-Menu aufgerufen habe, lässt sie sich nicht mehr löschen, da der Explorer immer noch für weitere Rechtsklicks die DLL geöffnet hat. Erst nach einem Neustart kann ich die Dll wieder entfernen. Ich erweitere bzw. verbessere diese Dll im mom noch häufig und möchte diese nach den Veränderungen auch sofort testen, was bisher halt nur nach nem Neustart möglich war. Weiß jemand eine Möglichkeit, wie ich eine Dll wieder so freigebe, dass sie gelöscht bzw. ersetzt werden kann?

plz help me^^

SirThornberry 30. Okt 2005 11:52

Re: Dll zum Löschen bzw. Ersetzen freigeben
 
du schreibst neustart, meinst du damit einen Rechnerneustart? Im normalfall solllte ein neu anmelden helfen bzw. das schließen des explorer-Prozesses per Taskmanager.

Nogge 30. Okt 2005 12:26

Re: Dll zum Löschen bzw. Ersetzen freigeben
 
Ja, tut mir leid, dass ich mich nicht so deutlich ausgedrückt hatte: Ich meinte einen Rechner-Neustart.
Boah, wie umständlich :roll: Es gibt also keine Möglichkeit mehr, die Dll freizugeben, wenn sie einmal in den explorer geladen wurde?

neolithos 31. Okt 2005 09:17

Re: Dll zum Löschen bzw. Ersetzen freigeben
 
Ich stelle meist die Option:
Extras -> OrdnerOptionen -> Ansicht -> Ordnerfenster in einem eigenen Process starten auf wahr.

In Delphi für die DLL:
Start -> Parameter:

Host-Anwendung: c:\windows\explorer.exe


Nebeneffekt: Man kann wie gewohnt die Anwendung Debuggen.

SirThornberry 31. Okt 2005 09:26

Re: Dll zum Löschen bzw. Ersetzen freigeben
 
eine weitere Möglichkeit wäre eine DLL dazwischen zu hängen welche die Funktion durchreicht zu der eigentlichen DLL. In der zwischen DLL könntest du somit die eigentliche DLL dynamich laden und dadurch sollte die eigentliche DLL auch zu ersetzen sein.

neolithos 31. Okt 2005 09:29

Re: Dll zum Löschen bzw. Ersetzen freigeben
 
Zitat:

Zitat von SirThornberry
eine weitere Möglichkeit wäre eine DLL dazwischen zu hängen welche die Funktion durchreicht zu der eigentlichen DLL. In der zwischen DLL könntest du somit die eigentliche DLL dynamich laden und dadurch sollte die eigentliche DLL auch zu ersetzen sein.

Find ich ehrlich gesagt etwas übertrieben, wenn man nur seine Dll-Entwickeln und Testen will. Zweitens: sowas zu Debuggen muss die Hölle sein.

SirThornberry 31. Okt 2005 09:32

Re: Dll zum Löschen bzw. Ersetzen freigeben
 
@neolithos: Es geht ja hier nicht ums debuggen sondern darum das der Explorer die DLL nicht wieder freigibt. Und wenn man ihm dann einfach die DLL weg klaut (in dem man den Prozess beendet) dann kann das auch wunderschöne Fehler hervorrufen. Soll aber nicht heißen das deine Variante schlechter ist (im Gegenteil). Es geht nur darum möglichst viele Lösungsmöglichkeiten aufzuzeigen und dann kann sich der Fragesteller die für ihn beste heraussuchen.

neolithos 31. Okt 2005 09:35

Re: Dll zum Löschen bzw. Ersetzen freigeben
 
Zitat:

Zitat von Nogge
...Ich erweitere bzw. verbessere diese Dll im mom noch häufig und möchte diese nach den Veränderungen auch sofort testen, was bisher halt nur nach nem Neustart möglich war...

Ich habe genau diesen Absatz in dem Thread #1 interpretiert.

Daniel G 31. Okt 2005 09:35

Re: Dll zum Löschen bzw. Ersetzen freigeben
 
Zitat:

Zitat von Nogge
Weiß jemand eine Möglichkeit, wie ich eine Dll wieder so freigebe, dass sie gelöscht bzw. ersetzt werden kann?

Hmm... soll das nur zum Testen sein? Dann würde ich dir ein Programm dafür empfehlen:

Unlocker

Is' eigentlich recht gut.

Nogge 5. Nov 2005 08:35

Re: Dll zum Löschen bzw. Ersetzen freigeben
 
Danke, für die verschiedenen Lösungsansätze. Ich habe das Programm "Unlocker" mal getestet, doch leider kann es die DLL nicht sofort freigeben. Erst beim nächsten Start von Windows sei es möglich, die DLL zu löschen.
Ich möchte natürlich die DLL nach meinen Code-Optimierungen später auch nutzen, dann wäre es mir egal, dass die DLL in Benutzung ist. Doch bis dahin möchte ich meine Veränderungen im Code halt sofort auf Bugs usw. testen können.
@SirThornberry: Deine Variante wäre grundsätzlich eine Möglichkeit, jedoch benutze ich diese DLL für das Hinzufügen einiger Einträge in das ContextMenu des Explorers, der eine bestimmte Struktur innerhalb der DLL voraussetzt. Da kann ich doch keine DLL zwischenlegen, oder?


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:26 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz