x64 und Context Menu - mal wieder

German support forum

Moderators: Hacker, Stefan2, white

User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

2Tahattmeruh

Ich konnte den Absturz hier (Vista32) leider nicht reproduzieren, bin aber über einige Unverträglichkeiten der Implementierung mit den OwnerDraw Menüs von TortoiseSVN gestolpert.

Ein Austausch des Orginalsamplecodes von Johansson, durch eine überarbeitete Version
http://www.codeproject.com/KB/cs/shellContextMenu.aspx
hat diese Probleme hier allerdings behoben.

Kannst du nochmal unter Vista64 mit TortoiseSVN ausprobieren, ob die Änderungen auch den Absturz beseitigen?
Download: http://holgerk.drivehq.com//TC/ExplorerMenu4TC.zip

Gruß,
Holger
User avatar
Tahattmeruh
Senior Member
Senior Member
Posts: 244
Joined: 2003-05-16, 13:35 UTC

Post by *Tahattmeruh »

Du bist mein Held.
Jetzt gehts. Juhu.

Einen kleinen Fehler hab ich noch gefunden.
Ich ruf das Context Menu auf, dann klicke ich etwas an.
Funktioniert. Nur leider bekommt der TC den Fokus nicht wieder.
Kannst du das vielleicht beheben?
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

Tahattmeruh wrote:Jetzt gehts. Juhu.
:D :lol:
Ich ruf das Context Menu auf, dann klicke ich etwas an.
Funktioniert. Nur leider bekommt der TC den Fokus nicht wieder.
Kannst du das vielleicht beheben?
Das war mir auch schon aufgefallen, allerdings habe ich es zuerst nicht als so wichtig angesehen, da man bei der Benutzung des Buttons sowieso die Maus in der Hand hat, um den Fokus wieder auf den TC zu setzen.
Wenn das Menu allerdings über Hotkey aufgerufen wird, ist das wirklich lästig.... (momentaner Workaround: mit <Alt+Tab> zum TC zurück...)
Mal sehen was sich da machen lässt (kann aber noch etwas dauern bis ich dazu komme).

Ein weiteres Problem, das noch auf der ToDo-Liste steht, ist das TC sich beim Beenden mit:
---------------------------
Total Commander
---------------------------
Warnung: Wenn Sie Total Commander jetzt beenden, werden
einige (von Total Commander entpackte) temporäre Dateien nicht gelöscht,
da die damit gestarteten Programme noch laufen!
Trotzdem beenden?
---------------------------
Yes No
---------------------------
beschwert.

Ich schätze das bezieht sich auf die temporäre Liste (muss ich wohl selber löschen).
Aber den TC beendet man ja nicht. :wink:

Gruß,
Holger
User avatar
Tahattmeruh
Senior Member
Senior Member
Posts: 244
Joined: 2003-05-16, 13:35 UTC

Post by *Tahattmeruh »

Kannst du dir nicht das hWnd vom TC merken und danach den Fokus zurücksetzen oder ist dein Programm da schon längst beendet?

Das zweite Problem wollte ich gerade auch Posten.
Ist mir aber lieber als kein Menü :)
User avatar
Tahattmeruh
Senior Member
Senior Member
Posts: 244
Joined: 2003-05-16, 13:35 UTC

Post by *Tahattmeruh »

Wenn man vor dem beenden des TC mit ALT+TAB die noch offenen Fenster durchgeht, dann kann man das Context Menu finden in dem die zuletzt markierten Dateien stehen. Wenn man dieses zuerst beendet, dann fragt der TC auch nicht mehr nach ob man wirklich beenden möchte
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

Tahattmeruh wrote:... Wenn man dieses zuerst beendet, dann fragt der TC auch nicht mehr nach ob man wirklich beenden möchte
Ja das ist ein Workaround.

Leider scheint es nicht zu helfen wenn ich die temporäre Liste selber lösche.
TC kriegt irgendwie noch mit, dass der Thread an den die Liste übergeben wurde noch lebt.
Und vorzeitig den eigenen Thread selber beenden, kann ich auch nicht, wenn ich nicht die gleiche Schnüffelei für etwaige vom Kontextmenü aufgerufene Dialoge einbaue (die würden ansonsten ungewollt mit beendet).

Ich bin leider noch nicht dazu gekommen an dem Fokusproblem weiterzuarbeiten.
Werde mich aber demnächst darum kümmern.

