Versteckte Dateien anzeigen nach Win Vorgabe

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
User avatar
matixx
Power Member
Power Member
Posts: 1118
Joined: 2003-03-21, 02:37 UTC
Location: ....

Versteckte Dateien anzeigen nach Win Vorgabe

Post by *matixx »

Hallo,

ist es möglich das TC die Ansicht von Versteckten- und Systemdateien als Vorgabe von Windows übernimmt ODER kann ich mit einem Befehl eine laufende TC-Instanz dazu bringen die Ansichten zu wechseln ?

Hintergrund:

Ich möchte eine Taste meiner Notebook-Tastatur dazu verwenden die Ansichten zu switchen..ich weiß zwar noch nicht welchen Befehl ich wie an W7 schicken muss um das zu bewerkstelligen, aber vielleicht kann das auch TC..Problem ist ja das die zu verwendende Taste nicht im TC Shortcut-Menue auftaucht..ist eine spezielle Taste am Notebook die normalerweise ein Herstellertool zur Systemkonfiguration startet.

Gruss maat
User avatar
ZoSTeR
Power Member
Power Member
Posts: 1050
Joined: 2004-07-29, 11:00 UTC

Post by *ZoSTeR »

Im TC ist es "cm_SwitchHidSys"

Windows speichert die Einstellung in der Registry:

Code: Select all

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
"Hidden"=dword:00000001
und 
"Hidden"=dword:00000002

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
"ShowSuperHidden"=dword:00000000
und 
"ShowSuperHidden"=dword:00000001
Man könnte nun zB nen AutoIt-Script schreiben, welches die Reg-Werte setzt und eine definierbare Tastenkombination an TC sendet. Diese muss dann natürlich cm_SwitchHidSys auslösen.
Das Herstellertool tauscht man dann gegen die Script-Exe aus, falls nicht anders konfigurierbar.

In etwa so:

Code: Select all

$valHidden = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "Hidden")

If $valHidden = 2 Then
	$newValHidden = 1
Else
	$newValHidden = 2
EndIf

RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "Hidden",  "REG_DWORD", $newValHidden)

$valSuperHidden = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "ShowSuperHidden")

If $valSuperHidden = 0 Then
	$newValSuperHidden = 1
Else
	$newValSuperHidden = 0
EndIf

RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "ShowSuperHidden",  "REG_DWORD", $newValSuperHidden)

; Für Strg+Shift+h -> cm_SwitchHidSys
WinActivate("[CLASS:TTOTAL_CMD]")
ControlSend("[CLASS:TTOTAL_CMD]", "", "[CLASS:TMyPanel]", "^+h")
Die erweiterte Logik überlass ich mal als Denksport.
User avatar
Krokus
Member
Member
Posts: 140
Joined: 2009-03-25, 17:51 UTC
Location: Germany

Post by *Krokus »

Füge in die WCMD_DEU.MNU den Eintrag Menüitem, an gewünschter Stelle, etwa so ein:
POPUP "&Ansicht"
MENUITEM ...
MENUITEM ...
MENUITEM SEPARATOR
MENUITEM "Versteckte+Systemdateien ein/aus", 2011
END_POPUP
#133258 Personal license
TC 7.04a & TC 7.50 > TC 7.50a + TC 7.56a > 7.57 > 8.01 > 8.50 > 8.52a
Windows XP SP3 & Windows 7 HP (32 bit) & Windows 8 (64 bit)
--
und auch aktuelle TC-U3-Version mit Windows XP & Windows 7 HP & Windows 8 (64 bit)
User avatar
matixx
Power Member
Power Member
Posts: 1118
Joined: 2003-03-21, 02:37 UTC
Location: ....

Post by *matixx »

@krokus: das ist mir schon bekannt, ich möchte doch aber mit einer speziellen Tastaturtaste umschalten die es im TC nicht gibt.

@zoster: das könnte was werden! Am liebsten die Registryvariante, hier stellt sich aber das Problem das TC seine eigene Einstellung hat. Deswegen auch die Frage nach einer systembedingten Anzeige im TC. Vielleicht weiss Hr.. Ghisler ob sich TC auch an Windows orientieren kann.
Aber dein Beispiel zur Übergabe an den TC unten in der Bat sieht viel versprechend aus! Das würde mir zur Not auch reichen.. Am We probier ich das mal
:-)

In den Tastenkombinationseinstellungen von TC tauchen zahlreiche OEM Tasten auf. Weiss jemand was die zu bedeuten haben oder hab die nur ich weil sie verfügbar sind.
Danke dir!
User avatar
ZoSTeR
Power Member
Power Member
Posts: 1050
Joined: 2004-07-29, 11:00 UTC

