TC Vista 64 bit Kontextmenü

German support forum

Moderators: white, Hacker, Stefan2

Post Reply
ceeboks
Junior Member
Junior Member
Posts: 51
Joined: 2007-03-26, 05:17 UTC

TC Vista 64 bit Kontextmenü

Post by *ceeboks »

hallo allerseits

hoffe ich nerve nicht, aber ein paar sachen sind mir doch noch unklar bei der win64 bit kontextmenü problematik....
ausgangspunkt ist, dass ich unter vista 64 auch im tc im kontextmenü die beiden einträge des dbpoweramp, Convert To und Edit ID-Tags, gerne zum anklicken hätte.
der windows-explorer zeigt sie an und der tc nicht.
das soll daran liegen, wie bei einigen posts zu lesen, dass der explorer ein 64 bit programm ist wohingegen der tc in 32 bit delphi programmiert ist.
was ich dabei nicht verstehe ist, dass von anderen programmen, zb hkSFV, kontextmenüeinträge im tc angezeigt werden die wiederum im 64bit-explorer nicht auftauchen.
da der dbpoweramp im tc unter xp 32bit die beiden kontextmenüs anzeigte, hat er doch offensichtlich 32bit module....warum funktioniert er dann nicht auch unter vista64 im 32bittigen tc?
gibt's da nicht doch noch eine irgendwie andere ne möglichkiet diese beiden kontextmenüeinträge im tc zu aktivieren?

dank schonmal im vorab
ceeboks
User avatar
HolgerK
Power Member
Power Member
Posts: 5406
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

Es dreht sich hier um sogenannte Shell-Extensions.
Das sind COM-DLL's die im Prozess des aufgerufene Programms geladen werden.
Das klappt immer dann, wenn sowohl der Prozess (die EXE) als auch die DLL für das gleiche Zielsystem übersetzt wurden.

Also (EXE / DLL)
32 / 32 -> OK
64 / 64 -> OK
32 / 64 -> geht nicht
64 / 32 -> geht nicht
! 32 und 64 Bit Implementierungen können nicht im gleichen Prozess laufen !

Der 4te Fall könnte erklären warum hkSFV im TC sichtbar ist, aber im Explorer nicht angezeigt wird. Das ist wahrscheinlich ein 32-Bit Programm, das eine 32Bit-Shell-Extension registriert.
-> Klappt dann eben im 64-Bit Explorer nicht.

Stichwort registrieren:
Das ist der Vorgang (vereinfacht) mit dem eine Shell-Extension (oder allgemein ein COM-Server) Informationen in die Registry einträgt:
- die Art und Weise wie er geladen werden soll/kann
- welche Schnittstellen er implementiert
- und zu welcher Dateiextension ein Kontexmenueintrag erzeugt werden soll.

Diese Registrierung kann man auch manuell mittels eines Kommandozeilenaufruf:

Code: Select all

regsvr32 NAME.dll
durchführen. (Dabei sollte man wohl möglich einen Kommando-Prompt als Administrator gestartet haben).

Wenn Du Glück hast wird bei einem Programm-Setup neben der 64Bit-Shellextension auch die 32Bit-Shellextension installiert.
Dann reicht es evtl. aus, diese zusätzlich zu registrieren.
Oder es gibt einen zweiten Setup des Programms für 32Bit System, den Du parallel zum 64Bit Setup (darauf achten das ein anderes Zielverzeichnis gewählt wird) installieren kannst.

Häufig machen solche Shell-Extensions nichts anderes, als das eigentliche Programm (egal ob 32 oder 64Bit) mit einem Übergabeparameter und dem Namen einer Datei aufzurufen (das geht wiederum auch von 32 nach 64 Bit oder umgekehrt, da die EXE als eigener Prozess gestartet wird s.o.).
Wenn die Übergabeparameter bekannt sind (in der Hilfe zum Programm nachschauen), kann man sich im TC also auch recht einfach einen Button oder ein Usermenu bauen, um die Funktion zu erhalten. Das ist dann allerdings nicht kontextsensitiv.

Man kann sich auch eigene Kontextmenues (für TC und Explorer) bauen, indem man z.B. einen Eintrag in die Registry editiert (Beispiel um TC und UV im Kontextmenu von jedem File anzeigen zu lassen):

Code: Select all

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*]

[HKEY_CLASSES_ROOT\*\shell]

[HKEY_CLASSES_ROOT\*\shell\Open in Total Commander]

[HKEY_CLASSES_ROOT\*\shell\Open in Total Commander\command]
@="c:\\Tools\\totalcmd\\totalcmd.exe /O  /L=\"%1\""

[HKEY_CLASSES_ROOT\*\shell\Universal Viewer]

