Generic how-to's Collection / Allgemeine Fragen Sammlung

English support forum

Moderators: white, sheep, Hacker, Stefan2

Locked
User avatar
Stefan2
Power Member
Power Member
Posts: 2183
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Generic how-to's Collection / Allgemeine Fragen Sammlung

Post by *Stefan2 » 2014-08-15, 07:01 UTC

I just want to have a place to collect some generic FAQs of mine or from others I found.
This way I don't have to rethink this faqs over and over again but can just link a post from here. And this is even "in the cloud" and always with me :D
(Utilizing a thread in the forum I find more nifty for my use than logging into the wiki)

-------------------------------------------

This is a answers-only, no-questions how-to thread. Don't post questions, post here how-tos' only.

Please feel free to post your how tos' here too.     But no questions here. Only answers please.    

If you like you can share your expression in that other thread > http://ghisler.ch/board/viewtopic.php?t=40959

If you god question please search the forum, and if you find nothing, create a new thread/topic.
Please see the forum rules on top of each sub forum too, thank you.


-------------------------------------------

More information and how-tos' can befound in the Wiki: http://www.ghisler.ch/wiki/index.php/Main_Page

Topics

About Total Commander: History, Screenshots, Files, etc...
FAQ - Frequently asked questions.
Known bugs and workarounds
Known version-lasting bugs without workaround
Tutorials - Step by step instructions for certain tasks.
List of internal functions - Functions that work out of the box.
Plugins expanding the functionality.
List of 64-bit plugins and addons
Useful tools to be used with Total Commander
Configuration: Adapt Total Commander.
Look and Feel modifications.
Community portal - Links to Total Commander related websites, forums, etc.
Developer's corner - Information for addons/plugins developers.
Ideas and suggestions
http://www.ghisler.ch/wiki/index.php/Ini-settings


Also the HISTORY.txt and the Forum are great source of Information, as many is mentioned only there.


-------------------------------------------

Mehr Informationen und Anleitungen findet Ihr im Wiki: http://www.ghisler.ch/wikide/index.php/Hauptseite

Verfügbare Kategorien

Über Total Commander: Geschichte, Bildschirmfotos, Dateien, etc...
FAQ: Häufig gestellte Fragen
Bekannte Fehler und Behelfslösungen
Anleitungen: Schritt für Schritt Anleitungen für bestimmte Aufgaben
Interne Funktionen die zum Basispaket gehören.
Plugins erweitern die Funktionalität
Liste von 64bit PlugIns für den TC64
Nützliche Werkzeuge zur Benutzung mit dem Total Commander
Konfiguration: Total Commander anpassen
Tc32/Tc64 Konfiguration: "RedirectSection" und "PROCESSOR_ARCHITECTURE"
Look and Feel Modifikationen
Weblinks zu Seiten die irgendwie mit Total Commander zusammenhängen
Ideen und Vorschläge im Überblick: Funktionen, die Total Commander noch nicht hat.
http://www.ghisler.ch/wikide/index.php/Ini-Einstellungen


Auch die HISTORY.txt und das Forum sind voll mit Informationen, vieles wurde nur dort erklärt.


-------------------------------------------


Old Tutorial from User Clo (Claude Charries †)
e.g. here: http://marmouset.atspace.com/helptc/
Last update: September, 25, 2009.



 
Last edited by Stefan2 on 2017-04-10, 11:55 UTC, edited 6 times in total.

User avatar
Stefan2
Power Member
Power Member
Posts: 2183
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Button bar: Create Erstelle Button / Wechsle Buttonbar

Post by *Stefan2 » 2014-08-28, 21:10 UTC

This is a answers-only, no-questions how-to thread. Don't post questions, post here how-tos' only.

--------------------------------------------------------------


Buttonbar

How to create an button

Right click on the button bar at the top and select "Change..."
In the "Change button bar" dialog, click "Add", then fill in the properties as follows:

Code: Select all

Command    = <your application with full or relative path, or a TC EM_ or CM_ command>
Parameters = <parameters for your application, e.g. TCs parameter (press F1 key for help)>
Start path = <if need, or leave empty>
Icon file  = <e.g.: %commander_path%\WCMICONS.DLL>
Tooltip    = <a hint for you, so you still know next week what this button do.| Use a pipe symbol to insert a line break>

Enable "[_]Run minimized" or Run maximized, if wanted
Then click OK to create the button.


Note: you do not need to take care on and fill out all fields. "Command" is mandatory, "Icon" too, else the button is not visible. "Parameters" only if need.

Visible Command options:
Command: '-1' insert an separator between two buttons (an free space, and with option '[x]Flat Icons' a pipe-like symbol '|')
Command: '-2' insert a line break in button bar to get two rows.
ghisler(Author) wrote:the button bar auto-wraps when it becomes too wide
ghisler(Author) wrote:Total Commander 7.5 will support both a user-defined line break in the bar (command: -2)
and an unlimited number of lines!
viewtopic.php?p=144991#144991



While button is open for modification, press F1-key for more help.
....
...
%P causes the source path to be inserted into the command line, including a backslash (\) at the end.
%N places the filename under the cursor into the command line.
%T inserts the current target path. Especially useful for packers.
%M places the current filename in the target directory into the command line.
%O places the current filename without extension into the command line.
%E places the current extension (without leading period) into the command line.
%S insert the names of all selected files into the command line. Names containing spaces will be surrounded by double quotes.
Please note the maximum command line length of 32767 characters.
%S10 insert the names of the first 10 selected files (max.) into the command line.
Allows to limit the number of file names passed to the program. You can use any other number.
%P%S insert the names of all selected files into the command line, with full path. Names containing spaces will be surrounded by double quotes.
Do NOT put quotes around %P%S yourself!
...
%L, %l, %F, %f, %D, %d, %WL, %WF, %UL, %UF create a list file in the TEMP directory
with the names of the selected files and directories,
and appends the name of the list file to the command line.
...
%L Long file names including the complete path, e.g. c:\Program Files\Long name.exe
%F Long file names without path, e.g. Long name.exe
...
%UL, %UF like %L and %F, but with a UTF-8 Unicode list file (with byte order marker)
%WL, %WF like %L and %F, but with a UTF-16 Unicode list file (with byte order marker)
...
....

Note: you can use environment variables (like "%WinDir%" or "%Commander_Path%") in the Command field only.
You cannot use environment variables in "parameters" because they collide with placeholders like %P%N.


You could use environment variables in Parameter field too, but only, if you would use "COMSPEC" as commando,
like: %COMSPEC% /c start "" "%COMMANDER_PATH%\ADDONS\TCMENU.EXE"
-or-
like: cmd /c start "" "%COMMANDER_PATH%\ADDONS\TCMENU.EXE"
(Note the empty quote pair after start, that are for an emtpy title. See START /? help for more)
But than you have to double percent signs in Parameters field too: "%%APPDATA%%\GHISLER\windows.bar"
Example:

Code: Select all

Command=%ComSpec%
Parameters=/c ""X:\Path\To\xsltproc.exe" --output "%P%O (out).%E" --novalid %%COMMANDER_DRIVE%%\XSLT\my_transform.xsl "%P%O.%E""

TCs paramter like %N %N %T etc. can normaly be use in Parameter field only.
But you can put parameters in "command" input box if you use double quotes correctly, e.g.
"%COMMANDER_Path%\Program name" "%COMMANDER_DRIVE% and other stuff" other_parameter