Gruß,
Holger
User avatar
Tahattmeruh
Senior Member
Senior Member
Posts: 244
Joined: 2003-05-16, 13:35 UTC

Post by *Tahattmeruh »

Hallo HolgerK,

hast du schon weiter daran gearbeitet? Ich komme ohne gar nicht mehr aus.
Früher hab ich sehr oft das Context Menu aufgerufen indem ich auf den aktuellen Ordner geklickt hab.
Leider funktioniert das nicht mehr und auch wenn ich auf ".." stehe bekomme ich kein Menu. Hast du eine Idee?
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

Sorry, ich bin leider noch nicht dazu gekommen daran weiterzuarbeiten.

Du kannst das Kontextmenü des momentanen Verzeichnisses allerdings mit dem folgende Übergabeparameter aufrufen (hier mal als Button per Copy&Paste eingefügt):

Code: Select all

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Addons\ExplorerMenu4TC.exe
"%P\"
%COMMANDER_PATH%\Addons\ExplorerMenu4TC.exe
64Bit Explorer menu (Parent Folder)


-1
Am besten einen alternativen Hotkey z.B. <ALT+Shift+F10> dafür definieren. Es ist dabei auch nicht notwendig den Cursor auf ".." zu platzieren.

TC scheint in diesem Fall kein temporäreres List-file zu erzeugen.
Vielleicht komme ich ja über das aktuelle Verzeichnis dran.
Mal sehen.

Apropos List-file: Leider funktioniert das Löschen des List-Files nicht, um TC auszutricksen (per pedes ausprobiert) beim Beenden die Warnung bezüglich der temporären Datei nicht auszugeben.

Wenn ich dazu komme werde ich diese Woche noch einen -S Parameter einbauen mit dem ExplorerMenu4TC manuell beendet werden kann.

Dann ist man wenigstens das ungute Gefühl los, dass irgend ein anderes Programm noch eine temporäre (wichtige) Datei geöffnet hat.

Gruß,
Holger
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

2Tahattmeruh

Ich - mal wieder. :wink:

Neue Version: http://holgerk.drivehq.com//TC/ExplorerMenu4TC.zip

Änderungen:

- neuer Parameter -Stop um die ExplorerMenu4TC.exe zu beenden.
Damit kann die Warnung bezüglich der temporären Files im TC umgangen werden.

- -List und -Stop sind jetzt case insensitive (kann also auch -LiSt geschrieben werden).

- ExplorerMenu4TC.exe taucht jetzt nicht mehr im Task-Manger auf (nur noch unter Prozesse).

- Kontextmenu auf ".." (momentanes Verzeichnis) wird anhand des fehlenden Übergabeparameters erkannt und angezeigt.

- Das Fokusproblem bei Tastaturbedienung sollte jetzt weitgehendst gelöst sein :wink:


Passende User-Kommandos dazu:
user.ini wrote:[em_64BitExplorerMenu]
button=%COMMANDER_PATH%\Addons\ExplorerMenu4TC.exe
cmd=%COMMANDER_PATH%\Addons\ExplorerMenu4TC.exe
param=-List "%L"
menu=64Bit Explorer menu

[em_64BitExplorerMenuShutdown]
button=%COMMANDER_PATH%\Addons\ExplorerMenu4TC.exe
cmd=%COMMANDER_PATH%\Addons\ExplorerMenu4TC.exe
param=-Stop
menu=shutdown 64Bit Explorer menu helper
Hotkey:
wincmd.ini wrote:[Shortcuts]
CS+F10=em_64BitExplorerMenu
CAS+F10=em_64BitExplorerMenuShutdown
und die entsprechenden Buttons:
Clippboard wrote:TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Addons\ExplorerMenu4TC.exe
-List "%L"
%COMMANDER_PATH%\Addons\ExplorerMenu4TC.exe
64Bit Explorer menu


-1
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Addons\ExplorerMenu4TC.exe
-Stop
%COMMANDER_PATH%\Addons\ExplorerMenu4TC.exe
shutdown 64Bit Explorer menu helper


-1
Wichtig ist, dass der Pfad im Kommando jetzt leer bleiben muss, damit das Menü auch für ".." funktioniert!

Was bleibt, ist die Einschränkung, dass die markierten Dateien alle im gleichen Verzeichnis liegen müssen.
Aber daran werde ich aus Zeitgründen wahrscheinlich nichts mehr ändern.