[HKEY_CLASSES_ROOT\*\shell\Universal Viewer\command]
@="\"C:\\Tools\\Universal Viewer\\Viewer.exe\" \"%1\""
- * ist die File-Extension zu der das Kontextmenu angezeigt werden soll (z.B. ".iso");
- "Open in Total Commander" ist der String, der im Kontextmenu angezeigt wird;
- und unter "command" wird die Kommandozeile zum Programmaufruf inklusive Übergabeparameter eingetragen.

Das lässt sich mit bekannten Parametern sinngemäß auch auf andere Programme übertragen.

Anders liegt der Fall wenn die komplette Funktion direkt in der Shellextension-DLL implementiert ist (also ein reines 64Bit Programm).
Dann sollte es allerdings meistens auch einen gesonderten 32-Bit Setup geben, den man parallel installieren kann.

Falls es nur einen einzelnen Setup gibt, der beide Versionen (32 und 64Bit) enthält, und automatisch nur die Version installiert, die zum Zielsystem passt, führt kein Weg daran vorbei den Hersteller anzuschreiben.
Das ist letztendlich auch im Nutzen des Herstellers, da solche Shellextensions z.B. auch aus den „File Open“ Dialogen von 32-Bit Programmen nicht aufgerufen werden können.

Alle Klarheiten beseitigt? :wink:

Mit freundlichem Gruß,
Holger

PS: Um es gleich vorwegzunehmen: Obwohl meine Initialen HK sind, habe ich nichts mit hkSFV zu tun. :wink:
ceeboks
Junior Member
Junior Member
Posts: 51
Joined: 2007-03-26, 05:17 UTC

Post by *ceeboks »

boah, wollte grad gucken, ob ich meinen post nachträglich editieren kann um nach ner möglichkeit zu fragen, in der registry ein bisschen rumzuschrauben....
und ist schon da so eine umfassende antwort da.....danke!!

werd mal schauen was sich mit einträgen in den von dir genannten schlüsseln tun lässt.

mit ebenso fg
ceeboks
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48088
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

2HolgerK
Danke für die schöne Erklärung!

2ceeboks
Oft hilft es, zusätzlich zur 64-bit-Version noch die 32-bit-Version des Programms zu installieren, zu dem die Shellerweiterung gehört. Das geht z.B. bei Tortoise-SVN.
Author of Total Commander
https://www.ghisler.com
ceeboks
Junior Member
Junior Member
Posts: 51
Joined: 2007-03-26, 05:17 UTC

Post by *ceeboks »

ja, dank an holger auch von mir nochmal.

registry-schrauben hat natürlich nix gebracht, war ja zu vermuten.
ich hab mal im dbpoweramp-forum zu dem problem angefragt.
der 'spoon' was wohl der entwickler ist, kam zu dem schlichten ergebnis:
'A 32 bit process cannot load a 64 bit dll'.
hört sich gut an, aber so ganz will ich laie es doch nicht einsehen...schliesslich muss es eine 32 bit dll beim dbpoweramp ja auch geben, dbpoweramp läuft ja unter nem 32 bit os im tc....
aber holger hatte das problem ja auch so beschrieben, wird wohl ohne delphis mittun nicht gehen.

> Oft hilft es, zusätzlich zur 64-bit-Version noch die 32-bit-Version des
> Programms zu installieren, zu dem die Shellerweiterung gehört. Das
> geht
> z.B. bei Tortoise-SVN.

tja, da gibt's nur leider keine separate 32-bit-version des programms.
schon vertrackt....die meinen, der schwarze peter liegt bei denen, und denen meinen, er liegt aber doch bei den anderen....

naja, irgendwann bringt delphi ne 64 bit variante raus und dann gibt's irgendwann nen 64 bit commander.
hoffe ich erleb's noch :-))


happy programming everywhere
ceeboks
User avatar
HolgerK
Power Member
Power Member
Posts: 5406
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

ceeboks wrote:...schliesslich muss es eine 32 bit dll beim dbpoweramp ja auch geben, dbpoweramp läuft ja unter nem 32 bit os im tc....
Das wäre keine Problem, wenn der Setup sich nicht selbständig für die 64bittige Installation entscheiden würde. :(
Dann hätte man wenigstens als "Explorer nur mit der Zange anfassender... / TC bereits im Autostart maximiert startender..." Benutzer die Wahl, es so einzurichten, dass die Kontextmenuerweiterungen dort auftaucht wo man sie am meisten braucht.

Wenn Du experimentierfreudig bist, und noch ein 32Bit XP griffbereit hast, dann kannst Du ja mal folgendes ausprobieren:
1) dBPowerAmp unter 32Bit XP Installieren.
2) :!: Unter Vista 64 einen Wiederherstellungspunkt setzten (für den Fall der Fälle) :!:
3) dBShell.dll aus dem 32Bit XP als dBShell32.dll in das Installationsverzeichnis unter Vista64 kopieren, und dort mit regsvr32 registrieren (am besten aus der Kommandozeile des TC (als Admin!)).