Also try double percent signs:
Command=cmd /c
Parameters=Start "" "%%Commander_Path%%\Tools\Notepad2.exe" %P%N
(Please note that TC will quote %P%N himself, so don't quote them by yourself)




Often you would just call a DOS batch or a VBS script and send the TCs paramter as arguments:

Command: cmd /k %COMMANDER_DRIVE%\XML\xslt\style-transform.cmd %COMMANDER_DRIVE%
Parameter: "%P%N"

style-transform.cmd batch (%COMMANDER_DRIVE%\XML\xslt\style-transform.cmd)

Code: Select all

@echo off
set uri=%2
set uri=%2:\=/%
set xslt=%1\XML\xslt\style-transform.xslt
set xslt=%xslt:\=/%

%1\java\jre\bin\java.exe -cp %1\SaxonHE9\saxon9he.jar net.sf.saxon.Transform -xsl:%xslt% -u jar:file:///%uri%!/word/document.xml -o:%~n2.xml
%1 ==> %COMMANDER_DRIVE%
%2 ==> %P%N (the selected file incl. path)



Deutsch: %L und andere Platzhalter werden nur im Feld "Parameter" ersetzt.
Dafür werden im Feld "Befehl" Umgebungsvariablen unterstützt.
Beides geht leider nicht, das könnte zu nicht eindeutigen Situationen führen,
etwa %P%N -> Ersetzen von %P% durch Umgebungsvariable P statt %P durch Pfad.
ghisler(Author)


Note: you can also drag&drop a application.exe on the buttonbar to create a new button.
Next right click the new button and chose "Modify" to set it up correctly.


- - -

User who read this explanation also read the following posts below:


-- How to find and use TCs' internal command
-- TCs' user commands (em_xxxxx)
-- Add shortcut key to em_ or cm_ commands



- - -

How to create an button by drag&drop

You also can create an Button by drag & dropping an executable (exe/vbs/ahk/etc....) onto the button bar.

Next right click on that button and choose "Change...".

Read more in the section above ^^^^^^


- - -


TOTALCMD#BAR#DATA

You can also create new buttons by copy and paste an existend button
or by pasting an button code, provided in the forum, like:

Code: Select all

TOTALCMD#BAR#DATA
cmd /c
for /f "tokens=*" %%D in ('type %F') do @md "%%~nD"
C:\Windows\system32\cmd.exe
Create Folder from Files


-1 

Copy that code, right click on the button bar, chose "Paste", done.


Explanation:

Line 1: let TC detect his own code in clipboard
Line 2: the commando
Line 3: the parameters (leading ‘?’ will show you the command before actual executing
Line 4: path to icon file
Line 5: tooltip
Line 6: default start path
Line 7: app window parameter: minimized /maximized (usercmd.ini: iconic)
Line 8: number of the TC internal command, if any in line 2. Else ‘-1’ for other commands.



---


https://ghisler.ch/board/viewtopic.php?p=335674#335674

Erklärung zu TOTALCMD#BAR#DATA


Dies ist der Code für einen Total Commander-Button/Knopf
zwecks Austausch zwischen Anwendern über das Forum:

Code: Select all

TOTALCMD#BAR#DATA
cmd /k
?ECHO %P%N %T%M 
C:\Windows\system32\cmd.exe
Hier eine |kurze Erklärung|als Tooltip


-1
Erklärung:

Zeile 1: dadurch kann der TC diesen Code in der Zwischenablage erkennen und den 'Einfügen'-Eintrag im Button-Kontextmenü einblenden.
Zeile 2: Der Befehl / das Kommando
Zeile 3: Die Parameter zum Befehl (das führende '?' bewirkt, dass das Kommando beim Ausführen erstmal angezeigt wird)
Zeile 4: Pfad zur Datei des Icons
Zeile 5: Der Tooltip
Zeile 6: Der Startpfad
Zeile 7: Aufrufparameter minimized Als Symbol /maximized maximiert (usercmd.ini: iconic)
Zeile 8: Die Nummer des internen TC-Befehls falls Zeile 2 einen solchen beinhaltet, ansonsten '-1' bei anderen Befehlen.


Anwenden dieses Codes:
- den Code markieren > in die Zwischenablage kopieren > rechts Klick auf die Buttonbar am gewünschten Platz > "Einfügen" auswählen.


Weitere Hilfe:
Drücke im geöffneten Button-Dialog (rechts Klick auf die Buttonbar > Ändern...) die F1-Taste um die Hilfe zu den Parameter zu lesen.

Klicke dort auf das Lupen-Symbol Icon um eine Liste der TC-internen Befehle zu sehen.




- - -

Some information from the wiki:
The Button bar

With the button bar you can call menu commands, external programs and even other button bars.
If you leave the mouse cursor on a button for a moment, a small window with a description will appear( if you haven't deactivated it in Help texts).

You can easily add buttons to the button bar using Drag&Drop (with pressed SHIFT key).
By pressing the right mouse button, you can open a local menu, which allows to change or delete buttons.
For further changes in the button bar you should use the Dialog box to change the whole button bar.
Read more at >>> http://www.ghisler.ch/wiki/index.php/Buttonbar
Mit der Buttonbar lassen sich Menübefehle, externe Programme sowie weitere Buttonbars aufrufen.
Lässt man den Mauscursor einen Moment auf einem Button stehen, so erscheint eine Erklärung (sofern dies nicht unter Optionen deaktiviert wurde).

Die Buttonbar lässt sich durch einfaches Drag&Drop (bei gedrückter Umsch-Taste) einfach erweitern.
Mit der rechten Maustaste öffnen Sie ein lokales Menü, mit dessen Hilfe Sie einfach Buttons ändern bzw. löschen oder auch kopieren können.
Für weitergehende Änderungen am Buttonbar empfiehlt sich die Verwendung der Dialogbox zum Ändern der ganzen Buttonbar.
Mehr Infos >>> http://www.ghisler.ch/wikide/index.php/Buttonbar


--------------------------------------------------------------

Buttonbar wechseln ToDo bzw. wip
Buttonbar wechseln
Haupt-Buttonbar ändern
Umschalten zwischen Buttonbars
http://www.ghisler.ch/wikide/index.php/Buttonbar_wechseln




- - -

Mehrere Buttonbars anlegen und zwischen denen umschalten:

TC speichert die Buttonbar-Einstellungen in einer Textdatei mit Endung 'BAR'
Standardmäßig heißst die ("Haupt-buttonbar") Datei 'DEFAULT.BAR', man kann diese aber nennen wie man möchte.


Welche Datei genommen wird steht in der wincmd.ini (falls abweichend vom Standard)
unter '[Buttonbar]' und 'Buttonbar='
(INFO: die '*.br2'-Dateien sind cache der Icons)

Bei mir steht dort:
Buttonbar=%commander_path%\plugins\BARs\Menu01.BAR



Meine 'Menu01.BAR' ist im einfachsten Fall eine Kopie der 'DEFAULT.BAR'

Aber der erste Button dieser 'Menu01.BAR' verweist auf die selbe 'Menu01.BAR'
Der zweite Button verweist auf eine 'Menu02.bar'
Der Dritte auf '%Commander_Path%\plugins\BARs\Menu03.bar', u.s.w.

Die anderen Bars' haben die selben ersten Buttons.
Dadurch kann man von jeder Bar auf eine andere Bar umschalten.
(Extra Tipp: die jeweilige Bar verweist für ihren eigenen Button auf ein etwas
andersfarbige Icon, welches den Eindruck eines gedrückten Zustands vermittelt)



In der *.bar-Datei sieht das in etwa so aus:
[Buttonbar]
Buttoncount=72
button1=%Commander_Path%\plugins\BARs\Menu01-Gedrueckt.ico
cmd1=%Commander_Path%\plugins\BARs\Menu01.bar
iconic1=0
menu1=Menu01 - Main
button2=%Commander_Path%\plugins\BARs\Menu02.ico
cmd2=%Commander_Path%\plugins\BARs\Menu02.bar
iconic2=0
menu2=Menu02 - Special tools
button3=%Commander_Path%\plugins\BARs\Menu03.ico
cmd3=%Commander_Path%\plugins\BARs\Menu03.bar
iconic3=0
menu3=Menu03 - Work
button4=%Commander_Path%\plugins\BARs\Menu04.ico
cmd4=%Commander_Path%\plugins\BARs\Menu04.bar


Die *.bar-Dateien sind reine Textdateien und können "von Hand" editiert werden.

Für einen Weg über das Menü siehe das Wiki: http://www.ghisler.ch/wikide/index.php/Buttonbar_wechseln


Das Tool 'Nested Button Bar Creator 2.00' erleichter die Erstellung und spendiert die nötigen Buttons.
http://utceditors.totalcmd.net/tc_tools/nested_button_bar_creator/overview.htm
http://utceditors.totalcmd.net/tc_tools/nested_button_bar_creator/overview_de.htm
http://ghisler.ch/board/viewtopic.php?t=8829
http://totalcmd.net/plugring/bar_creator.html










--------------------------------------------------------------


Button as Drop-Down Menu

http://ghisler.ch/board/viewtopic.php?p=215709#215709
ts4242 Power Member Posted: Tue Jan 18, 2011 7:54
1- Right click on empty part in button bar and choose "Change..."
2- On Change button bar dialog press Add button.
3- Press Change >> button and select Add subbar from the menu
4- In open dialog type new file name
5- TC will open another Change button bar dialog, add your favorite programs.
6- Before closing this dialog check the option "Show as menu"




http://ghisler.ch/board/viewtopic.php?p=216387#216387
petermad Power Member Posted: Sun Jan 30, 2011 15:13
To make for example a subbar for your graphics programs do the following:

1. Open your main button bar in the "Change button bar" dialog by right clicking on the empty area
at the end of the button bar, or using the menu: "Configuration" -> "Button Bar...".

2. Add a new button by cliking the "Add" button.
3. Press the button marked "Change >>" and choose "Add Subbar >>".

4. Write for example graphics.bar as the File name in the Browse dialog and click OK.
- You are not bound to create a dummy *.bar file prior !
- Just state a new (non-existing yet) name in the upper field of the Add sub-bar dialogue, and TC'll create the file !

5. Now a second "Change button bar" dialog window is opened with a new bar file called graphics.bar.
6. Add your graphic programs one by one to that new bar and click OK when you are finished.
7. Now you are back to the dialog with you main button bar, and in the right side of the dialog
there will now be an option "Show as menu" that you can select. That option is ONLY visible
when the Command field has a *.bar file in it. Select it and click OK

If you click the new button, the subbar with the graphics will open as a menu. If you Shift+click the new button
it will replace the main button bar - use the first button to get back to your main button bar again.



Balderstrom Power Member Posted: Sun Jan 30, 2011 20:16

As far as what petermad was talking about,
Here's an example of a very simple button bar:

Command: %TCData%\GUI\ToolBars\PackUnpack.bar
IconFile: %TCData%\GUI\Icons\mwmMix0510.icl
NOTE: Make sure you tick: [v] Show as a menu

Contents of "PackUnpack.bar"
[Buttonbar]
Buttoncount=3
button1=%TCDATA%\GUI\Icons\mwmMix0510.icl,56
cmd1=cm_PackFiles
iconic1=1
menu1=(+) Pack ++
button2=
iconic2=0
button3=%TC%\wcmIcons.dll,31
cmd3=cm_UnpackFiles
iconic3=1
menu3=Unpack

When you click on that button - that is on your main button bar a drop down menu will be shown. There is also a wincmd.ini setting:

Code: Select all

[Buttonbar]
PopupIconSize=24	
If you shift click on that icon, it will replace your main-button bar with the contents of that "sub" button-bar.
You can as well add as the first (or last) item a "switch" button that activates your main button bar.
that button will NOT be shown when the button-bar is displayed as a list/drop down menu.

What all this _doesn't_ do, is it is not layed out like a Grid (opera-speeddial like). It is just a drop-down menu with icons.



MVV Power Member Posted: Wed Jan 19, 2011 10:19
Yes, you can't drag items directly to subbar, but if you click menu button while Shift is down,
TC will open this subbar as usual buttonbar - so you will be able to drag items to it.
Then you may click first buttonbar button Go back (TC always creates this button for new bars) to return to main buttonbar.


- - -

Third party tools

MGP Software >>> http://www.mgpsoft.net/Downloads/
TCmenu19.zip >>> http://www.mgpsoft.net/Downloads/TCmenu.jpg
TCToolbar14.zip >> http://www.mgpsoft.net/Downloads/TCToolbar.jpg

http://ghisler.ch/board/viewtopic.php?t=738
http://ghisler.ch/board/viewtopic.php?p=52917#52917



--------------------------------------------------------------

Icon Resources to use as Button icon

On default, put "%Commander_Path%\WCMICONS.DLL"
in the Icon file box, press TAB-key and choose an Icon.


But there are many more Icon libraries on your computer.


For an reference go to: https://diymediahome.org/windows-icons-reference-list-with-details-locations-images/

They have a nice, full list of available Icons:
%windir%\system32\compstui.dll (Common Property Sheet User Interface)
%windir%\system32\ddores.dll (Device Category Information and Resources)
%windir%\system32\ieframe.dll (Internet Explorer)
%windir%\system32\imageres.dll (Windows Image Resource)
%windir%\system32\mmcndmgr.dll (Microsoft Management Console Node Manager)
%windir%\system32\MORICONS.DLL (Windows NT Setup Icon Resources)
%windir%\system32\netshell.dll (Network Connections Shell)
%windir%\system32\pnidui.dll (Network System Icons)
%windir%\system32\shell32.dll (Windows Shell Common)
%windir%\system32\wmploc.dll (Windows Media Player Resources)
%windir%\system32\pifmgr.dll (Windows NT PIF Manager Icon Resource Library)
%windir%\system32\wpdshext.dll (Portable Devices Shell Extension)
%windir%\system32\comres.dll (COM -Ressourcen)
%windir%\system32\dmdskres.dll (Disk Management Support Snap-In)
%windir%\system32\Dsuiext.dll (Directory Service Common UI)
%windir%\system32\inetcplc.dll (Internet Control Panel)
%windir%\system32\mstscax.dll (Remote Desktop Services ActiveX Client)
%windir%\system32\setupapi.dll (Windows Setup API)
%windir%\system32\shdocvw.dll (Shell Doc Object and Control Library)
%windir%\system32\urlmon.dll (OLE32\Extension for Win32)
%windir%\system32\wiashext.dll (Imaging Devices Shell Folder UI)
%windir%\system32\mmres.dll (General Audio Resources)


Put the path to such DLL into the Icon file box,
press TAB-key and choose an Icon.

--------------------------------------------------------------


Some of many thousend related forum posts (search the forum for more)


Sync-Aufgabe als Button anlegen, geht das?
Kommando: %COMMANDER_EXE%
Parameter: /S=S:= D:\ I:\
Startpfad: %COMMANDER_PATH%
Icondatei: TOTALCMD.EXE
https://ghisler.ch/board/viewtopic.php?t=43435


Oft gebrauchte Verzeichnisse als Button anlegen?
Mappe verbinde Ordner als Laufwerk buchstaben SUBST NET USE
https://ghisler.ch/board/viewtopic.php?t=48075


Textdatei mit Button anlegen u. automatisch öffnen m. Editor
Kommando: cmd
Parameter: /c chcp 1252 & cmd /c echo %P>"_my file.txt"&& START "" "%%COMMANDER_PATH%%\Tools\Notepad2.exe" /l 2 "_my file.txt"
Startpfad: leer (blank)
Icondatei: %COMMANDER_PATH%\Tools\Notepad2.exe
Tooltip: Textdatei (_my file.txt) im aktuellen Ordner erzeugen MIT Pfad in Textzeile Nr. 1
https://ghisler.ch/board/viewtopic.php?t=47391


Suchen per Button sofort starten
Suche so einstellen wie gewünscht und abspeichern in der Registerkarte "Laden/Speichern", beispielsweise als "Hans_Willi".
Dann im TC einen neuen Button anlegen mit dem Kommando "LOADSEARCH Hans_Willi".
-oder-: totalcmd.exe /O /S=F:Hans Willi.
https://ghisler.ch/board/viewtopic.php?p=290037#290037


Button anlegen: Sprung zu Links=C: Rechts=D:
c:\totalcmd\TOTALCMD64.EXE /O /L=c:\ /R="d:\
-oder-: OPENTABS myTabfile.tab
https://ghisler.ch/board/viewtopic.php?t=40785


Dateiliste filtern
Kommando: CD >MeineFilter
https://ghisler.ch/board/viewtopic.php?p=332759#332759


Button für "Hinzufügen zur Media Player Classic Playlist"
Kommando: C:\Pfad\zu\MPC-HC.exe
Parameter: /open /add "%P%O.%E"
https://ghisler.ch/board/viewtopic.php?t=39514


Button zum Automatischen erstellen von Ordnern?
Kommando: cmd.exe
Parameter: /k chcp 1252 & for /f "usebackq delims=" %%i in (%P%N) do @echo "%%i"
https://ghisler.ch/board/viewtopic.php?t=34248


Help in parameters of button bar
Command: %COMMANDER_PATH%\Tools\MyBatch.cmd
Parameters: "%F" "%P" "%T"
https://ghisler.ch/board/viewtopic.php?p=285726#285726


User command to pass two file names to external executable
P%S %T%R
%P%S2
https://ghisler.ch/board/viewtopic.php?p=325378#325378


"New text file" (possibly unicode enc.) on button
CMD = cmd /c
PARAM = ?COPY "%Commander_PATH%\ShellNew\unicode.txt" "_newfile.txt"
https://ghisler.ch/board/viewtopic.php?p=323723#323723


Script for many selected files
Command: "path2script\PowerISOCreate.vbs"
Parameters: "%T" "%L"
https://ghisler.ch/board/viewtopic.php?p=321729#321729



How to create multiple folders at once? 1..50
CMD: PowerShell -NoProfile -NoExit
https://ghisler.ch/board/viewtopic.php?p=321343#321343


--------------------------------------------------------------

Links to other posts:

A basic button bar menu demo
https://ghisler.ch/board/viewtopic.php?t=22857







--------------------------------------------------------------
Finde mich:
Find me:
Last edited by Stefan2 on 2018-05-28, 07:22 UTC, edited 16 times in total.

User avatar
Stefan2
Power Member
Power Member
Posts: 2183
Joined: 2007-09-13, 22:20 UTC
Location: Europa

TCs' Benutzer definierte Befehle (BDB) (em_xxxxx) UserCmd.ini user defined commands (UDC)

Post by *Stefan2 » 2015-01-15, 07:45 UTC

TCs' Benutzer definierte Befehle / Eigene Befehle / Erweiterte Befehle (em_xxxxx)


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

DEUTSCH

Als Alternative zu den TC internen “cm_irgendwas” Kommandos,
(siehe TOTALCMD.INC -Datei im TC-Ordner: cm_RightBySize, cm_RenameOnly, cm_CompareDirs,...)
kannst du auch eigene Anwenderbefehle, “em_irgendwas”, erstellen.
(z.B.: em_Rechner, em_StarteAHKprogramm, em_RunNotepad, em_OpenTCFolder, em_GoToMyHome)

Um eigene Befehle zu erstellen, folge einem dieser beiden Möglichkeiten.


Möglichkeit 1, manuelle Erstellung durch editieren der „usercmd.ini“

Merke 1: die usercmd.ini befindet sich immer im Ordner mit der wincmd.ini. (Siehe Hilfe-Menü > Über TC > Pfade)
Merke 2: falls keine usercmd.ini vorhanden ist, erstelle eine normale Textdatei mit diesem Namen.

-----------------------------

Code: Select all

[em_MyCommandName] 

cmd= <kompletter oder relativer Pfad zum gewünschten Programm> 

param= <Parameters zu deinem Programm, bzw. TC-interne Parameter wie zB %P %N %T %L %F %S .....> 

path= < working directory> 

menu= < "tooltip”> 

button= <Icondatei> 

iconic= < "=1" run minimized, else "=0" run normal mode and visible> 
-----------------------------

Tipp: öffne einen existierenden Button per Rechtsklick, dann drücke die F1-Taste und lies weiter.

Tipp: Umgebungsvariablen wie %APPDATA% werden im Parameterfeld nicht aufgelöst.
Umgebungsvariablen gehen nur im Feld "Kommando".
(Außer mittels dem Kommando comspec und vars in doppelten Prozentzeichen als Parameter)


Beispiel
totalcmd\usercmd.ini wrote:[em_Rechner]
cmd=calc.exe

[em_StarteAHKprogramm]
cmd=%Commander_Path%\MyTools\AHK\AutoHotkey.exe
param=%P%O.ahk

[em_RunNotepad]
cmd=notepad

[em_OpenTCFolder]
cmd=explorer %Commander_Path%

[em_GoToMyHome]
cmd= CD %USERPROFILE%\My Documents

[em_ReNamer]
cmd=%Commander_Path%\MyTools\ReNamer\ReNamer.exe
Param=/list "%L"

[em_CopyBasenameToClip]
cmd=%comspec% /c
param=del %%tmp%%\tctmp & for /f "tokens=*" %%B in ('dir /b %S') do @echo %%~nB >> %%tmp%%\tctmp & type %%tmp%%\tctmp |clip
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


Möglichkeit 2, über den Dialog


Buttonbar > rechte Maustaste > "Ändern..."
Im Button-Dialog auf das [Lupensymbol] klicken
(oder cm_CommandBrowser in die TC-Befehlszeile eingeben)

Links, die Kategorie "usercmd.ini" auswählen
(Falls dort keine usercmd.ini existiert, erstelle eine Datei mit diesem Namen im TC-Ordner)
Unten, auf Button [Neu] klicken

Name für den benutzerdefinierten Befehl eingeben, z.B. [ em_MeinErstesUDC ] (das "em_" muss sein!)
Auf Button [OK] klicken

Eigenschaften für den Befehl eingeben.
z.B.:
    Kommando: Notepad
    Parameter: "%O.txt"
    Startpfad:
    Icondatei; Notepad
    Icon:
    Tooltip: Erstelle Textdatei mit Namen unter Cursor.

Den Dialog mit [OK] schließen.
Den Befehlsbrowser mit [OK] schließen.
(Den Button-Dialog mit [OK] schließen, falls geöffnet)

Fertig.

Mehr unter > http://www.ghisler.ch/wikide/index.php/Benutzerdefinierte_Befehle




- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


Weise einem Befehl (em_ oder cm_) ein Tastaturkürzel zu

Öffne „Konfigurieren > Einstellungen > Diverses“
* Bei Tastaturkürzel wähle eine freie Kombination
* Klicke auf das Vergrößerungsglas um ein Kommando auszusuchen
* Tippe em_ (oder cm_) zum filtern und wähle das gewünschte Kommando (z.B.: em_Rechner)
* Schließe den Einstellungsdialog mit [OK]
* Noch einmal [OK] und Fertig.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


Ein paar Anmerkungen, gefunden im Forum
FRAGE:
Kommando: %COMMANDER_PATH%\ADDONS\TCMENU.EXE
Parameter: %APPDATA%\GHISLER\windows.bar
Leider bekomme ich %APPDATA%, als Parameter für den TCmenu Aufruf, vom TC nicht expandiert. Geht das und wie?

ANTWORT:
Nein, geht nicht.
Umgebungsvariablen wie %APPDATA% werden im Parameterfeld nicht aufgelöst um Verwechslungen mit den internen Platzhaltern ( z.B. %P%N ) zu vermeiden

Umgebungsvariablen gehen nur im Feld "Kommando".

Verschiebe die Parameter von Parameter nach Kommando. z.B.
Kommando: %COMMANDER_PATH%\ADDONS\TCMENU.EXE %APPDATA%\GHISLER\windows.bar
Parameter: <leer>

Falls %COMMANDER_PATH% oder %APPDATA% Leerzeichen enthält, müssen Sie noch doppelte Anführungszeichen verwenden:
Kommando: "%COMMANDER_PATH%\ADDONS\TCMENU.EXE" "%APPDATA%\GHISLER\windows.bar"
Parameter: <leer>

Eine Alternative wäre eventuell ein Umweg über COMSPEC.
Prozentzeichen in "Parameter" müssen dabei verdoppelt werden, damit der Kommandointerpreter die Variablen erweitert:

Kommando : %COMSPEC% /c start "" "%COMMANDER_PATH%\ADDONS\TCMENU.EXE"
Parameter: "%%APPDATA%%\GHISLER\windows.bar"

tuska Posted: Tue Oct 20, 2015 22:44 Post subject: Datei per Email senden - Shortcut
http://ghisler.ch/board/viewtopic.php?t=40130

- em_ User-Kommando erstellen:

1. Rechtsklick auf einen freien Platz neben der Symbolleiste > auf "Ändern" drücken
2. Button "Anfügen" drücken
3. Klick auf das Lupen-Symbol

4. Links unter "Kategorie" nach unten scrollen und Klick auf "usercmd.ini"
5. Klick auf Button "Neu..."
6. Neuer Name für Befehl eingeben, zB em_Datei_an_Email, dann OK drücken
7. Kommando, Parameter, Icondatei, Tooltip erfassen (drücke F1-Taste für Hilfe)
______
______Kommando: outlook
______Parameter: /a %P%N
(Siehe support.office.com article/Command-line-switches-for-Outlook)
______Icondatei: C:\WINDOWS\System32\shell32.dll => das Brief-Symbol auswählen
______Tooltip: Strg + E | Datei unter Cursor mit Outlook versenden
______

8. OK, OK, OK drücken



- Tastaturkürzel anlegen:

1. Menü "Konfigurieren" - Einstellungen - Diverses auswählen
2. Tastenkombinationen umdefinieren: zum Beispiel
______anhaken von "Strg +",
______dann rechts außen das Dropdown-Feld anklicken und den Buchstaben "E" auswählen
3. In der Zeile von "Befehl" auf die Lupe klicken
4. In der Kategorie wieder usercmd.ini auswählen
5. Den Befehl "em_Datei_an_Email" anklicken, dann OK-Button drücken
6. ACHTUNG - Wichtig: Jetzt den grünen Pfeil rechts von der Lupe anklicken
7. OK anklicken
FERTIG

Ab jetzt sollte mit dem zeigen auf eine Datei im TC (Markierung nicht erforderlich)
und drücken von Strg + E eine neue Outlook-Nachricht erscheinen,
bei dem automatisch die Datei als Anhang vorhanden ist.

Gruß
Karl




ENGLISH

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

As alternative to the TC internal “cm_something” commands, (see TCs' internal commands post,
or TOTALCMD.INC -File in TC-Folder: cm_RightBySize, cm_RenameOnly, cm_CompareDirs,...)
you can create your own user commands “em_something
(E.g.: em_hide_selected, em_mydocuments, em_calc, em_newdir)


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
History wrote:23.07.06 Added: Support for user-defined commands em_xyz (Extended commands):
usercmd.ini in same directory as wincmd.ini,
with entries like this:
[em_notepad]
cmd=notepad.exe
param=%P%N
path=c:\windows
iconic=0 ([x] run minimized) (same as in .bar file, but not numbered)

23.07.06 Added: Read em_xyz commands from wcmd_lng.ini
(where wcmd_lng is the base name of the selected mnu file)
if not found in usercmd.ini, allows custom mnu files with user-defined commands

(“cm_” = command, “em_” = extended command)

You can use this "EM_" commands just like internal "CM_" commands
- as button
- in main menu
- in TCs' command line
- in Preferences > Configuration... > Misc. > Define Hotkeys
- with external tools via SendMessage/PostMessage


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



To create own user commands; use one of this two ways.



Way 1, manually by hand:

just edit the file usercmd.ini in your TC directory.


Note 1: Usercmd.ini is always in the same directory as wincmd.ini (see Help menu > About TC > Paths)
Note 2: If you have no usercmd.ini there, create the file first as plain text file (ASCII or UNICODE)
(if you utilize the 'Way 2' below, that file will be created for by TC itself)


-----------------------------

Code: Select all

[em_MyCommandName]

cmd=     <full or relative path to your executable>
          (You can use the environment variables %commander_drive% or %commander_path% 
         to open programs independent from the drive letter of the USB stick.)

param=   <parameters to your command, if any or a TC-internal parameter like %P %N %T %L %F %S .....>

path=    <empty, dot, or wanted folder as working directory>

menu=    <like "tooltip=", add a tooltip if you want to use this em_command as command for an button>

button=  <like "icon=", chose the icon if you want to use this em_command as command for an button>

iconic=  < "=1" run minimized, else "=0" run normal mode and visible>
-----------------------------

(only the header and the cmd entry are need for a functional command. param is mostly used too to make any sense.
The others only if this user command should be used as menu button too, for to provide additional button settings)

Tip: right click an existent button, and then press F1 key and read more.


Examples:
totalcmd\usercmd.ini wrote:[em_hide_selected]
cmd=cd
param=*.*|%S
menu=Hide Selected Files
button=wcmicons.dll,73

[em_mydocuments]
cmd=cd %$PERSONAL%
menu=My Documents (personal)

[em_calc]
cmd=calc.exe


[em_newdir]
cmd=%COMSPEC% /c
param=if not exist "%T%O" md "%T%O"
menu=Make directory with same name as file under cursor in opposite panel
button=%COMMANDER_PATH%\wcmicons.dll,29

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
petermad wrote:
petermad, Power Member
Posted: Sat Mar 22, 2014 1:29 Post subject: Meaning and use of "iconic" in Default.bar
Source URL: http://ghisler.ch/board/viewtopic.php?t=39951

iconic=1 is what you get when you check the option "Run minimized" in the "Change button bar" dialog.
iconic=-1 is what you get when you check the option "Run maximized".

If the button you are editing points to another button bar (a subbar) then iconic=1 means "Show as menu".

If iconic= is not present or just says iconic= then it means iconic=0.



Whether iconic=0 is present or not depends on how you started editing the button:

1. If you use the menu: "Configuration" -> "Button bar" and then find and edit the button in the "Change button bar" dialog then iconic=0 is set.
Same thing if you right click on the blank space in the end of the button bar and choose "Change".

2. If you on the other hand right click on an button in the bar and choose "Change" then the dialog "Change single button" opens,
and if you press OK in this dialog with "Run minimized" unchecked, then no iconic=0 is set and an existing iconic=0 for that button is removed.


Also if you copy and paste a button to the bar, then the items in the .bar file are mixed up and not written in sequence.
If you open the "Change button bar" dialog and press OK, then the items in the .bar file will be sorted correctly again and missing iconic=0 are added.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


Way 2, via dialog:

* open "Configuration > Options > Misc."
* choose any key (just temporarily for creating the command, or chose one to keep)
* click on magnifying glass icon, the 'cm_commandbrowser' will be launched
-or-
* just type 'cm_commandbrowser' into the TC command line box




-next-

* choose usercmd.ini at bottom of left listview
(the usercmd.ini file will be created if not existent yet, if you add a new command using new)

* click at [New]

* enter the wanted name for your new user defined command,
--- like for example 'em_MyCommandName'
--- (the "em_" -part is mandatory)
* click on OK

* type in your own command details,
or select a command on right side via the 'magnifying glass' symbol

* click on OK twice


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


See "TC internal 'cm_something' commands"- thread above for an how to use this commands.


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


Add shortcut key to em_ or cm_ commands


Utilize "Configuration > Options > Misc." to assign the hot key.

* open "Configuration > Options > Misc."
* by "shortcuts" choose a free key combo
* click on the magnifying glass
* type em_ (or cm_) and choose the wanted command by double clicking on it
* close the options dialog with [OK]
* click on OK



You can also manipulate the wincmd.ini's "[Shortcuts]" directly,

Examples:

[Shortcuts]
;Enable 'F2'-key to start inline-rename mode, additional to origin 'Shift+F6'
F2=cm_RenameOnly
;Enable 'Ctrl+F' to start find-files, additional to origin 'Alt+F7'
C+F=cm_SearchFor
;Use 'Ctrl+O' to launch DOS-Box in current path
C+o=cm_ExecuteDOS
;Disable 'Alt+F4' (Exit, close program), load Help instead
A+F4=cm_Keyboard
;Ctrl+Shift+Alt+F5 erstelle Archive im selben Panel
CA+F5=cm_PackFiles
;Ctrl+Shift+Alt+F5 erstelle Archive im selben Panel und lösche Source
CAS+F5=cm_PackFiles
C+P=cm_CopyNamesToClip
CS+P=cm_CopyFullNamesToClip
AS+F4=em_ShellNewFileTemplates


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


Example commands:

todo



See TC internal “cm_something” commands thread above for an how to use this commands.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
petermad wrote:AFAIK it is not possible to redirect usercmd.ini (to another place than the folder of the wincmd.ini)

But if you use a language file (not TC's internal English),
then you can also store user commands in a file with a name that corresponds the name of the language file.

If for example your language file is wcmd_arb.lng then you can store user commands in a file named wcmd_arb.ini

If your language file is wcmd_mytranslation_eng.lng then you can store user commands in a file named wcmd_mytranslation_eng etc.
Hint: Extended English Menus for Total Commander (by petermad), download at: http://www.totalcmd.net/authors/1223914.html


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Change / Convert a TC button into a user defined command

------------------------------------------------ TC Button command (just an example):
Command: "%COMMANDER_PATH%\my Tools\MyNiftyTool.CMD"
Parameters: "%P"
Start path: "T:\his makes no sense here\but just as example"
Icon file: C:\Windows\System32\imageres.dll
Icon: 14
Tooltip: Text to display as tooltip
[X] Run minimized
[_] Run maximized
------------------------------------------------ TC Button, copied to clipboard, ready to paste back to TCs' button bar:
TOTALCMD#BAR#DATA
"%COMMANDER_PATH%\my Tools\MyNiftyTool.CMD"
"%P"
C:\Windows\System32\imageres.dll,14
Text to display as tooltip
"T:\his makes no sense here\but just as example"
1
-1
------------------------------------------------ TC user defined command (usercmd.ini)
[cm_MyNewCommand]
cmd="%COMMANDER_PATH%\my Tools\MyNiftyTool.CMD"
param="%P"
path="T:\his makes no sense here\but just as example"
button=C:\Windows\System32\imageres.dll,14 (used, if you want to use em_MyNewCommand as button command too)
menu=Text to display as tooltip (used, if you want to use em_MyNewCommand as button command too)
iconic=1
------------------------------------------------


Note:
- The clipboard example is just that, an example. You don't need that step if you want to convert from button to usercmd.
- The 'em_' part of the usercmd-name is mandatory!
- You can assign keyboard shortcuts to such user defined commands.
-

Pitfalls:
- Some expanded TC parameter get automatically quoted, some not. Depends on if path contains space, and on parameter-combination sometimes.
- That parameter, which returns paths, have automatically an trailing backslash added.
-
-


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


Links:
http://www.ghisler.ch/wiki/index.php/User-defined_command
http://www.ghisler.ch/wikide/index.php/Benutzerdefinierte_Befehle



Finde mich:
Find me:

 
Last edited by Stefan2 on 2018-03-08, 10:24 UTC, edited 14 times in total.

User avatar
Stefan2
Power Member
Power Member
Posts: 2183
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Inquiry Basic Questions / Standardfragen an Hilfesuchende

Post by *Stefan2 » 2015-06-26, 13:31 UTC

This is a answers-only, no-questions how-to thread. Don't post questions, post here how-tos' only.

Please see first post for more information and how you can reach me for clarifying or suggesting improvements.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


Inquiry Basic Questions / Standardfragen an Hilfesuchende


Please answer this basic questions / bitte beantworte diese Standardfragen >>> http://ghisler.ch/board/viewtopic.php?p=297396#297396

Basic questions - Your relevant answers:
A: Skills/Account (unsolicitous):
B: WindowsTM/Bit/UAC:
C: TC version/Bit/plugins:
D: Location/Examples:
E: Steps/Why/Done:

Standardfragen - Deine hier relevanten Antworten:
A: IT Erfahrungen/ Benutzerkonto (freiwillig):
B: WindowsTM/Bit/UAC:
C: TC Version/Bit/Plugins:
D: Speicherorte/Beispiele:
E: Schritte/Wieso/Bisher:




- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

#################################### ENGLISH

Some basic questions to seeking help people (may be related to your issue or not):

** A: How would you rate your IT skills? (How detailed have we to instruct you?) non-existing/low/intermediate/general high
** -- Do you work with a limited user account, as administrator or as elevated administrator? At home or company?
(Answer only if you want to)

** B: Which WindowsTM do you use? W2k/XP/Vista/Win7/Win8/Win10
** -- Which bit architecture? 32-bit/64-bit
** -- Do you have UAC enabled?

** C: Which Total Commander version do you use? 32/64-bit? Installed or portable?
** -- Are here any relevant Plugins in use?

** D: Where are the files in question located? locally/ remote share/ zip archive/ ftp/ cd-rom/...
** -- Can you provide some example path and file NAMES (if relevant: file content/folder structure) and size?
** -- For renaming questions: provide origin and wanted file name examples! (origin.ext >>> wanted.ext)

** E: What are the *exactly* steps to reproduce the issue? (*exactly* means e.g. also: executed from menu/button/shortcut)
** -- What are you trying to do? What is your goal? (Let us understand you. And, maybe there are better ways to perform we can tell you)
** -- What have you already tried to do?


Note: to make things more clear you can upload somewhere a screenshot and post the link here.
How-to: http://ghisler.ch/board/viewtopic.php?p=287482#287482
Albeit new users can not post URLs to prevent spam, you just can split the URL like "www imagehost.com\123\myimage.png"

Note: please discuss only one subject/topic/issue in one thread. Open new threads for other issues.
Use a title that describes the content of your post. That way it can be found and be of use by others too.

And, from the Forum rules:
1.) Read up before asking! There is a dedicated FAQ section on the Total Commander homepage!
1a.) Use the search function before posting. Chances are your question has already been answered.
3.) Keep the focus: Questions outside the scope of a certain forum will ... be deleted.
8.) No cross posting. Post your message to the appropriate forum and nowhere else.