Post by *ZoSTeR »

Hab grad festgestellt, daß der TC-Zustand sofort in die Wincmd.ini geschrieben wird, sodaß man den TC als führendes Kriterium nutzen kann:

Code: Select all

; Für Strg+Shift+h -> cm_SwitchHidSys
WinActivate("[CLASS:TTOTAL_CMD]")
ControlSend("[CLASS:TTOTAL_CMD]", "", "[CLASS:TMyPanel]", "^+h")

$fileTcIni = EnvGet("COMMANDER_INI")
$valTcShowHidden = IniRead($fileTCIni, "Configuration", "ShowHiddenSystem", "NOT_FOUND")

If $valTcShowHidden = 1 Then
	$newValHidden = 1
	$newValSuperHidden = 1
Else
	$newValHidden = 2
	$newValSuperHidden = 0
EndIf

RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "Hidden",  "REG_DWORD", $newValHidden)
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "ShowSuperHidden",  "REG_DWORD", $newValSuperHidden)

Erfordert [F5] im Explorer.

Bzgl der OEM-Tasten schau mal in die Hilfe. Sind nur für Sonderzeichen auf US-Tastaturen. Wüsste nicht, daß man eigene Keycodes einpflegen kann und ob die Notebookspezialtasten irgendwo verfügbar sind.
User avatar
matixx
Power Member
Power Member
Posts: 1118
Joined: 2003-03-21, 02:37 UTC
Location: ....

Post by *matixx »

Hallo ZoSTeR,

ich habe mir jetzt mal AutoIT installiert, mit der 32bit Option, nicht diese native 64bit option angewählt. Das Programm ist so eingestellt das eine *.au3 Datei ausgeführt wird wenn sie aufgerufen wird. Im About vom Autoit steht folgende Version:

SciTE-Lite
Version 2.28
Jan 29 2012 21:33:22

Mein Betriebssystem ist W7pro 64bit
TC 8.05B 64bit

Jetzt wollte ich nur mal ein Script erstellen mit der TC Variante, quasi um die Grundfunktion herzustellen. Ich erstellte eine *.au3 Datei mit dem Code:

WinActivate("[CLASS:TTOTAL_CMD]")
ControlSend("[CLASS:TTOTAL_CMD]", "", "[CLASS:TMyPanel]", "^+h")

Egal wie ich es ausführe, ob als *.au3 oder compiliert als exe, es passsiert nichts. Das TC Fenster kommt in den Vordergrund, an den Einstellungen ändert sich aber nichts.
Der Shortcut STRG-SHIFT-H funktioniert aber innerhalb TC und schaltet die Ansichten um.

Hast du eine Idee? Ist bestimmt ein Anfängerfehler !

Gruss maat
User avatar
Stance
Power Member
Power Member
Posts: 1079
Joined: 2005-03-29, 06:26 UTC

Versteckte/System-Dateien - Standard Hotkey - Hauptmenü

Post by *Stance »

Das Standard-Tastaturkürzel dafür ist STRG + H.
Es hat im Total Commander in den Optionen einen Konfigurations-Dialog in "Diverses".
Zuerst wird "(o) Hotkey" aktiviert, einen Haken bei "[x] STRG" gemacht, im Auswahlfeld noch der Buchstabe "H" gewählt.

Im Feld für den Befehl gibt man ein: "cm_SwitchHidSys".

Optionen - Diverses:
(o) Hotkey
[x] Control (STRG) + H
Command (Befehl) "cm_SwitchHidSys"

Von nun an kann mit STRG+H die Ansicht für Versteckte/System-Dateien an- und abgeschaltet werden.


Hauptmenü
Unabhängig davon kann das Hauptmenü auch für diese Funktion genutzt werden.
Bei Aktivität wird zwar ein Haken oder ein Icon im Menu abgebildet
aber der gewählte Hotkey wird nicht aus der Konfigurationsdatei ausgelesen.
Der Hotkey muss also eingetragen werden.

Im Hauptmenü eintragen zB in: [Ansicht]
MENUITEM "Versteckte/System-Dateien\tSTRG+H", cm_SwitchHidSys
User avatar
matixx
Power Member
Power Member
Posts: 1118
Joined: 2003-03-21, 02:37 UTC
Location: ....

Post by *matixx »

