TC reagiert auf den Start einer Themepack-Datei

German support forum

Moderators: white, Hacker, Stefan2

Post Reply
Dauer-TC-ler
Junior Member
Junior Member
Posts: 53
Joined: 2015-03-14, 17:49 UTC

TC reagiert auf den Start einer Themepack-Datei

Post by *Dauer-TC-ler »

Hallo zusammen!

Immer wenn ich eine *.themepack - Datei starte, um das Theme von Windows zu ändern, gibt es im TC eine merkwürdige Reaktion darauf: Auf beiden Tafel-Seiten wird jeweils die Datei markiert (wie Space oder rechte Maustaste), die jeweils gerade die aktuelle dieser Seite ist, unabhängig davon, wo der Cursor bzw. der aktuelle Fokus (Tab-Tab) gerade steht. Also Tab-Tab trifft/zeigt dann genau diese beiden markierten Dateien.

Das Erstaunlichste aber ist, daß dieses Phänomen unabhängig vom TC-Fenster-Status ist, d.h. sogar im minimierten Zustand findet bei [name].themepack {Enter} diese Reaktion statt. Sind mehrer TC-Instanzen offen, trifft es nur die oberste bzw. letzt-aktuelle Instanz. Und auch auf einem Zweit-oder-Dritt-Bildschirm ist der TC vor diesem Angriff nicht sicher.

Es ist auch egal, ob ich diese themepack-Datei manuell oder mittels eines Skripts starte, z.B. per AHK, um automatisch das "Anpassung"-Fenster wieder schließen zu lassen.

Mit selbigem AHK-Skript könnte ich sogar noch weitergehen und an dessen Ende das Problem im TC gleich reparieren zu lassen:

Code: Select all

;...
WinActivate Total Commander
WinWait Total Commander
sendinput {space}
sendinput {tab}
sendinput {space}
sendinput {tab}
;...
Das würde auch perfekt funktionieren, wenn da nicht noch eine Gemeinheit wäre:
Das Phänomen tritt so, wie oben beschrieben, nicht jedesmal auf.
Es gibt 4 Varianten:

- keine Reaktion (so wäre es richtig bzw. normal)
- nur links ist die fokusierte Datei markiert
- nur rechts ist die fokusierte Datei markiert
- auf beiden Seiten ist die jeweils fokusierte Datei markiert (der häufigste Fall)

Jetzt kann ich natürlich per AHK mit einem etwas größeren Aufwand erst herausfinden lassen, wie es jeweils ausgefallen ist, um dann entsprechend korrigieren zu lassen. Denn für {Space} im TC gibt es meines Wissens nur die Wechsel-, aber keine Absolutschaltung.

Bevor ich das nun angehe, wollt ich erst mal hier nachfragen, was denn die Ursache dieses Späßchens sein könnte?
Und warum nur der TC davon betroffen ist?

Denn korrigieren muß ich das hinterher auf alle Fälle, notfalls eben manuell, um evtl. unbeabsichtigt unerwünschte Ergebnisse wie versehentliches Löschen oder Starten zu verhindern.

Vielen Dank für die Aufmerksamkeit!
Dauer-TC-ler
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48075
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Re: TC reagiert auf den Start einer Themepack-Datei

Post by *ghisler(Author) »

Windows sendet eine Meldung WM_THEMECHANGED, worauf Total Commander diverse theme-spezifische Optionen neu lädt, und auch die Fenster neu zeichnet. Wahrscheinlich führt das zum beobachteten Effekt.
Author of Total Commander
https://www.ghisler.com
Dauer-TC-ler
Junior Member
Junior Member
Posts: 53
Joined: 2015-03-14, 17:49 UTC

Re: TC reagiert auf den Start einer Themepack-Datei

Post by *Dauer-TC-ler »

Vielen Dank für die Hintergrundinformation.