- - -

Basic questions - Your relevant answers:
A: Skills/Account:
B: WindowsTM/Bit/UAC:
C: TC version/Bit/plugins:
D: Location/Examples:
E: Steps/Why/Done:


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



#################################### DEUTSCH

Ein paar Standardfragen an Hilfesuchende (Passend zu deiner Angelegenheit, oder nicht)

** A: Wie würdest du deine IT-Kentnisse einschätzen? (Wie detailiert sollen wir antworten) keine/wenig/mittel/eigentlich hoch
** -- Arbeitest du als Anwender / Administrator / elevated Administrator? Zuhause oder in einer Firma?
(Antworte nur wenn du wirklich willst)

** B: Welches WindowsTM benutzt du? W2k/XP/Vista/Win7/Win8/Win10
** -- Welche Bit Architektur? 32-bit/64-bit
** -- Ist UAC eingeschaltet?

** C: Welche Total Commander version benutzt du? 32/64-bit? Installiert or portable?
** -- Hast du irgendwelche hier relevanten Plugins in Gebrauch?


** D: Wo sind die hier relevanten Dateien gespeichert? Lokal/ remote Freigabe/ ZIP Archive/ FTP/ CD-ROM/...
** -- Kannst du ein paar Beispielpfade und Dateinamen nennen (wenn relevant: Dateiinhalt/Ordnerstruktur) mit Größenangabe?
** -- Bei Umbenennfragen: nenne ein paar Vorher/Nachher Beispiele (Original.ext >>> Gewünscht.ext)