Ok, da ist schonmal ein Fehler ausgemerzt. Ich dachte "^+h" bedeutet STRG+SHIFT+H . Habs den Shortcut im TC dahingehend nochmal abgeändert bzw. so abgespeichert. Trotzdem funktioniert mein Script nur bis dahin das der TC in den Vordergrund kommt. Eine Ansichtsänderung findet nicht statt. Der Shortcut "^+h" auf der Tastatur funktioniert aber im TC, die Ansicht wird umgeschalten.
User avatar
ZoSTeR
Power Member
Power Member
Posts: 1050
Joined: 2004-07-29, 11:00 UTC

Post by *ZoSTeR »

"^+h" bedeutet STRG+SHIFT+H in AutoIt. Eine Standardbelegung für "cm_SwitchHidSys" gibt es im TC nicht.

Die 64bit Version des TC hat andere Controlnamen. Diese lassen sich mit "Au3Info.exe" ermitteln.

Statt
ControlSend("[CLASS:TTOTAL_CMD]", "", "[CLASS:TMyPanel]", "^+h")
jetzt
ControlSend("[CLASS:TTOTAL_CMD]", "", "[CLASS:Window]", "^+h")
User avatar
matixx
Power Member
Power Member
Posts: 1118
Joined: 2003-03-21, 02:37 UTC
Location: ....

Post by *matixx »

@ZoSTer

Funktioniert EINWANDFREI! Beides, TC und Explorer :-)

Für alle zum mitschreiben, hier der Code für TC64bit zum Umschalten der Ansicht "versteckte Dateien" und "Systemdateien" per script:

Code: Select all

; Für Strg+Shift+h -> cm_SwitchHidSys 
WinActivate("[CLASS:TTOTAL_CMD]") 
ControlSend("[CLASS:TTOTAL_CMD]", "", "[CLASS:Window]", "^+h") 

$fileTcIni = EnvGet("COMMANDER_INI") 
$valTcShowHidden = IniRead($fileTCIni, "Configuration", "ShowHiddenSystem", "NOT_FOUND") 

If $valTcShowHidden = 1 Then 
   $newValHidden = 1 
   $newValSuperHidden = 1 
Else 
   $newValHidden = 2 
   $newValSuperHidden = 0 
EndIf 

RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "Hidden",  "REG_DWORD", $newValHidden) 
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "ShowSuperHidden",  "REG_DWORD", $newValSuperHidden) 
Ich habe mir das als *.exe kompiliert und starte somit die Umschaltung mittels einer dedizierten Taste auf meinem Notebook für TC und Explorer zugleich.

EDIT: Leider funktionierte das Umschalten im Explorer damit nur einmal, trotz aktualisieren des Explorer-Fensters. Muss ich den Pfad zur wincmd.ini nicht explizit irgendwie angeben ?

Code: Select all

$fileTcIni = EnvGet("c:\totalcmd\wincmd.ini") 
 
Hab ich probiert, keine Änderung im Explorer und das ist ganz sicher der Pfad zu meiner ini.

Vielen Dank ZoSTer !


Gruss maat
User avatar
ZoSTeR
Power Member
Power Member
Posts: 1050
Joined: 2004-07-29, 11:00 UTC

Post by *ZoSTeR »

Kein Problem, nen bisserl Rumgefrickel belebt Geist und Körper ;)

Um einem absehbaren Problem vorzubeugen:

ShowSuperHidden ist abhängig von ShowHidden dh:
SH an + SSH an = h und hs Dateien sichtbar
SH an + SSH aus = h Dateien sichtbar
SH aus + SSH an = nur normale Dateien sichtbar

In der ersten Scriptvariante werden die Einstellungen unabhängig voneinander geändert, sodaß u.U. hs-Dateien niemals sichtbar werden.

Lange Rede, kurzer Sinn: ShowSuperHidden immer auf 1 setzen (wenn grundsätzlich gewünscht).
Script ohne TC:

Code: Select all

$valHidden = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "Hidden")

If $valHidden = 2 Then
   $newValHidden = 1
Else
   $newValHidden = 2
EndIf

RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "Hidden",  "REG_DWORD", $newValHidden)

RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "ShowSuperHidden",  "REG_DWORD", 1)
User avatar
ZoSTeR
Power Member
Power Member
Posts: 1050
Joined: 2004-07-29, 11:00 UTC

Post by *ZoSTeR »

matixx wrote:EDIT: Leider funktionierte das Umschalten im Explorer damit nur einmal, trotz aktualisieren des Explorer-Fensters.
Der TC ist gestartet? Das Script kann in der Form nur bei laufendem TC funktionieren.

Eins für alles:

