Rechte Maus / ContextMenu problem TC 7.50a Win 7

German support forum

Moderators: Hacker, Stefan2, white

Cyrus
Member
Member
Posts: 112
Joined: 2005-08-31, 12:00 UTC
Location: Dresden, Germany
Contact:

Post by *Cyrus »

nur mal zur info:

unter win7 x64 rtm funktioniert das kontextmenü reibungslos

@ts-soft: wieso sollte der tc fehler anderer programme abfangen? wäre schön, wenn das ginge, aber den tc kompatibel zu einer riesigen anzahl anderer programme zu machen ist doch utopisch. deswegen wäre es doch angebracht, den fehler zu lokalisieren, damit sich darum gekümmert werden kann und bei anderen der fehler evtl. gar nicht erst auftritt. wenn du mitteilen würdest, woran der fehler liegt (liegen kann), könnte man vielleicht versuchen, den fehler zu reproduzieren und so zur fehlerbehebung beitragen. auch im sinne anderer user
#155529
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

ts-soft wrote:Da die Shellextension mit anderen Programmen anscheinend keine Probleme macht, ist das nicht logischer.
Soso. Die anderen Programme sind nicht zufälligerweise 64Bit Programme wie der x64-Explorer?
Dir ist klar, das diese eine 32Bit ShellExtension gar nicht zu sehen bekommen?
Da ich selber auch Programmiere, weiß ich,
das dies nicht immer leicht umzusetzen ist, aber wat mut dat mut.
Ein Dateimanager sollte immer besonders stabil sein, korrupte oder nicht korrupte Einträge in der Registry sollten ihm nichts ausmachen
Anscheinend weißt du aber nicht allzuviel über ShellExtensions.
Diese werden als externe DLL's im Prozessraum des Explorers oder TC geladen und ausgeführt.
Ein korrupter Registryeintrag ist garantiert nicht problemauslösend.
Eher, dass diese DLL eigenständig beschließt mit ihren Programmfehler den Prozess zu traktieren (wie wild mit Exceptions um sich zu schmeißen, oder den Stack zu korrumpieren).

Im günstigsten Fall kann Christian da auch nichts anderes machen, als zu versuchen die Exception abzufangen.

Gruß
Holger
User avatar
ts-soft
Junior Member
Junior Member
Posts: 66
Joined: 2009-04-19, 21:56 UTC
Location: Berlin

Post by *ts-soft »

HolgerK wrote: Anscheinend weißt du aber nicht allzuviel über ShellExtensions.
Das stimmt, ShellExtensions sind wohl COM Objekte und in Nicht-OOP
Sprachen etwas schwierig umzusetzen (aber es geht wohl, hab vor Jahren
mal ein Beispiel gesehen)
HolgerK wrote: Im günstigsten Fall kann Christian da auch nichts anderes machen, als zu versuchen die Exception abzufangen.

Gruß
Holger
Das wäre doch der normale Weg. Exception abfangen, Object releasen und weiter im Text :wink:

Ich bin dann doch mal den von euch vorgeschlagenen Weg gegangen und
mußte Shellextensions folgender Hersteller entfernen:
Adobe
Acronis
TechSmith
Ulead
WinRAR
Wobei WinRAR ist die 64-Bit Version :mrgreen:

Irgendwann wirds wohl doch eine TC-64-Bit Version geben und solche
Probleme sind dann passé.

Schönes Wochenende

Thomas

// edit
Scheint so, als wären das alles 32-Bit ShellExtensions, die von 64-Bit
Anwendungen installiert wurden. Hab nochmal nachgesehen, selbst
TechSmith liefert x64 DLLs mit. Acrobat ist auch 64-Bit, Acronis unterstüzt
64-Bit und Ulead ist vielleicht ein Irrtum, das er sich in dieser Aufstellung
befindet.
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

ts-soft wrote:Das stimmt, ShellExtensions sind wohl COM Objekte und in Nicht-OOP Sprachen etwas schwierig umzusetzen
Mit COM-Schnittstellen in C++ oder von mir aus auch Delphi (beides übrigens OO) zu hantieren ist manchmal nicht so einfach (manchmal meine ich mich in die Assembler Ära zurückversetzt zu sehen).
Wäre Objective Cobol besser geeignet?
Das wäre doch der normale Weg. Exception abfangen, Object releasen und weiter im Text :wink:
Tja, wenn alles im Leben sooo einfach wäre..
Wobei WinRAR ist die 64-Bit Version :mrgreen:
WinRar installiert, soweit ich weiß, sowohl 32 als 64Bit ShellExtensions, die als Vermittler zum eigentlichen Programm dienen. Sollte allerdings normalerweise kein Problem darstellen.
Irgendwann wirds wohl doch eine TC-64-Bit Version geben und solche Probleme sind dann passé.
"Eine 64-bit-Version ist definitiv geplant.."
Ob damit solche Probleme passé sind, ist eine andere Frage.
Delphi ist eine andere Laufzeitumgebung als die C-Runtime.

Gruß
Holger
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50753
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Das wäre doch der normale Weg. Exception abfangen, Object releasen und weiter im Text
Leider ist das nicht möglich. Wieso? Das Kontextmenü wird mit einem einzigen Befehl angefordert:
IContextMenu->QueryContextMenu();

Dabei werden leider auch alle in der Registrierdatenbank eingetragenen Shellerweiterungen geladen. Es gibt keine Möglichkeit, einzelne Shellerweiterungen zu überspringen!

Beim X64-Untermenü gehe ich dafür einen anderen Weg: Ich lade jede Shellerweiterung einzeln, und fange allfällige Exceptions ab.

Sehr gerne würde ich das auch beim 32-bit-Menü so machen, doch leider fehlen dann alle Standardeinträge wie Öffnen, Ausschneiden, Kopieren, Einfügen, Verknüpfung erstellen etc. etc. Bisher ist es mir nicht gelungen, nur diese zu laden und NICHT die Erweiterungen des Kontextmenüs...
Author of Total Commander
https://www.ghisler.com
MAK
Junior Member
Junior Member
Posts: 2
Joined: 2009-09-25, 10:30 UTC

problem behoben...

Post by *MAK »

Ups, da habe ich ja eine Diskussion ausgelösst.
Also, bei mir lag das offenbar an Tortoise SVN Client. Ich hatte noch die Version 1.6.3 drauf und haben nachträglich die Version 1.6.5 Installiert.
Danach hatte ich das Problem nicht mehr.

Vielen Dank
Gruss Martin
Post Reply