Ich beobachte auch immer wieder, daß ALLE offenen Fenster bei einer solchen Theme-Änderung minimal kurzzeitig in ihrer Position rücken, was auf die Neuzeichnung der GUI schließen läßt, von der natürlich alle betroffen sind.

Jeder Status-Zustand des TC schließt ja unabdingbar den konkreten "Aufenthaltsort" der aktuellen Hervorhebung (nicht er Markierung!) ein - egal, wo sich der Cursor gerade befindet, ob links oder rechts. Tab-Tab hat immer ein konkretes Datei-Ziel auf beiden Seiten.

Bei einer Themen-Neuzeichnung scheint diese Tatsache in der beschriebenen Weise lediglich labil überzureagieren: mal so, mal so, oder auch mal nicht.

Als Problemlösung könnte ich mir zwei Ansätze vorstellen:

- Diese "Überreaktion" mit einer Art "Antihistamin"- SkriptCode eindämmen

- oder den Dauerstatus der zwingenden Aktuell-Zuweisung für je eine der Dateien auf beiden Seiten per cm_Befehl vorübergehend aufhebbar machen (ON/OFF), was dann daran ersichtlich wäre, wenn Tab-Tab kein Ziel mehr finden würde und ins Leere ginge. Das könnte dann in einem automatischen Skript zur Theme-Änderung für die kurze Zeit des Umschaltvorganges benutzt werden.

Beides sind selbstverständlich nur unfachmännische Mutmaßungen.
Angesichts der Exotik der Zierlsetzung - Themeänderungen per Mausklick vorzunehmen (habe hierfür ein AHK-Systray-Menü mit 4 Theme-Varianten kreiert) - dürfte eine solche Problemlösung jedoch nicht von größerem allgemeinen Interesse sein.

Möglicherweise wird es bei aller Nebensächlichkeit meine Kreativität anspornen, für mich eine Lösung zu finden.

Grüße vom Dauer-TC-ler


P.S.: Ich stelle das AHK-Skript zur Themes-Änderung hier noch ein, vielleicht interessiert oder nützt es dem ein oder anderen.
Die am Ende angeführte TC-Problemlösung kann/muß natürlich gelöscht oder auskommentiert werden, falls sie aufgrund der Labilität der Reaktion zu kontraproduktiv wird. Alle Pfade/Namen sind natürlich individuell anzupassen.

Code: Select all

#SingleInstance Force
#Persistent

Menu, Tray, Icon, c:\Icon\Themes.ico
Menu, Tray, Tip, Themes
Menu, Tray, NoStandard

Menu, Tray, Add, EXIT, Exit
Menu, Tray, Add, Editieren, Edit
Menu, Tray, Add
Menu, Tray, Add, Icon-Schema, Icon
Menu, Tray, Add, Original, Orig
Menu, Tray, Add, RK-Edit dunkel, RKed
Menu, Tray, Add, Dunkles Schema, Dark
Return

Exit:
ExitApp

Edit:
run c:\Y\EDITPAD\EDITPAD.EXE C:\Y\AHK-Skript\Themes.ahk
Return

Icon:	
run c:\Y\Registry\TP-Icon.themepack
WinWait Systemsteuerung, , 8
sleep 500
WinClose
goto IconRestoreUltramon

Orig:
run c:\Y\Registry\TP-Orig.themepack
WinWait Systemsteuerung, , 8
sleep 500
WinClose
goto IconRestoreUltramon

RKed:
run c:\Y\Registry\TP-RKedit.themepack
WinWait Systemsteuerung, , 8
sleep 500
WinClose
goto IconRestoreUltramon

Dark:
run c:\Y\Registry\TP-Dark.themepack
WinWait Systemsteuerung, , 8
sleep 500
WinClose

IconRestoreUltramon:
sleep 1000

run "c:\Y\UltramonY\REST_Ultramon.vbs"

WinActivate Total Commander
WinWait Total Commander
sendinput {space}
sendinput {tab}
sendinput {space}
sendinput {tab}

Return
Post Reply