** E: Nenne die *genauen* Schritte um die Angelegenheit nachzuvollziehen (*genau* meint auch z.B.: Ausgeführt von Menü/Schaltfläche/Tastaturkürzel)
** -- Was möchtest du erreichen? Was ist dein Ziel? (Hilf uns dich zu verstehen. Eventuell gibt es andere Wege, welche wir die zeigen können)
** -- Was hast du bisher bereits versucht?


Note: to make things more clear you can upload somewhere a screenshot and post the link here.
How-to: http://ghisler.ch/board/viewtopic.php?p=287482#287482
Albeit new users can not post URLs to prevent spam, you just can split the URL like "www imagehost.com\123\myimage.png"

Note: please discuss only one subject/topic/issue in one thread. Open new threads for other issues.
Use a title that describes the content of your post. That way it can be found and be of use by others too.

And, from the Forum rules:
1.) Read up before asking! There is a dedicated FAQ section on the Total Commander homepage!
1a.) Use the search function before posting. Chances are your question has already been answered.
3.) Keep the focus: Questions outside the scope of a certain forum will ... be deleted.
8.) No cross posting. Post your message to the appropriate forum and nowhere else.

- - -

Standardfragen - Deine hier relevanten Antworten:
A: IT Erfahrungen/ Benutzerkonto:
B: WindowsTM/Bit/UAC:
C: TC Version/Bit/Plugins:
D: Speicherorte/Beispiele:
E: Schritte/Wieso/Bisher:



- - -



Und mit dem Windows Explorer funktioniert es?
Welches Windows OS benutzt du? W2k/XP/Vista/Win7/Win8/Win10(Build?)
Welche Bit Architektur? 32-bit/64-bit
Hast du Administratoren Rechte?

Welche Total Commander Version benutzt du? 32/64-bit?
Funktioniert es mit der anderen Bit-Version ( 32 statt 64, oder umgekehrt)?
Hast du irgendwelche hier relevanten Plugins in Gebrauch?
Funktioniert es, wenn du den TC als Administrator startest?
Arbeitest du als Administrator? ( ein ^- Zeichen vor dem Namen in der Titelleiste )

SIehe die Hilfe > "Konfiguration und Paramter > Kommandozeilenparameter"
Versuch mal den mit einer frischen INI (STandard Konfiguration) zu starten:
totalcmd.exe /N /I="%temp%\TC.ini"



Does it work with Windows Explorer?
Which Windows OS do you use? W2k/XP/Vista/Win7/Win8/Win10(Build?)
Which bit architecture? 32-bit/64-bit

Which Total Commander version do you use? 32/64-bit?
Do it work with opposite bitness (32 instead of 64, or vice versa)?
You can run 32bit and 64bit TC on a 64bit Windows, but only 32bit TC on a 32bit Windows.

Do it work running TC as Administrator?
Are here any relevant Plugins in use?

See the Help > "Configuration and Switches > Command line parameters"
Try to start TC with a fresh INI (default configuration):
totalcmd.exe /N /I="%temp%\TC.ini"




- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please see first post for more information and how you can reach me for clarifying or suggesting improvements.

Finde mich:
Find me:

User avatar
Stefan2
Power Member
Power Member
Posts: 2183
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Platzhalter 3

Post by *Stefan2 » 2017-01-09, 19:11 UTC

Arbeitskopie für

Post 5 - TC von außen steuern / SendMessage / WM_USER
https://ghisler.ch/board/viewtopic.php?p=336052#p336052

- - -

TC von außen mittels eines Skriptes steuern

Mit dem TC kann man bereits einiges mit den internen Möglichkeiten anfangen,
auch wenn man hier auch oft für komplexere Aufgaben ein externes Skript (Batch; VBS; AHK; PoSh;...) benötigt.
Der TC stellt hierzu Parameter bereit (aktueller und Zielpfad; Liste der ausgewählten Dateien; und viele mehr)
Siehe hierzu TC Automatisieren Skripten (Für jede Datei / Alle Dateien) >>> https://ghisler.ch/board/viewtopic.php?p=344898#p344898


Um den TC aber über ein externes Skript direkt zu steuern, um ihn zB TC-interne oder Benutzerdefinierte Befehle zu senden,
um Informationen und Daten zurück zu erhalten, um den TC zu automatisieren, kann man mit dem Konzept der "Windows Messages" arbeiten.

Dies soll eine kleine Anleitung sein, um zu zeigen, wie das mittels "SendMessage" und der in der HISTORY.TXT bereitgestellten Informationen bewerkstelligt werden kann.
DANKE an alle Forumsmitglieder und der Suchmaschine meiner Wahl für all die geposteten Details, ohne Euch wäre dieser Beitrag nicht möglich!


Fangen wir vorne an:


Für IPC (Inter Process Communication) kommen mehrere Technologien/Mechanismen in Frage:
- UDP, TCP/IP
- Mail Slots
- Named Pipes
- Shared Memory
- Windows Messages

Alles was bei WindowsTM im GUI mit Fenstern bei einer oder zwischen verschiedenen Anwendungen geschieht,
wird über die Windows-API durch "Messages" (Nachrichten) und die "Windows Messages Queue" geregelt.

Dadurch werden Ereignisse (Klick auf Button) mitgeteilt, Text-Daten ausgetauscht oder Befehle gesendet.

Die Übertragung der Nachrichten geschieht über SendMessage- bzw. PostMessage-Befehle.
(SendMessage wartet auf eine Rückmeldung, PostMessage schickt einfach weg und macht weiter)



Wir benötigen für den TC ein externes Programm, welches uns die oben genannten Möglichkeiten anbietet, zum Beispiel:

-- AutoHotkey: siehe die Beispiele unten (im Forum sieht man auch AutoIt-Skripte)
-- MS-DOS Batch: verwende ein Programm, welches SendMessage beherrscht, zB NirSoft nircmd.exe, oder spezielle Tools auf TotalCmd.net
-- PowerShell+VBScript: auch hierzu existieren Funktionen im Internet, welche aber über COM auf InternetExplorer oder zB msWord zugreifen,
und dadurch langsam sind und auch teilweise "Wollen Sie wirklich"-Warnungen anzeigen.
Daher sind die ersten Beiden zu bevorzugen, oder man verwendet auch bei PoSh/VBS die Tools wie bei der MS-DOS Batch.
-- TotalCommander Button oder Benutzerdefinierter Befehl mit Möglichkeit des Tastaturkürzels:
Erstelle ein Skript mit AutoHotkey oder eine Batch, und starte diese über den TC. (Hierzu existieren weiter FAQs How-to Posts.... )