Code: Select all

; v21

$fileTcIni = "c:\Program Files\TotalCmd\wincmd.ini"

If WinExists("[CLASS:TTOTAL_CMD]") Then
	; TC läuft:
	WinActivate("[CLASS:TTOTAL_CMD]")
	; Für Strg+Shift+h -> cm_SwitchHidSys
	; Ist TC 32 oder 64bit?
	$envVarTC = EnvGet("COMMANDER_EXE")
	$strTcExe = StringRight($envVarTC, 14)
	If $strTcExe = "TOTALCMD64.EXE" Then
		ControlSend("[CLASS:TTOTAL_CMD]", "", "[CLASS:Window]", "^+h")
	Else
		ControlSend("[CLASS:TTOTAL_CMD]", "", "[CLASS:TMyPanel]", "^+h")
	EndIf
	; Windows folgt TC:
	$valTcShowHidden = IniRead($fileTCIni, "Configuration", "ShowHiddenSystem", "NOT_FOUND")
	If $valTcShowHidden = 1 Then
		$newValHidden = 1
		$newValSuperHidden = 1
	Else
		$newValHidden = 2
		; Könnte man auf 1 stehen lassen:
		$newValSuperHidden = 0
	EndIf
Else
	; TC läuft nicht:
	$valHidden = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "Hidden")
	If $valHidden = 2 Then
		$newValHidden = 1
		$newValTcShowHidden = 1
	Else
		$newValHidden = 2
		$newValTcShowHidden = 0
	EndIf
	$newValSuperHidden = 1
	; TC folgt Windows:
	IniWrite($fileTcIni, "Configuration", "ShowHiddenSystem", $newValTcShowHidden)
EndIf

RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "Hidden",  "REG_DWORD", $newValHidden)
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "ShowSuperHidden",  "REG_DWORD", $newValSuperHidden)
Pfad zur wincmd.ini gegebenenfalls anpassen.

*Edit: ca. 20 Edits später ;)
User avatar
matixx
Power Member
Power Member
Posts: 1118
Joined: 2003-03-21, 02:37 UTC
Location: ....

Post by *matixx »

ZoSTeR wrote:
Der TC ist gestartet? Das Script kann in der Form nur bei laufendem TC funktionieren.
Ja, ist er.
ZoSTeR wrote: Eins für alles:

Code: Select all

; v21

$fileTcIni = "c:\Program Files\TotalCmd\wincmd.ini"

If WinExists("[CLASS:TTOTAL_CMD]") Then
	; TC läuft:
	WinActivate("[CLASS:TTOTAL_CMD]")
	; Für Strg+Shift+h -> cm_SwitchHidSys
	; Ist TC 32 oder 64bit?
	$envVarTC = EnvGet("COMMANDER_EXE")
	$strTcExe = StringRight($envVarTC, 14)
	If $strTcExe = "TOTALCMD64.EXE" Then
		ControlSend("[CLASS:TTOTAL_CMD]", "", "[CLASS:Window]", "^+h")
	Else
		ControlSend("[CLASS:TTOTAL_CMD]", "", "[CLASS:TMyPanel]", "^+h")
	EndIf
	; Windows folgt TC:
	$valTcShowHidden = IniRead($fileTCIni, "Configuration", "ShowHiddenSystem", "NOT_FOUND")
	If $valTcShowHidden = 1 Then
		$newValHidden = 1
		$newValSuperHidden = 1
	Else
		$newValHidden = 2
		; Könnte man auf 1 stehen lassen:
		$newValSuperHidden = 0
	EndIf
Else
	; TC läuft nicht:
	$valHidden = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "Hidden")
	If $valHidden = 2 Then
		$newValHidden = 1
		$newValTcShowHidden = 1
	Else
		$newValHidden = 2
		$newValTcShowHidden = 0
	EndIf
	$newValSuperHidden = 1
	; TC folgt Windows:
	IniWrite($fileTcIni, "Configuration", "ShowHiddenSystem", $newValTcShowHidden)
EndIf

RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "Hidden",  "REG_DWORD", $newValHidden)
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "ShowSuperHidden",  "REG_DWORD", $newValSuperHidden)
Pfad zur wincmd.ini gegebenenfalls anpassen.

*Edit: ca. 20 Edits später ;)
Na das sieht ja mal sehr flexibel aus. Ich würde den ssh immer auf 1 lassen wollen. Ich komme zum Ende der Woche dazu das zu testen. Vielen Dank schonmal für deine Arbeit ZoSTer!

Gruss maat
Post Reply