Keine Garantie ob das klappt, aber ein Versuch kann ja eigentlich nicht allzuviel schaden.
Zur Not eben auf den Wiederherstellungspunkt zurückgreifen.
:!: Vorsicht: Falls das XP auf dem gleichen Rechner wie Vista installiert ist (Bootmenu), werden bei jedem Starten von XP die Vista Wiederherstellungspunkte und die "vorhergehenden Versionen" von Dateien gelöscht. :!:
XP kennt nichts von Vista, und beide Systeme teilen sich in diesem Fall die "System Volume Information" Verzeichnisse.
tja, da gibt's nur leider keine separate 32-bit-version des programms.

Zumindest die ältere Version 11 aus dem Jahre 2004 wird wahrscheinlich noch rein 32bit sein.
http://www.hitsquad.com/smm/programs/dBpowerAMP_Music_Converter/
Ob sie konfliktfrei neben der aktuellen Version installiert werden kann, weiß ich allerdings nicht.
schon vertrackt....die meinen, der schwarze peter liegt bei denen, und denen meinen, er liegt aber doch bei den anderen....
Nun, damit muß man rechnen, wenn man auf eine neue, noch nicht so weit verbreitete Technologie setzt (Vista64).
Glaub ja nicht, dass da nur die Anwender von betroffen sind.

Jeder Hersteller muß da für die Merhheit seiner Kunden Präferenzen setzten.

Bei dBPowerAmp ist die Basis dafür wahrscheinlich "mehr als 95% unserer Anwender benutzen den Explorer".
Zwicken tut's da allerdings auch, da es auch unter Vista64 einen 32Bit Explorer gibt, und unzählige 32Bit Programme eben auch 32Bit Explorerfunktioen ("Datei öffnen"-Dialoge) benutzen.

Beim TC würde es dann bei der Kompatibilität zu vorhandenen Plugins krachen (neben dem Problem mit dem fehlenden 64Bit-Delphi Compiler).

Und im Grunde genommen brauchen weder TC noch dBPowerAmp für die Grundfunktionen eine 64Bit Implementierung.

Mit freundlichem Gruß,
Holger
ceeboks
Junior Member
Junior Member
Posts: 51
Joined: 2007-03-26, 05:17 UTC

Post by *ceeboks »

Zumindest die ältere Version 11 aus dem Jahre 2004 wird wahrscheinlich noch rein 32bit sein.
http://www.hitsquad.com/smm/programs/dBpowerAMP_Music_Converter/
Ob sie konfliktfrei neben der aktuellen Version installiert werden kann, weiß ich allerdings nicht.
...klappt nicht, keine kontexte nirgendwo, nicht im tc und auch nicht im explorer.
3) dBShell.dll aus dem 32Bit XP als dBShell32.dll in das Installationsverzeichnis unter Vista64 kopieren, und dort mit regsvr32 registrieren
werd ich ausprobieren.
wahrscheinlich "mehr als 95% unserer Anwender benutzen den Explorer"
.....kann doch garnicht sein. wer benutzt denn noch so'n schlappen dateimanager wie den explorer? :-)

btw bei nem ein anderem ersatz-dateimanager, in der 64 bittigen version, funktionierts mit den kontextmenüs. war ja klar, die 64ger version ebend.

nur.....
der tc gefällt mir besser.

ceeboks
ceeboks
Junior Member
Junior Member
Posts: 51
Joined: 2007-03-26, 05:17 UTC

Post by *ceeboks »

problem gelöst :-) :-) :-)

hab dbpoweramp 12.4trial auf ner xp machine installiert, die dmcshell.dll umbenannt in dmcshell32.dll und in den installationsordner auf meinem vista64 computer kopiert, mit dem regsvr32 befehl registrieren lassen und ooops, alles im tc so wie sein soll.
kontextmenüs da und funktionieren auch.
grandios.

vielen dank für die ermutigende hilfestellung (especially an holger!!)

schönen abend noch
ceeboks
octane
Junior Member
Junior Member
Posts: 9
Joined: 2006-06-29, 12:06 UTC

Post by *octane »

Vielen Dank. Noch ein Tipp:

Es sind zwei DLLs, die diesem Effekt betreffen:

- DBSHELL.DLL (für die Tooltipps)
- DMCSHELL.DLL (Kontextmenü-"Convert to", etc)

mfg octane
#115453
User avatar
Tahattmeruh
Senior Member
Senior Member
Posts: 232
Joined: 2003-05-16, 13:35 UTC

Post by *Tahattmeruh »

Hier ist noch ein Thread von mir. Damit funktioniert es auch ganz gut.

http://ghisler.ch/board/viewtopic.php?t=19366&postdays=0&postorder=asc&start=30
User avatar
krig
Junior Member
Junior Member
Posts: 83
Joined: 2004-12-31, 23:47 UTC

Post by *krig »

AMEN!

Funktioniert auch unter Win7 x64 Ultimate!

Danke.
Post Reply