Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: [VBS] Вставка команы cd в начало командной строки TC 
Author Message
DrShark



PostPosted: Tue May 02, 2017 03:10    Post subject: [VBS] Вставка команы cd в начало командной строки TC Reply with quote

Code:
' cd2cmdline.vbs - inserts CD command at the beginning of the Total Commander command line
' v. 04052017
' Replaces clipboard content without restoring
' Requires Internet Explorer and its option "Allow Programmatic clipboard access"
' for "Scripting" set to either "Enable" or "Prompt".
' (if set to "Disable", the script will try to change it to "Prompt" only for its run time and then restore to previous state)
' Written in 2017 by DrShark
' To the extent possible under law, the author(s) have dedicated all copyright and related
' and neighboring rights to this software to the public domain worldwide.
' This software is distributed without any warranty.
' A copy of the CC0 Public Domain Dedication for this software is available at
' <http://creativecommons.org/publicdomain/zero/1.0/>.

Public WSH, objHTML
Set WSH = CreateObject("WScript.Shell")
Set objHTML = CreateObject("htmlfile")
clpaccesskeylocation = "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3\1407"
On Error Resume Next
clpacckessvalue = WSH.RegRead(clpaccesskeylocation)
If clpacckessvalue > 1 Or Err.Number <> 0 Then WSH.RegWrite clpaccesskeylocation, 1, "REG_DWORD"

main

Sub main
Set clpbrdtext = Nothing
' Inserting CD command to TC cmdline:
WSH.SendKeys "+{Right}{Home}CD "

' Selecting the CD command in the cmdline:
WSH.SendKeys "{Home}"
WSH.SendKeys "{Right}{Right}"
WSH.SendKeys "+{Home}"
' Copy the selected command to clipboard
WSH.SendKeys "^C"
WScript.Sleep 10
clpbrdtext = objHTML.ParentWindow.ClipboardData.GetData("text")
' Check whether command was copied with English keyboard layout:
compstr = StrComp(clpbrdtext, "CD")
 If compstr = 0 Then
  WSH.SendKeys "{Home}"
  quitscript
 Else
  keyblayoutchange
End If
End Sub

Sub keyblayoutchange
togglevalue = WSH.RegRead("HKCU\Keyboard Layout\Toggle\Hotkey")
Select Case togglevalue
  Case 1 togglehotkey = "%+" : Case 2 togglehotkey = "^+" : Case 4 togglehotkey = "`"
End Select
WSH.SendKeys togglehotkey
WSH.SendKeys "{Home}{Right}{Right}{Right}"
WSH.SendKeys "+{Home}"
WSH.SendKeys "{BACKSPACE}"
main
End Sub

Sub quitscript
If clpacckessvalue > 1 Then WSH.RegWrite clpaccesskeylocation, clpacckessvalue, "REG_DWORD"
WScript.Sleep 100
Set clpbrdtext = Nothing
Set objHTML = Nothing
Set WSH = Nothing
End Sub

После запуска из TC скрипт устанавливает фокус на командную строку TC и вставляет в её начало команду CD с последующим пробелом, не затирая уже введенное содержимое. Вроде работает, как ожидается.
Если способ установки фокуса в ком. строку кажется недостаточно надёжным, в TC 9 в кнопке можно перед em_ командой, которая вызывает скрипт, прописать cm_FocusCmdLine.
Требования: Internet Explorer. Его настройка "Сценарии"->
"Разрешить программный доступ к буферу обмена" должна быть установлена в "Предлагать" или "Включить". Если выбрано "Отключить", скрипт в начале своей работы попытается изменить на "Предлагать", а после её окончания вернуть предыдущее состояние.
Скрипт заменяет (и не восстанавливает после завершения работы) содержимое буфера обмена.
Распространяется без каких-либо гараний, в т.ч. на поддержку и исправление багов (я не программист и не могу обещать их исправления).
_________________
"the light is coming to give back everything the darkness stole"
—©@AG4


Last edited by DrShark on Thu May 04, 2017 23:10; edited 5 times in total
View user's profile Send private message Visit poster's website


Powered by phpBB © 2001, 2005 phpBB Group