Diese Message-Funktionen stehen in einer DLL der API bereit, und Programme wie AutoHotkey oder nircmd greifen darauf zu
und bieten eine einfache Syntax zum Aufrufen an. Bei Skriptsprachen kann man mittels "DllCall()" auf diese Funktionen zugreifen.

Grundsetzlicher Aufruf einer Message:
SendMessage(
HWND hWnd, // Das Handle des Empfänger-Fensters
UINT Msg, // Die Nachricht-ID, damit der Empfänger weiß, das die Nachricht für ihn ist, und wofür.
WPARAM wParam, // Erster Parameter zur Nachricht-ID
LPARAM lParam // Zweiter Parameter
);

Siehe
Docs \ Windows \ Desktop \ API \ Windows Controls \ Winuser.h \ SendMessage function
https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-sendmessage

Docs \ Windows \ Desktop \ Windows and Messages \ Messages and Message Queues
\ Message and Message Queue Overviews \ About Messages and Message Queues
https://docs.microsoft.com/de-de/windows/desktop/winmsg/about-messages-and-message-queues

Mr. Ghisler im Wiki:
http://www.ghisler.ch/wiki/index.php/TCUtils.cpp



Details der Message-Syntax:

Bei UINT kann man zB für private Nachrichten den Wert von WM_USER (=1024)
plus ein selbst gewählten Wert zur Eindeutigkeit eintragen (WM_USER+x)
Zur Kommunikation zwischen Anwendungen würden man hier zB WM_APP (=32768)+x verwenden.

Siehe
Docs \ Windows \ Desktop \ Windows and Messages \ Messages and Message Queues \ Message Reference \ Message Constants \ WM_USER
https://docs.microsoft.com/de-de/windows/desktop/winmsg/wm-user


Ein Typ solcher Nachrichten für UINT ist "WM_COPYDATA" (0x004A) um Zeichenketten auszutauschen.
Siehe "List of Windows Messages - Win32" : zB bei https://en.wikichip.org/wiki/List_of_Windows_Messages_-_Win32


Damit der TC weiß, das dies eine "WM_COPYDATA"-Nachrichten für ihn ist,
hat Herr Ghisler sich den Wert von WM_USER+50=1074 als Nachricht-ID für "WM_COPYDATA an den TC" ausgedacht.

Wenn der TC eine Nachricht "1074" (bzw. x432) erhält, weiß er das die für ihn ist und "WM_COPYDATA mit WPARAM" bedeutet.

TESTs

Als Beispiel Skript-Programm verwende ich hier AutoHotkey .
(http://www.ghisler.ch/wikide/index.php/AutoHotkey)

Bei AutoHotkey ist die Syntax etwas anders aufgebaut als oben gezeigt:
PostMessage, Msg , wParam, lParam, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]
SendMessage, Msg , wParam, lParam, Control, WinTitle, WinText, ExcludeTitle, ExcludeText, Timeout]

AutoHotkey -Beispiel:
SendMessage, Msg , wParam, lParam, , WinTitle,
SendMessage 1074, 1000, 0, , ahk_class TTOTAL_CMD


Für andere Anwendungen kann man zB so etwas verwenden:
PostMessage, 0x111, 18808,0,, ahk_class abcdef
; 0x111 ist WM_COMMAND, 18808 ist die Anweisung/der Befehl, welcher das Empfängerprogramm versteht.


---

Bei NirSofts' nircmd wäre es so:
nircmd.exe win sendmsg [find] [window to find] [Additional Parameters: Msg, wParam, lParam]
nircmd.exe win sendmsg window to find       Msg, wParam, lParam
nircmd.exe win sendmsg class TTOTAL_CMD 1074, 1000     , 0


---

Details der Message-Syntax (Fortsetzung):

Bei WPARAM und LPARAM muss man die Werte verwenden, welche der Entwickler des Empfängerprogramms vorgibt.

Offiziell laut https://docs.microsoft.com/de-de/windows/desktop/winmsg/about-messages-and-message-queues
wParam: A handle to the window passing the data.
lParam : A pointer to a COPYDATASTRUCT structure that contains the data to be passed.
Der Typ "COPYDATASTRUCT" ebenfalls Parameter: "dwData", "cbData" und "lpData", aber die werden hier nicht verwendet.


Beim Total Commander wird dies so verwendet:
WPARAM: die Nummer des TC-internen Befehls (siehe TOTALCMD.INC).
LPARAM : eine '0' (Ziffer Null)

---


- - - Fernsteuern des TCs

SendMessage "WM_COPYDATA" an "WM_User+50" (=1074)



Send WM_USER+50 with WPARAM set to (Left/Right)