Mit freundlichem Gruß,
Holger
User avatar
ate
Senior Member
Senior Member
Posts: 274
Joined: 2003-12-17, 22:48 UTC

Post by *ate »

Da ich nun auch mein Vista 64 habe und es mal testen konnte ...

Das Tool hat mir schon in einigen Situationen weitergeholfen, wo ich den Explorer 64 nicht zusätzlich bemühen mußte. Für meine Zwecke genügt es.

Daher ... Vielen Dank !
User avatar
Tahattmeruh
Senior Member
Senior Member
Posts: 244
Joined: 2003-05-16, 13:35 UTC

Post by *Tahattmeruh »

HolgerK wrote:Was bleibt, ist die Einschränkung, dass die markierten Dateien alle im gleichen Verzeichnis liegen müssen.
Aber daran werde ich aus Zeitgründen wahrscheinlich nichts mehr ändern.
Danke für die neue Version.
Mit der Einschränkung kann ich persönlich leben da ich das auch noch nie anders benutzt habe.

Werde ich morgen gleich mal testen.
User avatar
Tahattmeruh
Senior Member
Senior Member
Posts: 244
Joined: 2003-05-16, 13:35 UTC

Post by *Tahattmeruh »

Mir ist gerade ein nerviger Bug aufgefallen.
Lege im TC einen Ordner an. Kopiere eine Datei dort hin und packe oder entpacke sie.
Wichtig ist glaub ich nur daß das Menü aufgerufen wird.
Dann geh wieder ein Verzeichnis zurück und versuch es zu löschen.
Leider klappt das nicht weil dein Programm irgendwie das Verzeichnis sperrt.
Wenn ich im Taskmanager das Programm beende kann ich löschen.
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

Tahattmeruh wrote:...Leider klappt das nicht weil dein Programm irgendwie das Verzeichnis sperrt.
Tja, da haben wir jetzt ein (minimales) Scylla&Charybdis Problem. :wink:
Wenn du den Startpfad im em_64BitExplorerMenu Kommando angibst, dann ist nur dieses Verzeichnis geblockt.
Dann kann ExplorerMenu4TC.exe allerdings nicht mehr das Kontextmenu für [..] aufrufen, weil TC das momentane angezeigte Verzeichnis nicht als aktuelles Verzeichnis setzt.

Das Problem tritt übrigens nur beim allerersten Aufruf des Kontextmenues auf. Der dann aktuelle Pfad bleibt in der Hintergrundinstanz erhalten.

Ich werd mal sehen ob ich den CurrentPath von ExplorerMenu4TC.exe umsetzen kann, nachdem ich ihn ausgelesen habe.
Wenn ich im Taskmanager das Programm beende kann ich löschen.
Taskmanger ist overkill.
Es reicht aus wenn du mit em_64BitExplorerMenuShutdown oder entsprechenden Hotkey das Exlporermenu einfach beendest.

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

Post by *ghisler(Author) »

Das liesse sich einfach durch einen Aufruf von SetCurrentDirectory("\\"); lösen.
Author of Total Commander
https://www.ghisler.com
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

Neue Version: http://holgerk.drivehq.com/TC/ExplorerMenu4TC.zip

Änderung:

- Als CurrentDirectory wird jetzt %windir%\system32 gesetzt um kein Verzeichnis zu blockieren.

Code: Select all

System.Environment.CurrentDirectory = System.Environment.GetEnvironmentVariable("windir") + "\\System32";
2Tahattmeruh
Ich hoffe du hast nicht vor das System32-Verzeichnis zu löschen :wink:
Bitte mit Vista 64Bit testen ob das Problem damit behoben ist.
Ich habe das momentan nur unter Vista 32Bit getestet.


2ghisler(Author)
Danke für den Hinweis.
Das Rootverzeichnis kann natürlich nicht gelöscht werden.:wink:
Ich habe mich allerdings in diesem Fall für maximale Kompatibilität zur Explorer.exe entschieden.
Afair werden DLLs zuerst im CurrentDirectory und danach erst über den Suchpfad gefunden.
Es ist zwar sehr unwahrscheinlich, dass eine DLL aus dem Rootverzeichnis über eine ExplorerExtension nachgeladen wird, aber wer weiss...

Mit freundlichem Gruß,
Holger
Post Reply