History.txt
; 08.06.16 Added: Send WM_USER+50 with WPARAM set to (Left/Right)
1005/1006 to get total number of selected items
1003/1004 to get total number of items (including those hidden by quick filter


Anwendungsbeispiel mit AutoHotkey:
SendMessage 1074, 1004, 0, , ahk_class TTOTAL_CMD
vTotal = %ErrorLevel%
SendMessage 1074, 1006, 0, , ahk_class TTOTAL_CMD
MsgBox Answer from TC, total number of selected items : %ErrorLevel% out of %vTotal%


;1011/1012 (Left/Right) to get index of first file in list (get a '-1' if there are no files)
SendMessage 1074 , 1011, 0, , ahk_class TTOTAL_CMD
vFolders := % (ErrorLevel - 1)
MsgBox First file is on Pos. %ErrorLevel% (So there must be %vFolders% folders before)
mehr...Show
History.txt 9b1 wrote:
08.06.16 Added:
Send WM_USER+50 with WPARAM set to
1011/1012 to get index of first file in list (-1 if there are no files)
1009/1010 to get index of first item (0 if there is no updir, 1 otherwise)
1007/1008 to get index of current item (caret)
1005/1006 to get total number of selected items
1003/1004 to get total number of items (including those hidden by quick filter
1001/1002 to get number of items in left/right list
1000 to get active panel: 1=left, 2=right

Code: Select all

;Test with AHK-L v1.1.22.09 on Win7/32 with TC9beta2 32-Bit
#SingleInstance, Force

#IfWinExist, ahk_class TTOTAL_CMD
$#a::	;press shortcut Win-A
	;TC v9: WM_USER+50 = 1074  ;See Hstory.txt "08.06.16 Release Total Commander 9.0 beta 1"
	vMsg = 1074 ;WM_USER+50

	;Left/Right
	;1011/1012 to get index of first file in list (-1 if there are no files)

	vWParam = 1011
	SendMessage %vMsg%, %vWParam%, 0, , ahk_class TTOTAL_CMD
	vFolders := % (ErrorLevel - 1)
	MsgBox ErrorLevel of wParam %vWParam% (Left):`nFirst file is on Pos. %ErrorLevel%`n(So there are %vFolders% folders)


	vWParam = 1012
	SendMessage %vMsg%, %vWParam%, 0, , ahk_class TTOTAL_CMD
	vFolders := % (ErrorLevel  - 1)
	MsgBox ErrorLevel of wParam %vWParam% (Right):`nFirst file is on Pos. %ErrorLevel%`n(So there are %vFolders% folders)

Return
###

Code: Select all

;Test with AHK-L v1.1.22.09 on Win7/32 with TC9beta2 32-Bit
#SingleInstance, Force

#IfWinExist, ahk_class TTOTAL_CMD
$#a::	;press shortcut Win-A
	;TC v9: WM_USER+50 = 1074  ;See Hstory.txt "08.06.16 Release Total Commander 9.0 beta 1"
	vMsg = 1074 ;WM_USER+50

	;Left/Right
	;1009/1010 to get index of first item (0 if there is no updir, 1 otherwise) 
	;ATTENTION : Depends on "Configuration > Display > [X]Show .. in root"
	;Check WINCMD.ini > [Configuration] > ShowParentDirInRoot=1" first to decide

	vWParam = 1009
	SendMessage %vMsg%, %vWParam%, 0, , ahk_class TTOTAL_CMD
	if( ErrorLevel = 1 )
		vUpDir = Yes
	else
		vUpDir = No
	MsgBox ErrorLevel of wParam %vWParam% (Left):`nIndex of first item is %ErrorLevel%`n(So is there an up dir?: %vUpDir%)


	vWParam = 1010
	SendMessage %vMsg%, %vWParam%, 0, , ahk_class TTOTAL_CMD
	if( ErrorLevel = 1 )
		vUpDir = Yes
	else
		vUpDir = No, you are in the root of an drive
	MsgBox ErrorLevel of wParam %vWParam% (Right):`nIndex of first item is %ErrorLevel%`n(So is there an up dir?: %vUpDir%)

Return
###

Code: Select all

;Test with AHK-L v1.1.22.09 on Win7/32 with TC9beta2 32-Bit
#SingleInstance, Force

#IfWinExist, ahk_class TTOTAL_CMD
$#a::	;press shortcut Win-A
	;TC v9: WM_USER+50 = 1074  ;See Hstory.txt "08.06.16 Release Total Commander 9.0 beta 1"
	vMsg = 1074 ;WM_USER+50

	;Left/Right
	;1007/1008 to get index of current item (caret, not necessarily the selected one)
	;ATTENTION if in root: index is minus one (Index of first item is'0')
	;Depends on "Configuration > Display > Show .. in root"
	;Check with wParam 1009/1010 first.

	vWParam = 1007
	SendMessage %vMsg%, %vWParam%, 0, , ahk_class TTOTAL_CMD
	MsgBox ErrorLevel of wParam %vWParam% (Left):`nIndex of current item is %ErrorLevel%

	vWParam = 1008
	SendMessage %vMsg%, %vWParam%, 0, , ahk_class TTOTAL_CMD
	MsgBox ErrorLevel of wParam %vWParam% (Right):`nIndex of current item is %ErrorLevel%

Return
###

Code: Select all

;Test with AHK-L v1.1.22.09 on Win7/32 with TC9beta2 32-Bit
#SingleInstance, Force

#IfWinExist, ahk_class TTOTAL_CMD
$#a::	;press shortcut Win-A
	;TC v9: WM_USER+50 = 1074  ;See Hstory.txt "08.06.16 Release Total Commander 9.0 beta 1"
	vMsg = 1074 ;WM_USER+50

	;Left/Right
	;1005/1006 to get total number of selected items (folder and files)
	;1003/1004 to get total number of items (including those hidden by quick filter)

	vWParam = 1005
	SendMessage %vMsg%, %vWParam%, 0, , ahk_class TTOTAL_CMD
	MsgBox ErrorLevel of wParam %vWParam% (Left):`nTotal number of selected items: %ErrorLevel%

	vWParam = 1006
	SendMessage %vMsg%, %vWParam%, 0, , ahk_class TTOTAL_CMD
	MsgBox ErrorLevel of wParam %vWParam% (Right):`nTotal number of selected items: %ErrorLevel%
Return
###

Code: Select all

;Test with AHK-L v1.1.22.09 on Win7/32 with TC9beta2 32-Bit
#SingleInstance, Force

#IfWinExist, ahk_class TTOTAL_CMD
$#a::	;press shortcut Win-A
	;TC v9: WM_USER+50 = 1074  ;See Hstory.txt "08.06.16 Release Total Commander 9.0 beta 1"
	vMsg = 1074 ;WM_USER+50

	;Left/Right
	;1001/1002 to get number of items in left/right list
	;ATTENTION : number is including the .. up dir!
	;Check with wParam 1009/1010 first: if(ErrorLevel=1) THEN NumberOfItems = NumberOfItems-1

	vWParam = 1001
	SendMessage %vMsg%, 1009, 0, , ahk_class TTOTAL_CMD
	vUpDir = %ErrorLevel%
	SendMessage %vMsg%, %vWParam%, 0, , ahk_class TTOTAL_CMD
	MsgBox % "ErrorLevel of wParam" vWParam "(Left):`nNumber of items: " (ErrorLevel - vUpDir)

	vWParam = 1002
	SendMessage %vMsg%, 1010, 0, , ahk_class TTOTAL_CMD
	vUpDir = %ErrorLevel%
	SendMessage %vMsg%, %vWParam%, 0, , ahk_class TTOTAL_CMD
	MsgBox % "ErrorLevel of wParam" vWParam "(Right):`nNumber of items: " (ErrorLevel - vUpDir)
Return
###

Code: Select all

;Test with AHK-L v1.1.22.09 on Win7/32 with TC9beta2 32-Bit
#SingleInstance, Force

#IfWinExist, ahk_class TTOTAL_CMD
$#a::	;press shortcut Win-A
	;TC v9: WM_USER+50 = 1074  ;See Hstory.txt "08.06.16 Release Total Commander 9.0 beta 1"
	vMsg = 1074 ;WM_USER+50

	;1000 to get active panel: 1=left, 2=right
	vWParam = 1000
	SendMessage %vMsg%, %vWParam%, 0, , ahk_class TTOTAL_CMD
	if(ErrorLevel=1)
		vActivePanel = Left (or the Upper)
	else
		vActivePanel = Right (or the Lower)
	MsgBox ErrorLevel of wParam %vWParam%: %ErrorLevel%,`nthat means the %vActivePanel% panel is currently the active one.
Return
###


- - - Fernsteuern des TCs

Send WM_USER+50 with wparam=1..29 -> gibt die ID des Controls zurück.



History.txt
08.06.16 Added: Send WM_USER+50 with wparam=1..29 -> returns window handle of control.

Bei TC9 kann man neu eine Message wm_user+50 an das Hauptfenster schicken,
um das Window-Handle eines Dialogelements zurückzuerhalten.
Dazu muss WPARAM auf einen der folgenden Werte gesetzt werden:
1=leftlist, 2=rightlist, usw... 21=curdirpanel, ... siehe History.txt

Als Antwort erhält man in AHK als ErrorLevel quasi die Hausnummer, die momentane ID des angefragten Controls.
Diese ID muss man jedes mal neu ermitteln, und kann dies dann in Folge verwenden.

Anwendungsbeispiel mit AHK:
SendMessage 1074, 21, 0, , ahk_class TTOTAL_CMD
MsgBox ErrorLevel bzw. Control-ID: %ErrorLevel% ; e.g.: 7014276
ControlGetText, var_curDirPanel, , ahk_id %ErrorLevel%
MsgBox Pfad im aktiven Fenster: %var_curDirPanel%
mehr...Show
History.txt 9b1 wrote:
08.06.16 Added: Send WM_USER+50 with wparam=1..29 -> returns window handle of control.
Controls are:
1=leftlist
5=leftheader
7=leftsize
9=leftpath
11=leftinfo
13=leftdrives
15=leftpanel
18=lefttree
24=leftdrivepanel
26=lefttabs

2=rightlist
6=rightheader
8=rightsize
10=rightpath
12=rightinfo
14=rightdrives
16=rightpanel
19=righttree
25=rightdrivepanel
27=righttabs

3=active list
4=inactive list
21=curdirpanel
22=inplaceedit
23=splitpanel
28=buttonbar
29=buttonbarvertical
17=bottompanel
20=cmdline

Bei TC9 kann man neu eine Message wm_user+50 an das Hauptfenster schicken,
um das Window-Handle eines Dialogelements zurückzuerhalten.
Dazu muss WPARAM auf einen der folgenden Werte gesetzt werden: (siehe oben "Controls are:")

Das Panel mit dem aktuellen Verzeichnis ist curdirpanel, das ist Nummer 21.
Also muss man aufrufen:
SendMessage 1074, 21, 0, , ahk_class TTOTAL_CMD

Das Resultat sollte dann in %ErrorLevel% stecken.

TEST mit AHK-L v1.1.22.09:

Code: Select all

#SingleInstance, Force

#IfWinExist, ahk_class TTOTAL_CMD
$#a::	;press shortcut Win+A
	;TC v9: WM_USER+50 = 1074 ;See Hstory.txt "08.06.16 Release Total Commander 9.0 beta 1"
	SendMessage 1074, 21, 0, , ahk_class TTOTAL_CMD
	MsgBox ErrorLevel: %ErrorLevel%     ; e.g.: 7014276 
        ;(The controls' current ID, a random number, valid for the time being, will change on next situation)

	;ControlGetText, OutputVar [, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]
	;To operate upon a control's HWND (window handle), leave the Control parameter blank 
	;and specify <<<ahk_id %ControlHwnd%>>> for the WinTitle parameter
	ControlGetText, varPathInTC, , ahk_id %ErrorLevel%

	StringReplace, varPathInTC, varPathInTC, >, \
	MsgBox PATH curdirpanel: %varPathInTC% 
Return



- - -

Weitere Einzelheiten, gefunden im Forum:


25.11.11 Added:
Send WM_COPYDATA with dwData='G'+256*'A' and lpData pointing to command
to get back WM_COPYDATA with various info.
Supported commands A: Active side (returns L or R),
or two byte command: first byte: L=left, R=right, S=source, T=target.
Second byte: P=current path, C=list count, I=caret index, N=name of file under caret.
dwData of return is 'R'+256*'A' (32/64)

25.11.11 Added:
Send WM_COPYDATA with dwData='G'+256*'W':
Same as with 'G'+256*'A', but data is returned as UTF-16 Unicode.
dwData of return is 'R'+256*'W' (32/64)
ghisler(Author) wrote:
2009-04-17, 18:37 UTC
Indeed many controls are Unicode now, and then they have the .UnicodeClass suffix in the class name.

WM_COPYDATA can now accept Unicode names.
To send a Unicode name, send it in UTF-8,
and put a UTF-8 byte order marker in front of the name.
(as Notepad creates it when saving as UTF-8)
When passing two paths to TC, both are treated separately and can or cannot have the UTF-8 prefix.
by *ghisler(Author) » Wed May 16, 2012 16:47
https://ghisler.ch/board/viewtopic.php?p=248335#p248335
Ja, das läuft über WM_COPYDATA - der einzigen Windows-Message, bei der man grössere Datenmengen übergeben kann

Ja, über den Parameter "flags" im verlinkten Beispiel. Die Flags sind:
S Parameter sind Source/Target statt Links/Rechts
T Verzeichnisse in neuem Tab öffnen und aktivieren
B Verzeichnisse in neuem Tab öffnen im Hintergrund (background)
L oder R: Linkes bzw. rechtes Panel aktivieren

Leider gibt es z.Zt. nicht mehr, als im Wiki steht.
Eigentlich wird das vor allem vom TC intern benutzt, wenn man ihn mit dem Parameter /O startet un weitere Parameter übergibt.
Er sendet dann diese Parameter mit WM_COPYDATA an den bereits laufenden.
by *nsp » Fri Oct 19, 2012 9:34
https://ghisler.ch/board/viewtopic.php?p=256751#p256751
The complete syntax is in fact :
<Left>\r<Right>\0
<Source>\r<Target>\0S
<Left>\r<Right>\0T open in new Tab
If you only need to open in current source tab you can define a user command em_cd with command cd AND %A As parameter;
After, you can use your em_cd like sending em_cd D:\MyFolder it will also allows you to add filter like em_cd *.ini *.reg *.key
Test AHK-Skript by artt / send em_commandsShow
(etwas angepasst durch mich)

Code: Select all

;//https://ghisler.ch/board/viewtopic.php?f=6&t=32658&start=30
;//New WM_COPYData Examples
;//
;//
;//
;//artt	     Junior Member     Junior Member	     Posts: 39	     Joined: Sun May 03, 2009 9:03	 
;//Post by *artt » Thu Apr 23, 2015 8:05
;//Just another working AHK script
;//TESTED AND WORKING ON: AHK_L v1.1.21.03 UNICODE X32 + Win7 X32 + TC 8.51a

#SingleInstance force
msgbox Press F12 to start

;My settings for the commands:
EM	    = em_RunNotepad|em_OpenTCFolder|em_foo ;|em_APPENDTABS C:\tc\tabs\TC Select.tab
ASK	    = A|LP|LC|LI|LN|RP|RC|RI|RN|SP|SC|SI|SN|TP|TC|TI|TN
Dir1	= C:\temp\
Dir2	= C:\windows\
Return


F12::
i:=""
LOOP, PARSE, ASK, |	; Ask TC
	i .= A_LoopField ":`t" TC_SendData(A_LoopField) (A_Index=1 OR A_Index=5 OR A_Index=9 OR A_Index=13 ? "`n`n" : "`n")
MsgBox,4096, Ask TC, % i



MsgBox,4096, Executing now: CD Command, LeftDir - RightDir`n%Dir1% # %Dir2%
TC_SendData(Dir1 "`r" Dir2, "LR")

MsgBox,4096, Executing now: CD Command, SourceDir`n%Dir1%
TC_SendData(Dir1 "`r", "ST")

MsgBox,4096, Executing now: CD Command, TargetDir`n%Dir2%
TC_SendData("`r" Dir2, "ST")

MsgBox,4096, Executing now: CD Command, LeftDir`n%Dir1%
TC_SendData(Dir1 "`r", "LR")

MsgBox,4096, Executing now: CD Command, RightDir`n%Dir2%
TC_SendData("`r" Dir2, "LR")

MsgBox,4096, Executing now: CD Command, SourceDir -  TargetDir`n%Dir1% # %Dir2%
TC_SendData(Dir1 "`r" Dir2, "ST")


LOOP, PARSE, EM, |	; User Command
	{
	MsgBox,4096, Executing now User Command, %A_LoopField%
	TC_SendData(A_LoopField,"EM")
	}


EXITAPP
;Return


/*
TESTED AND WORKING ON: AHK_L v1.1.21.03 UNICODE X32 + Win7 X32 + TC 8.51a
-------------------------------------------------------------------------
TC_SendData("em_FOO"         	     , "EM") ; User Command
TC_SendData("em_APPENDTABS C:\my.tab", "EM") ; User Command with parameters (usercmd.ini as following)
															;				[em_APPENDTABS]
															;				cmd=APPENDTABS
															;				param=%A

TC_SendData("cmd") 								  ; Ask TC :     (cmd one of the following varues:)
															; A  = Active Side
						
															; LP = Left Path            RP = Right Path
															; LC = Left List Count      RC = Right List Count
															; LI = Left Caret Index     RI = Right Caret Index
															; LN = Left Name Caret      RN = Right Name Caret

															; SP = Source Path          TP = Target Path
															; SC = Source List Count    TC = Target List Count
															; SI = Source Caret Index   TI = Target Caret Index
															; SN = Source Name Caret    TN = Target Name Caret

TC_SendData("C:\tc" "`r" "D:\data", "LR")	 ; CD   Command: (LeftDir - RightDir)
TC_SendData("C:\tc" "`r"          , "LR")	 ; CD   Command: (LeftDir)
TC_SendData(        "`r" "D:\data", "LR")	 ; CD   Command: (          RightDir)

TC_SendData("C:\tc" "`r" "D:\data", "ST")	 ; CD   Command: (SourceDir - TargetDir)
TC_SendData("C:\tc" "`r"          , "ST")	 ; CD   Command: (SourceDir)
TC_SendData(        "`r" "D:\data", "ST")	 ; CD   Command: (            TargetDir)
*/



TC_SendData(Cmd, CmdType="", msg="", hwnd="") {
   Critical   ; Define "OnMessage" as STATIC it is registered at Script startup.
   STATIC om:=OnMessage(0x4a, "TC_SendData"), TC_ReceiveDataValue:="", TC_DataReceived:=""	; 0x4a is WM_COPYDATA

   IF ((msg=0x4A) AND (hwnd=A_ScriptHwnd)) ; EnSure is trigered by this Script.
      EXIT (TC_ReceiveDataValue:=StrGet(NumGet(CmdType + A_PtrSize * 2)), TC_DataReceived:="1")

   VarSetCapacity(CopyDataStruct, A_PtrSize * 3), TC_ReceiveDataValue:=1, TC_DataReceived:=""
   IF CmdType IN LR,ST			; CD   Command
	DirType:=CmdType, CmdType:="CD"
   ELSE IF (CmdType="")			; Ask TC
	CmdType:=(A_IsUnicode ? "GW" : "GA"), TC_ReceiveDataValue:=""

   If( A_IsUnicode ) {
      VarSetCapacity( cmdA, StrPut(cmd, "cp0"),0) ; 3rd parameter "0" is necessary for CD "LeftPath only"
      Loop, % StrLen(cmd)
         NumPut( Asc(SubStr(cmd, A_Index, 1)), cmdA, A_Index - 1, "Char")
   }
   NumPut( Asc(SubStr(CmdType,1,1)) + 256 * Asc(SubStr(CmdType,2,1)), CopyDataStruct,0 )
   NumPut( StrLen(cmd) + (CmdType="CD" ? 5 : 0), CopyDataStruct, A_PtrSize )
   NumPut((A_IsUnicode ? &cmdA : &cmd), CopyDataStruct, A_PtrSize * 2)
   Loop, % (CmdType=="CD" ? 2 : 0)
      NumPut(Asc(SubStr(DirType,A_Index,1)), (A_IsUnicode ? cmdA : cmd), (StrLen(cmd)+A_Index),"Char")
   SendMessage, 0x4A,%A_ScriptHwnd%, &CopyDataStruct,, ahk_class TTOTAL_CMD


;IF you send a 'request' command to TC (all Ask TC commands: A, LP, LC, ...), script is waiting for (500 x 10 = 5000ms = 5 seconds) for TC to response/answer.
;If the answer arrives before the 5 seconds, it is immediately breaking the interaction and return the answer to the user (normally their is no delay).
   While (TC_ReceiveDataValue="") {
      IfEqual, TC_DataReceived,    1, Break
      IfGreaterOrEqual, A_Index, 500, Break
      Sleep,10
   }
   Return TC_ReceiveDataValue
}



;//    FIXED at 20150425:
;//    When you send an "ASK TC" command and the value returned by TC is an "empty" string (as if you send "SP" and the source panel contains a search results list), it will not wait for 5 seconds for the empty value to be returned to the user. (Thanks LonerD for your report)
;//
;//    FIXED at 20150426:
;//    Restored the missing comments about the syntax of CD command, that were lost during last post modification! (Thanks LonerD for your report)
;//
;//Last edited by artt on Sun Apr 26, 2015 7:42, edited 3 times in total. 

SendMessage TC_SendWMCopyData by Balderstrom.ahkShow

Code: Select all

;https://ghisler.ch/board/viewtopic.php?t=32658
;New WM_COPYData Examples
;Post by *Balderstrom » Sun Nov 27, 2011 21:39 

;SendMessage TC_SendWMCopyData by Balderstrom.ahk

;;
;; AutoHotkey_L Function
;;     cmdType: "CD" or "EM"
;;     cmd(1): name of user command, e.g. em_FOO
;;     cmd(2): formatted string with path's to CD to,
;;                  e.g. "C:\`rC:\Users"
;;     addParams: for CD only, e.g. ST, S, T


; My Notes:
;Note parameter #2: cmd, is a byRef - it has to be a variable.
;So you call it like this:
;TC_SendWMCopyData("EM", gCmd:="em_test", gNul:="", "ahk_class TTOTAL_CMD") 
;TC_SendWMCopyData ("EM", gCmd:="em_RunNotepad", gNul:="", "ahk_class TTOTAL_CMD") 

;But I use a higher-level function to call into TC_SendWMCopyData
; I always call it with caller functions, like TC_EMC(), TC_CMD() and TC_CD() 
;TC_EMC( cmd, wID="ahk_class TTOTAL_CMD")
;
;So you would do:
;TC_EMC("em_RunNotepad")

;My Tests:
;[em_RunNotepad]
;cmd=notepad
TC_EMC("em_RunNotepad")
;
;[em_OpenTCFolder]
;cmd=explorer %Commander_Path%
TC_EMC("em_OpenTCFolder")
;// End Notes



TC_SendWMCopyData( cmdType, byRef cmd, byRef addParams="", aWin="A" )
{
Critical
	VarSetCapacity( CopyDataStruct, A_PtrSize * 3 )
	if( A_IsUnicode )
	{
		VarSetCapacity( cmdA, StrPut(cmd, "cp0"))
		Loop, % StrLen(cmd)
			NumPut( Asc(SubStr(cmd, A_Index, 1)), cmdA, A_Index - 1, "Char")
	}
	NumPut( Asc(SubStr(cmdType,1,1)) + 256 * Asc(SubStr(cmdType,2,1)), CopyDataStruct )
	NumPut( StrLen(cmd) + (cmdType="CD" ? 5 : 1), CopyDataStruct, A_PtrSize )
	NumPut((A_IsUnicode ? &cmdA : &cmd), CopyDataStruct, A_PtrSize * 2)
	
	Loop, % (cmdType=="CD" ? 2 : 0)
		NumPut( Asc(SubStr(addParams, A_Index, 1)), (A_IsUnicode ? cmdA : cmd), (StrLen(cmd) + A_Index), "Char" )
	SendMessage, 0x4A,, &CopyDataStruct,, ahk_id %aWin%
return
}



TC_EMC( cmd, wID="ahk_class TTOTAL_CMD", activateWin=FALSE, showMsg=FALSE )
{
	TC_Activate( wID, activateWin, showMsg, cmd )
	TC_SendWMCopyData( "EM", cmd, params:="", wID )
return
}

;## TC_CD() is a neat piece of code, but it pretty much requires a LIB.ahk as it uses a fair number of defined functions, not really pasteable here.

TC_CD@( wID, src="", trg="", params="", activateWin=TRUE )
{
	if( activateWin )
		WinActivate, % ( wID+0 ? "ahk_id " wID : wID )
	TC_SendWMCopyData( "CD", cmd:=(src " `r" trg " "), params, wID )
return
}

TC_Activate( byRef wID, activateWin=TRUE, showMsg=TRUE, cmd="" )
{
	wID:=QueryWinID(wID, TRUE)
	if(!activateWin )
		return FALSE
	if( showMsg )
		MsgBox,,%A_ThisFunc%, % "Activating TC" ( cmd ? ", for command: " cmd "`n" : "`n"), 1
	WinActivate, ahk_id %wID%
return TRUE
}

QueryWinID( aWin="A", canExist=FALSE, winText="", notTitle="", notText="" )
{
	if( !(retVal:=WinActiveA( aWin, winText, notTitle, notText )) )
		retVal:=( !canExist ? 0 : WinExistA( aWin, winText, notTitle, notText ))
return retVal
}

WinActiveA( aWin="", winText="", notTitle="", notText="" )
{
	return WinActive( (aWin+0 ? "ahk_id " aWin : aWin), winText, notTitle, notText )
}

WinExistA( aWin="", winText="", notTitle="", notText="" )
{
	return WinExist( (aWin+0 ? "ahk_id " aWin : aWin), winText, notTitle, notText )
}

;###
;https://ghisler.ch/board/viewtopic.php?p=256687#p256687
;New WM_COPYData Examples
;by *Balderstrom » Thu Oct 18, 2012 0:03 

TC_CMD( cmd, wID="ahk_class TTOTAL_CMD", activateWin=FALSE, post=TRUE, showMsg=FALSE )
{
	TC_Activate( wID, activateWin, showMsg, cmd )
	if( !post )
		SendMessage, 0x433, TC_@( cmd ), 0x0,, ahk_id %wID%
	else
		PostMessage, 0x433, TC_@( cmd ), 0x0,, ahk_id %wID%
return TRUE
}

TC_@( cm_cmd="" )
{
	static
	static init := 0
	global TC__TotalCmd@INC
	local iCmd, iCmd1, iCmd2, iCmd3, iTmp, retVal, tmpVar

	if( !init && init := 1 && !ErrorLevel:="")
	{
		local aDrive, aFile, aPath
		if(!(aPath:=TC__TotalCMD@INC))
		{
			EnvGet, aPath, COMMANDER_PATH
;			MsgBox, TC__TotalCmd@INC: %TC__TotalCmd@INC%
			if( !aPath )
			{
				EnvGet, aDrive, SystemDrive
				if(!FileExist(aPath:=aDrive "\TotalCmd"))
					if(!FileExist(aPath:=ProgramFiles "\TotalCMD"))
						aPath:=ProgramFiles
				FileSelectFile, TC__TotalCmd@INC,, %aPath%,Location of TotalCMD.inc file?,*.inc
			}
			else
				TC__TotalCmd@INC:=aPath "\TotalCMD.inc"
		}
;		MsgBox, TC__TotalCmd@INC: %TC__TotalCmd@INC%
;		MsgBox, aPath: %aPath%
		SplitPath( TC__TotalCmd@INC, aFile )
;		MsgBox, aFile: %aFile%`nErrorLevel: %ErrorLevel%
		onErrorExit((ErrorLevel || !RegExMatch( aFile, "i)^TotalCMD.inc$")) && !(init:=0), "ERROR: Invalid TotalCMD.inc File.")
		FileRead, TcmdINC, %TC__TotalCmd@INC%
		Loop, Parse, TcmdINC, `n, `r
		{
			if( !regExMatch( A_LoopField, "^cm_([a-zA-Z]+)([0-9]+)?=([0-9]+);", iCmd ) )
				continue
			if( iCmd3 > 6000 && iCmd3 <= 20000)
				continue
			if( iCmd3 > 5000 && iCmd3 <= 5500)
				continue
			else
			if( iCmd3 > 2060 && iCmd3 <= 2120 )	; cm_GotoDriveA ...
				continue
			else
			if( iCmd3 >= 701 && iCmd3 <= 900 )	; cm_UserMenu1 ... cm_UserMenu300
				continue
			else
			if( iCmd3 >= 271 && iCmd3 <= 299 )	; cm_SrcCustomView1 - 29
				continue
			else
			if( iCmd3 >= 171 && iCmd3 <= 199 )	; cm_RightCustomView1 - 29		
				continue
			else
			if( iCmd3 >=  71 && iCmd3 <= 99 )	; cm_LeftCustomView1 - 29
				continue

			tmpVar = cm_%iCmd1%%iCmd2%
			StringUpper, tmpVar, tmpVar
			%tmpVar% := iCmd3
		}
		if( !cm_cmd )
			return
	}

	Sleep, 50
	if( !cm_cmd )
		return
;	if(  )
	onErrorExit( !inStr( cm_cmd, "cm_"), "UnSupported: Input must be a `cm_` string." cm_cmd ": " %cm_cmd%, A_ThisFunc )

	StringUpper, cm_cmd, cm_cmd
	if( retVal := %cm_cmd% )
		return retVal

	if( RegExMatch( cm_cmd, "^CM_(LEFT|RIGHT|SRC)(CUSTOMVIEW)(\d+)$", iCmd ) )
	{
		onErrorExit( ( iCmd3 < 1 || iCmd3 > 29 ), "Illegal value for: " cm_cmd, A_ThisFunc )
		
		local LEFT := 0, RIGHT := 100, SRC := 200
	return % ( %iCmd1% + iCmd3 + 70 )
	}	  

	if( RegExMatch( cm_cmd, "^(CM_)(USERMENU)(\d+)$", iCmd ) )
	{
		onErrorExit( ( iCmd3 < 1 || iCmd3 > 200 ), "Illegal value for: " cm_cmd, A_ThisFunc )
	return ( iCmd3 + 700 )
	}
	
	if( RegExMatch( cm_cmd, "CM_(LEFT|RIGHT|SRC|TRG)(ACTIVATETAB|SORTBYCOL)(\d+)", iCmd ) )
	{
		onErrorExit( ( iCmd3 < 1 || iCmd3 > 99 ), "Illegal value for: " cm_cmd , A_ThisFunc )
		local SRC := 0, TRG := 100, LEFT := 200, RIGHT := 300
		local ACTIVATETAB := 5000, SORTBYCOL := 6000
	return % ( %iCmd1% + %iCmd2% + iCmd3 )
	}
	
	if( RegExMatch( cm_cmd, "(CM_)(GOTODRIVE)([A-Z])", iCmd ) )
	{
	return ( ASC(iCmd3) + 2000	-4 )
	}
	;onErrorExit( TRUE, "Variable: " cm_cmd " doesn't exist!", A_ThisFunc )
}

onErrorExit( checkEval, errMsg="", fn="", delay=3 )
{
	if( !checkEval )
		return 0
	if((!ErrorLevel || ErrorLevel:=1) && !errMsg)
		Exit
	RegExMatch(fn, "^([^:]+)(::([^ ].*))?$", rTmp )
	msg := ( rTmp1 ? rTmp1 "(" rTmp3 "): " : "" ) errMsg
	MsgBox,, % A_ScriptName " :: " rTmp1, % msg, % delay
Exit
}

SplitPath( fullPath, byRef aFile="", byRef aDir="", byRef aExt="", byRef aDrive="", byRef aNameOnly="" )
{
	fullPath.=((inStr(FileExist(fullPath), "D") && SubStr(fullPath, 0) <> "\") ? "\" : "")
	SplitPath, fullPath, aFile, aDir, aExt, aNameOnly, aDrive
	aDir.=(aDir && (aDir==aDrive)) ? "\" : ""
return 
}




- - - Fernsteuern des TCs

SendMessage "WM_InvokeMenuCommand" an "WM_User+51" (=1075)



Ein WM_InvokeMenuCommand an TC wurde von Herrn Ghisler als WM_USER+51 =1075 definiert.
Wenn der TC eine Nachricht "1075" (bzw. x433) erhält, weiß er das die für ihn ist
und "WM_InvokeMenuCommand mit WPARAM und eventuell einem LPARAM" bedeutet.

In WPARAM soll die Nummer des TC-internen Kommandos stehen (siehe TOTALCMD.INC)
In LPARAM dann das Argument für den Befehl in WPARAM.


History.txt
15.05.16 Added: The following commands now accept a numeric parameter:
cm_GoToFirstEntry=2049;Place cursor on first folder or file (und noch mehr, siehe History.txt)

Diese Kommandos kann man auch über ein Skript senden, übergebe die "numeric parameter" als LPARAM.
Die "numeric parameter" starten bei "0" für den ersten Eintrag in der Dateiliste, man muss also immer
vom gewünschten Wert eins abziehen; somit geht LPARAM=4 zum fünften Eintrag in der Dateiliste.
Anwendungsbeispiel mit AutoHotkey:
SendMessage, Msg , wParam, lParam, Control, WinTitle,
SendMessage, Msg , TC Befehl, Nummer-Parameter, , WinTitle,
SendMessage 1075, 2049, 4, , ahk_class TTOTAL_CMD
mehr...Show
15.05.16 Added: The following commands now accept a numeric parameter in the button bar or start menu:
CM_WAIT
cm_Select=2936;Select file under cursor, go to next
CM_UNSELECT
CM_REVERSE
cm_GoToFirstEntry=2049;Place cursor on first folder or file
cm_GoToFirstFile=2050;Place cursor on first file in list
CM_SWITCHDRIVE
CM_DELETE
CM_LEFTSWITCHTOTHISCUSTOMVIEW
CM_RIGHTSWITCHTOTHISCUSTOMVIEW
CM_SEARCHFORINCURDIR
CM_DIRECTORYHOTLIST
(32/64)


Dies kann auch über ein Skript gesendet werden, trage den "numeric parameter" bein LPARAM ein.

You can also send them via script, just put the numbers in lparam.
- cm_GoToFirstEntry=2049;Place cursor on first folder or file:
- - Place cursor on 5th item, folder OR file:
- - - PostMessage,1075,2049,4

Code: Select all

#SingleInstance, Force

#IfWinExist, ahk_class TTOTAL_CMD

$#a::	;press shortcut Win-A

	;TC internal commands are sent like that with AHK:
	;SendMessage, Msg [, wParam, lParam, Control, WinTitle, WinText, ExcludeTitle, ExcludeText, Timeout]
	;TC7 : WM_USER+51 = 1075

	;TC9beta1 
	;15.05.16 Added: The following commands now accept a numeric parameter: 

	;cm_GoToFirstEntry=2049;Place cursor on first folder or file
	;The numeric parameter counts folder and files, off by +1, so number 4 will go to 5th item
	;Place cursor on 5th item, folder OR file:
	PostMessage,1075,2049,4

	;cm_GoToFirstFile=2050;Place cursor on first file in list
	;The numeric parameter counts files only, off by +1, so number 3 will go to 4th item
	;Place cursor on 4th file:
	PostMessage,1075,2050,3


	;cm_Select=2936;Select file under cursor, go to next
	;Select 3 items:
	PostMessage,1075,2936,3

Return

- - -

Andere UINTs Möglichkeiten:


Generell mögliche Message-Arten:
Siehe "List of Windows Messages - Win32" : zB bei https://en.wikichip.org/wiki/List_of_Windows_Messages_-_Win32

---

Gefundene Beispiele:

- - -
LB_GETSELCOUNT = 0x0190
SendMessage LB_GETSELCOUNT, 0, 0, TMyListBox1, ahk_class TTOTAL_CMD

; LB_GETCARETINDEX = 0x19F
SendMessage, 0x19F, , , %FocusedControl%, ahk_class TTOTAL_CMD
VarSetCapacity(CurrentItem, 260)
; LB_GETTEXT = 0x189
SendMessage, 0x189, %ErrorLevel%, &CurrentItem, %FocusedControl%, ahk_class TTOTAL_CMD

viewtopic.php?p=111502

- - -

- - -




- - -


- - - puh :roll: :?


.

User avatar
Stefan2
Power Member
Power Member
Posts: 2183
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Übersicht Deutscher FAQs Faden

Post by *Stefan2 » 2017-01-09, 19:11 UTC

DIESE Seite
Übersicht Deutscher FAQs Faden >>> https://ghisler.ch/board/viewtopic.php?p=323985#p323985
- - -


Die FAQ auf der TC Webseite
https://www.ghisler.com/dfaquser.htm

TOTALCMD.CHM
Hilfe
F1
History.txt
Wiki


Hier habe ich einiges an Wissen aus dem Forum zusammengesucht und thematisch sortiert:
Danke an alle, die ihr Wissen im Forum geteilt haben, ohne Euch wäre diese Sammlung nicht möglich gewesen!


FAQs: TC Anleitung Handbuch Manual Einsteiger Erste Schritte
https://ghisler.ch/board/viewtopic.php?p=347029#p347029

FAQs: Meine ersten Einstellungen für einen brandneuen TC
https://ghisler.ch/board/viewtopic.php?p=335850#p335850

FAQs: Button anlegen / Buttonbar erstellen / Icons
viewtopic.php?p=342115#p342115

FAQs: Icon libraries WCMICONS.DLL diymediahome.org
https://ghisler.ch/board/viewtopic.php?p=305387#p305387

FAQs: Button-code kopieren einfügen (TOTALCMD#BAR#DATA)
https://ghisler.ch/board/viewtopic.php?p=335758#p335758

FAQs: Button, mehrere Befehle mit einen Button ausführen
https://ghisler.ch/board/viewtopic.php?p=342154#p342154

FAQs: TC-interne Kommandos (cm_xxx) / Befehlsbrowser cm_CommandBrowser
https://ghisler.ch/board/viewtopic.php?p=335683#p335683

FAQs: TCs' Benutzer-definierte Kommandos (BDK) (em_xxxxx) UserCmd.ini
https://ghisler.ch/board/viewtopic.php?p=346779#p346779

FAQs: TC Plugin Add-On AddOn Externe Tools verwenden
https://ghisler.ch/board/viewtopic.php?p=342114#p342114

FAQs: Dateisuche, Dateien suchen und anwenden (= Suchergebnisse verarbeiten)
https://ghisler.ch/board/viewtopic.php?p=335791#p335791

FAQs: Dateisuche und Multi-Umbenenn Tool (MUT), Einstellungen Speichern Laden
https://ghisler.ch/board/viewtopic.php?p=335712#p335712

FAQs: Dateiliste filtern durchsuchen ausblenden anzeigen
https://ghisler.ch/board/viewtopic.php?p=336315#p336315

FAQs: Dateiliste - Filtern / Schnellsuche / Quick search filter / Ctrl+S ***
https://ghisler.ch/board/viewtopic.php?p=332810#p332810

FAQs: Dateien auswählen markieren selektieren, SELECTFILES
https://ghisler.ch/board/viewtopic.php?p=336323#p336323

FAQs: Neue Dateien und Ordner erstellen (Umschalt+F4 und F7)
https://ghisler.ch/board/viewtopic.php?p=336278#p336278

FAQs: TCs' Interne Dateityp-Verknüpfungen / Internal Associations
https://ghisler.ch/board/viewtopic.php?p=346867#p346867

FAQs: Benutzerdefinierte Spaltenansicht / Dateieigenschaften anzeigen
https://ghisler.ch/board/viewtopic.php?p=335840#p335840

FAQs: TC-Oberfläche GUI anpassen / Farben
https://ghisler.ch/board/viewtopic.php?p=346108#p346108

FAQs: Dateien / Ordner farbig markieren kennzeichnen einfärben
https://ghisler.ch/board/viewtopic.php?p=287485#p287485

FAQs: TC Automatisieren Skripten (Für jede Datei / Alle Dateien)
https://ghisler.ch/board/viewtopic.php?p=344898#p344898

FAQs: TC Automatisieren Skripten (Generelle Infos)
Post 1 - Button und Benutzerdefinierte Befehle
Post 2 - Quoting / Anführungszeichen
Post 3 - Aktionen für ausgewählte Dateien
Post 4 - Externe Tools zur Abarbeitung der ausgewählten Dateien
Post 5 - TC von außen steuern / SendMessage / WM_USER
Post 6 - Externe Tools zur direkten Dateimanipulation
https://ghisler.ch/board/viewtopic.php?p=336052#p336052

TC9: "Send WM_USER+50 with wparam" - how-to?
https://ghisler.ch/board/viewtopic.php?p=310263#p310263

FAQs: Reguläre Ausdrücke Anleitung / Regular expressions Tutorial
https://ghisler.ch/board/viewtopic.php?p=323986#p323986

FAQs: PowerShell in Total Commander
https://ghisler.ch/board/viewtopic.php?p=323982#p323982

VBScript: ForEachSelFileDo-TimeDiff.VBS
https://ghisler.ch/board/viewtopic.php?p=323615#p323615


- - -

Kontextmenüeinträge / Crash rechtsklick / Kontextmenü nicht vollständig
https://ghisler.ch/board/viewtopic.php?p=346985#p346985

- - -

FAQs: Bilder posten verlinken einfügen / How-to post image picture screenshot
https://ghisler.ch/board/viewtopic.php?p=287482#p287482







 Finde mich: Sammlung / Liste

User avatar
Stefan2
Power Member
Power Member
Posts: 2183
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Collection of English FAQs threads

Post by *Stefan2 » 2018-09-12, 17:57 UTC

- - - ENGLISH
THIS page:
Collection of English FAQs threads >>> https://ghisler.ch/board/viewtopic.php?p=347043#p347043
- - -


FAQs: How to create an button
https://ghisler.ch/board/viewtopic.php?p=344803#p344803

FAQs: Button-code: How-to Copy Share Paste a button ('TOTALCMD#BAR#DATA')
https://ghisler.ch/board/viewtopic.php?p=335879#p335879

FAQs: Button - How to execute more than one command at once
https://ghisler.ch/board/viewtopic.php?p=287794#p287794

FAQs: User-Defined Command (UDC) (usercmd.ini) em_command
https://ghisler.ch/board/viewtopic.php?p=344777#p344777

FAQs: TCs' internal commands - how-to find and use them
https://ghisler.ch/board/viewtopic.php?p=289931#p289931

FAQs: Copy Base Name To Clip Clipboard w/o Extension
https://ghisler.ch/board/viewtopic.php?p=323981#p323981

FAQs: INI-History - Clear remove delete drop / INI Redirect Section
https://ghisler.ch/board/viewtopic.php?p=288071#p288071



 


User avatar
Stefan2
Power Member
Power Member
Posts: 2183
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Platzhalter 4

Post by *Stefan2 » 2018-09-12, 18:02 UTC

Arbeitkopie Work in progress

Zusammenfassung von

FAQs: Dateisuche, Dateien suchen und anwenden (= Suchergebnisse verarbeiten)
https://ghisler.ch/board/viewtopic.php?p=335791#p335791

FAQs: Dateisuche und Multi-Umbenenn Tool (MUT), Einstellungen Speichern Laden
https://ghisler.ch/board/viewtopic.php?p=335712#p335712

FAQs: Dateiliste filtern durchsuchen ausblenden anzeigen
https://ghisler.ch/board/viewtopic.php?p=336315#p336315

FAQs: Dateiliste - Filtern / Schnellsuche / Quick search filter / Ctrl+S ***
https://ghisler.ch/board/viewtopic.php?p=332810#p332810

FAQs: Dateien auswählen markieren selektieren, SELECTFILES
https://ghisler.ch/board/viewtopic.php?p=336323#p336323


-----------------------------------------------------------------------

ghisler(Author) wrote:
2006-01-31, 09:11 UTC
Tue Jan 31, 2006
Tut mir leid für das Durcheinander, ich habe den Grund gefunden:
Diese Funktion wurde geändert, weil sich User beklagt haben, dass eine Suche nach
Hans Meier
auch Treffer mit nur "Hans" und nur "Meier" ergeben hat.

TC sucht schon seit ein paar Versionen wie folgt:

1. Falls nichts oder *.* angegeben wurde, alle Dateien finden
2. Falls der Suchstring einen * oder ein ? enthält -> Wildcardmethode.
___Nur bei dieser wird nach mehreren Teilstrings gesucht, etwa *.txt *.doc *.xls
3. Falls der Suchstring einen Punkt . enthält -> exakte Uebereinstimmung
4. Ansonsten Methode "enthalten in"

Beispiele:
======
Angabe: *.*
Resultat: finde alle Dateien (Typ 1)
Angabe: Hans
Resultat: finde Hans irgend wo im Namen (Typ 4)
Angabe: Hans Meier
Resultat: finde Hans Meier irgend wo im Namen (Typ 4)
Angabe: Hans.
Resultat: finde exakten Namen "Hans" (Typ 3)
Angabe: Hans.txt
Resultat: finde exakten Namen "Hans.txt" (Typ 3)
Angabe: Hans*
Resultat: Finde Namen, der mit "Hans" beginnt (Typ 2)
Angabe: "Hans Meier"
Resultat: z.Zt. nicht definiert! (Typ 4, stimmt nicht überein)
Angabe: "Hans Meier" "Fritz Müller"
Resultat: z.Zt. nicht definiert, da keine * oder ? enthalten
Angabe: "*Hans Meier*"
Resultat: Finde Hans Meier irgendwo im Namen (Typ 2)
Angabe: "*Hans Meier*" "*Fritz Müller"
Resultat: Finde Namen, der einen der beiden obigen Namen enthält, oder beide (Typ 2)
ghisler(Author) wrote:
2008-07-18, 07:16 UTC
Fri Jul 18, 2008
Bei der Suche nach Namen, die sowohl Leerzeichen als auch einen Punkt enthalten,
muss der Name in doppelten Anführungszeichen geschrieben werden:
"The Bones - 04- half_of_nothing.mp3"

und nicht nur
The Bones - 04- half_of_nothing.mp3
sonst sucht Total Commander nach den einzelnen Namensteilen.
. . .
ghisler(Author) wrote:
2018-06-17, 07:08 UTC
Sun Jun 17, 2018
spikey wrote:
2018-06-15, 19:34 UTC
How do I use the Find Files dialogue to list all
files with a full stop (period) in the file name?

For example: joe.smith101.jpg

I am using "file name" to mean the part of the file's name
before the full stop separator and file extension.
aksmfakt132 wrote:
2018-06-16, 00:51 UTC
You do not even need to use regular expressions
Search *.*.



The search string to use is actiually:
*.*.*.

Why?
TC always assumes a single dot at the end.
Then there are two (or more) dots required in the middle of the name.

If you just use '*.*.' it will match files with at least one dot in the name
(files which don't have an extension will be skipped).
nsp wrote:
2018-06-16, 05:31 UTC
Most efficient version is to just contain operator like :

Code: Select all

Find Files
[Plugins] tab
tc | name | contains | .
- - -

gespeicherte Suche
ghisler(Author) wrote:
2018-09-12, 18:11 UTC
Bitte das Feld "Suchen in" leer lassen! TC sucht dann im Verzeichnis des aktiven Dateifensters. Wenn man einen Punkt angibt, wird im zuletzt gesetzten aktuellen Verzeichnis gesucht - das kann u.U. je nach vorheriger Dateioperation auch ein anderes sein.
- - -



--

Locked