Скрипты Autohotkey
Select messages from
# through # FAQ
[/[Print]\]

Total Commander -> Автоматизация Total Commander

#1: Скрипты Autohotkey Author: KarSLocation: г. Абакан PostPosted: Fri Apr 21, 2006 17:06
    —
Мне понравилась программа Autohotkey, хотя в ней я еще плохо разбираюсь.
Попробовал для Total написать некоторые скрипты. Например,
#sc02D::
DetectHiddenWindows, On
if not WinExist( "ahk_class TTOTAL_CMD" )
Run, C:\Program Files\Total Commander\TOTALCMD.EXE
WinActivate
return
;переход в нижнюю директорию
!PgUp::
IfWinActive, ahk_class TTOTAL_CMD
ControlSend, ,2 ^{PGUP}
Send, {Up}
Send, ^{PGDN}
return

;переход в верхнюю директорию
!PgDn::
IfWinActive, ahk_class TTOTAL_CMD
ControlSend, ,2 ^{PGUP}
Send, {Down}
Send, ^{PGDN}
return

;копирование по клавише f5 без подтверждения
;(либо перемещение, если подставить f6)
$f5::
IfWinNotActive, ahk_class TTOTAL_CMD
{
Send, {f5}
Return
}
ControlSend, ,2 {f5}
WinWait, ahk_class TInpComboDlg
Send, {Enter}
Return

Но вот как отправлять другие команды в Total непосредственно разобраться не могу. Например, как отправить в неактивную панель команду cm_OpenRecycled. На авторском сайте http://www.ghisler.ch/wiki/index.php/AutoHotkey выложен пример "AutoHotkey: Send a command to Total Commander (by SanskritFritz)", но там все по-английски, а я в нем не силен. Пробовал подставлять, то что там написано в тело скрипта, но не получается.
Может кто-нибудь подскажет чего, плиз.

#2:  Author: fundukLocation: Санкт-Петербург PostPosted: Fri Apr 21, 2006 20:14
    —
Quote:
но там все по-английски, а я в нем не силен

Плохо, что не силён. Там, на оффоруме, от AHK все без ума, а здесь я вообще ни одного человека, юзавшего AHK, не знаю.

#3:  Author: KarSLocation: г. Абакан PostPosted: Sat Apr 22, 2006 10:09
    —
По Autohotkey есть рускоязычный форум http://forum.script-coding.info/topics.php, но там взаимодействие с Total Commander почти не обсуждают.

#4:  Author: Belkin PostPosted: Tue Apr 25, 2006 05:01
    —
Посылать Тоталу его же команды с помощью AutoHotkey очень просто.
Нужно открыть файл Totalcmd.inc и найти там интересующую тебя команду.
Рядом с этой командой стоит число. Это число и нужно использовать как wParam в команде PostMessage.
А в качестве Msg (сообщения) нужно использовать шестнадцатиричный код команды WM_USER+51. Это число 0x433.
Выглядит жутковато, но ничего сложного.
Например, для команды Тотала "cm_OpenRecycled" находим в Totalcmd.inc число 2127.
Значит, чтобы с помощью AutoHotkey выслать Тоталу эту команду, пишем:
PostMessage, 0x433, 2127,,, ahk_class TTOTAL_CMD ; выслать команду cm_OpenRecycled окну ТС
; (0x433 - WM_USER+51, 2127 - wParam,,, ahk_class - класс окна)
А если хотим, например, выслать команду cm_SrcTree, то пишем:
PostMessage, 0x433, 303,,, ahk_class TTOTAL_CMD
Правда просто?
Удачи

#5:  Author: KarSLocation: г. Абакан PostPosted: Tue Apr 25, 2006 14:48
    —
Belkin
Большое спасибо за помощь. Very Happy
Я сразу для себя написал скрипт
<!r::
PostMessage, 0x433, 4001,,, ahk_class TTOTAL_CMD
PostMessage, 0x433, 2127,,, ahk_class TTOTAL_CMD
return
Теперь по комбинации LAlt+R у меня на левой панели будет отображаться содержимое корзины.

У меня возник ещё один вопрос.
В случае, когда TotalCom не запущен, как можно его запустить с тем, чтобы в левой панели появилось содержимое корзины?
Для запуска TotalCom я использую следующий скрипт:

#x::
DetectHiddenWindows, On
if not WinExist( "ahk_class TTOTAL_CMD" )
Run, C:\Program Files\Total Commander\TOTALCMD.EXE
WinActivate
return

Т.е. по Win+X происходит запуск программы либо активация её окна, когда она свернута в трей.
Но если в следующих строках (перед return) записать:
PostMessage, 0x433, 4001,,, ahk_class TTOTAL_CMD
PostMessage, 0x433, 2127,,, ahk_class TTOTAL_CMD
return
то программа запускается, однако перехода в корзину не происходит.
Что делать? Sad

#6:  Author: Belkin PostPosted: Tue Apr 25, 2006 23:09
    —
Причина в том, что скрипт работает очень быстро, и к тому моменту, когда (командой Run) запустится Тотал, все последующие команды уже успеют выполниться, не сделав того, что должны.
Чтобы этого не происходило, нужно после команды Run добавить ожидание окна Тотала (команда WinWait, ahk_class TTOTAL_CMD).
Кроме того, для большей надежности, лучше использовать команду SendMessage, а не PostMessage. Эти команды отличаются тем, что скрипт после высылки SendMessage ждет ответа от приложения (в нашем случае ответа от Тотала), что команда принята и выполнена. А при использовании PostMessage, скрипт ответа не ждет.
В общем случае лучше использовать команду SendMessage. Исключение составляют ситуации, когда посланная нами команда вызывает модальный диалог, и мы не хотим, чтобы скрипт ждал, пока этот диалог завершится.
Добавлю, что время ожидания ответа после SendMessage не бесконечно, а составляет пять секунд. Но этого времени больше, чем достаточно, чтобы обработать поставленную в очередь команду (винда ведь многозадачна).
Кстати, синтаксис команды SendMessage полностью идентичен команде PostMessage. Т.е., например:
SendMessage, 0x433, 2127,,, ahk_class TTOTAL_CMD ; cm_OpenRecycled
Привет. Успехов.

#7:  Author: KarSLocation: г. Абакан PostPosted: Wed Apr 26, 2006 16:53
    —
Belkin
Спасибо за внимание и доступность объяснения Very Happy .
Теперь скрипт поправил:
<!r::
DetectHiddenWindows, On
IfWinActive, ahk_class TTOTAL_CMD
SendMessage, 0x433, 4001,,, ahk_class TTOTAL_CMD
SendMessage, 0x433, 2127,,, ahk_class TTOTAL_CMD
IfWinNotActive, ahk_class TTOTAL_CMD
Run, C:\Program Files\Total Commander\TOTALCMD.EXE
WinWait, ahk_class TTOTAL_CMD
SendMessage, 0x433, 4001,,, ahk_class TTOTAL_CMD
SendMessage, 0x433, 2127,,, ahk_class TTOTAL_CMD
return

И всё заработало Very Happy .

Пересмотрел и скрипт для клавиш F5/F6:
f5::
IfWinActive, ahk_class TTOTAL_CMD
PostMessage, 0x433, 905,,, ahk_class TTOTAL_CMD
WinWait, ahk_class TInpComboDlg
Send, {Enter}
Return
f6::
IfWinActive, ahk_class TTOTAL_CMD
PostMessage, 0x433, 1005,,, ahk_class TTOTAL_CMD
WinWait, ahk_class TInpComboDlg
Send, {Enter}
Return

Так работает более корректно. Обращаю внимание, что здесь пришлось использовать команду PostMessage, т.к. применение SendMessage в этом скрипте приводит к тому, что диалоговое окно "ahk_class TInpComboDlg" зависает на несколько секунд, а потом уже выполняется команда Send, {Enter} и окно исчезает.
В связи с этим, теперь не знаю какую лучше команду использовать (т.е. более грамотно) в срипте открытия корзины - SendMessage или PostMessage, ведь обе срабатывают.

#8:  Author: Belkin PostPosted: Thu Apr 27, 2006 00:40
    —
2 KarS
В срипте открытия корзины грамотнее использовать SendMessage.

Однако, в твоем последем скриптике про корзину есть пара ошибок/неточностей.
Во-первых, неверен синтаксис команды if. И хотя случайно работает и неверный вариант, все же лучше освоить правильный. Он будет выглядеть вот так:
Code:
<!r::
DetectHiddenWindows, On
IfWinActive, ahk_class TTOTAL_CMD
{
    SendMessage, 0x433, 4001,,, ahk_class TTOTAL_CMD
    SendMessage, 0x433, 2127,,, ahk_class TTOTAL_CMD
}
IfWinNotActive, ahk_class TTOTAL_CMD
{
    Run, C:\Program Files\Total Commander\TOTALCMD.EXE
    WinWait, ahk_class TTOTAL_CMD
    SendMessage, 0x433, 4001,,, ahk_class TTOTAL_CMD
    SendMessage, 0x433, 2127,,, ahk_class TTOTAL_CMD
}
return

Во-вторых, не верна логика скрипта. Поэтому скрипт выше НЕ ВЕРНЫЙ. И хотя он и работает, но только при определенных условиях, которые я не стану рассматривать.
Во-третьих, ты проверяешь активность окна Тотала, а нужно проверять его существование (т.е. запущен он или нет).

А вот как правильно. Я приведу 2 варианта с разным синтаксисом.
Вариант 1: (со скобками в команде if)

Code:
<!r:: ; назначаем горячую клавишу
DetectHiddenWindows, On ; ищем и в скрытых окнах (если ТС свернут в трей)
IfWinNotExist, ahk_class TTOTAL_CMD ; если не существует окна Тотала (он не запущен), то...
{ ; эту (и парную ей) скобку можно не указывать, если между ними только одна команда. Если команд больше одной - скобки нужны.
    Run, C:\Program Files\Total Commander\TOTALCMD.EXE ; запустить ТС
    WinWait, ahk_class TTOTAL_CMD ; подождать окно ТС
} ; это парная первой скобка
; Все команды ниже будут выполнятся независимо от того был ли уже запущен ТС, или запустился только что.
WinActivate ; активировать окно ТС
SendMessage, 0x433, 4001,,, ahk_class TTOTAL_CMD ; переключиться на левую панель
SendMessage, 0x433, 2127,,, ahk_class TTOTAL_CMD ; открыть в ней корзину
return ; конец действий по горячей клавише

Вариант 2: (без скобок в команде if)

Code:
<!r:: ; назначаем горячую клавишу
DetectHiddenWindows, On ; ищем и в скрытых окнах (если ТС свернут в трей)
IfWinNotExist, ahk_class TTOTAL_CMD ; если не существует окна Тотала (он не запущен), то...
    Run, C:\Program Files\Total Commander\TOTALCMD.EXE ; запустить ТС
; Все команды ниже будут выполнятся независимо от того был ли уже запущен ТС, или запустился только что.
WinWait, ahk_class TTOTAL_CMD ; подождать окно ТС
WinActivate ; активировать окно ТС
SendMessage, 0x433, 4001,,, ahk_class TTOTAL_CMD ; переключиться на левую панель
SendMessage, 0x433, 2127,,, ahk_class TTOTAL_CMD ; открыть в ней корзину
return ; конец действий по горячей клавише


Оба варианта правильны, хотя первый вариант чуть более грамотен (не из-за скобок, а потому, что ожидаем окно (WinWait) после запуска Тотала, и не ожидаем, если Тотал уже запущен. И хотя это ожидание во втором случае и длится доли секунды, но всё же оно лишнее).

По поводу твоего "скрипта для Totalcmd F5/F6"...
Поскольку то, что я хочу сказать относится скорее к AutoHotkey, чем к Total Commander`у, то выскажусь в твоем топике на http://forum.script-coding.info/topic.php?topic=90

#9:  Author: KarSLocation: г. Абакан PostPosted: Thu Apr 27, 2006 17:22
    —
Belkin
Я в восторге Very Happy . Честно.
Не ожидал такого точного, квалифицированного и доступного ответа.
Огромное спасибо за ликбез и помощь.

#10:  Author: Igor_A. PostPosted: Sun Sep 03, 2006 13:38
    —
Автору топика респект!

Немедленно скомпилил экзешник, который висит в систрее и отслеживает f5 и f6! Супер удобно.

Остаётся гадать, ну почему автор Тотала так упорно не хочет сделать опциональным дурацкий запрос при копировании перемещении через клавиатуру?!

#11:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Mon Sep 04, 2006 19:56
    —
Quote:
Остаётся гадать, ну почему автор Тотала так упорно не хочет сделать опциональным дурацкий запрос при копировании перемещении через клавиатуру?!
А разве "Configuration \ Misc \ Get confirmation before" - это не то?! Не нравятся запросы - убери всех птиц. Лично я оставил только вторую - Overwriting files.

#12:  Author: Igor_A. PostPosted: Wed Sep 06, 2006 21:39
    —
2 Вахмурка
Конечно не то!!!
Что там не ставь или не убирай, а одним нажатием на f5 или f6 штатно не скопируешь (переместишь) файл (файлы). Выскочит окошко с вариантами копирования. Если мышкой тянуть, то никакого запроса не будет, но я то, как и многие, привык топтать клаву Smile. Вот потому и удобно иметь откомпилированный скрипт под рукой.

#13:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Wed Sep 06, 2006 23:31
    —
Уболтал Smile
Я бы просто написал в ТС команду:
Code:
powerpro.exe *keys {f5}{enter}
и повесил на F5. Никакой компиляции и никакого отслеживания.

#14:  Author: Igor_A. PostPosted: Thu Sep 07, 2006 20:51
    —
Ага. А весит этот паверпро сколько?!

А откомпилированный экзешник со скриптом - около 180 кило примерно.

#15:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Fri Sep 08, 2006 16:45
    —
"Весит" - в смысле дистрибутив? Какая разница? Важно, сколько прога жрет оперативки. PowerPro около 1.5 метров. При этом у тебя - менеджеры: горячих клавиш, буфера обмена, операций с мышью, виртуальных рабочих столов, скриптов, менюшек, панелей, трея, окон, таймеров, планировщика... (еще примерно "полстолька" остального, лень все перечислять). Посмотри ради прикола, сколько отъедает оперативки твой скрипт.
Помимо этого, избавившись от запроса на копирование, ты лишаешь себя кучи полезных свойств. Во-первых, очередь. Во-вторых, нажми кнопку "Options..." и посмотри, сколько там всего. В-третьих, тебе никогда не приходилось копировать (а скорее перемещать) что-то туда, где оно ну никак не должно находиться?! Запрос - еще одна гарантия. Именно по этим соображениям, полагаю, Гислер и не ввел возможность отмены запроса.

#16:  Author: Igor_A. PostPosted: Fri Sep 08, 2006 17:17
    —
2 Вахмурка:

Ну, это как подойти к вопросу!

Вот не секрет, что я создаю и распостраняю довольно популярную сборку на основе Тотала. Размер моей сборки уже распух до 15 метров. При этом в ней есть практически всё, что только можно представить из действительно нужных инструментов. Однако, я исхожу всегда из принципа, что если нужно внедрить в Тотал поддержку какой-либо функции, то делать это надо как можно меньшим объёмом добавляемых файлов. По этой причине в моей сборке все функции огромного Web-Drive исполняет микроскопический FTP-Drive, функции легендарного вьювера ACDSee - плагин вьювер Imagine размером раз в сто меньше, но ещё и лучше, чем ACDSee и т.д.
Вот потому то я и предпочту откомпилированный САМОДОСТАТОЧНЫЙ скрипт весом в 170 кило программе PowerPro с отдельным скриптом. Для минимизации размера сборки это очевидно.

Кроме того, я прекрасно знаю, что я лишаюсь автоматизировав F5 и F6, но ведь делаю я это сознательно, и отключаемым в ЛЮБОЙ момент скриптом. И автор Тотала мог бы это сделать опционально. И даже не через меню настроек, а только ручной правкой wincmd.ini для пущей безопасности. Ламер бы править не смог и не стал бы инишник для этого, а опытный, мог бы при желании.

#17:  Author: KarSLocation: г. Абакан PostPosted: Thu Nov 09, 2006 18:41
    —
Скрипт для открытия в ТС новой вкладки, в которой откроется аплет "Мой компьютер". Автор - The gray Cardinal взято на http://forum.script-coding.info/viewtopic.php?id=58
Я повешал это на комбинацию Win+K

#sc025::
SendMessage, 1075, 3001,,, ahk_class TTOTAL_CMD
SendMessage, 1075, 2122,,, ahk_class TTOTAL_CMD
return

#18:  Author: kop_antonLocation: Uzbekiatan, Tashkent PostPosted: Wed May 09, 2007 21:51
    —
Здравствуйте!
Стал недавно пользоваться AHK и вот набросал:

Code:
#InstallKeybdHook
~MButton::
IfWinNotActive, ahk_class TTOTAL_CMD
   return
Send, {LCtrl Down}{sc02C Down}
   return
~MButton Up::
IfWinNotActive, ahk_class TTOTAL_CMD
   return
Send, {LCtrl Up}{sc02C Up}
   return

Вроде работает!

Возникла проблема со скроллом, к примеру код:
Code:
~WheelDown::
IfWinNotActive, ahk_class TTOTAL_CMD
{
   Send, {WheelDown}
   return
}
Send, {RAlt Down}{Down}
   return

глючит, не понимаю в чем причина Crying or Very sad
Работает через раз, то есть 1 раз действительно команда выполняется.
а при нажатии во 2 раз глючит. Выяснил только то, что кнопка Alt висит нажатой в памяти, даже после выхода из скрипта.
Помогите, если знаете в чем дело.

#19:  Author: Alextp PostPosted: Wed May 09, 2007 23:41
    —
kop_anton
Я бы забросил на оф. форум.

Там majkinetor, SansFritz - они в AHK гуру.

#20:  Author: DrSharkLocation: Kyiv, Ukraine PostPosted: Thu May 10, 2007 00:58
    —
Не проблема.
Send, {RAlt Down}{Down}{RAlt Up}
Или чё-то типа этого (проверять нет времени, щас у меня дисконнект будет).

#21:  Author: kop_antonLocation: Uzbekiatan, Tashkent PostPosted: Thu May 10, 2007 20:36
    —
Спастбо мужики, разобрался!
Теперь работает
Code:
*$WheelDown::
IfWinNotActive, ahk_class CorelDRAW 13.0
{
   Send, {WheelDown}
   return
}
Send, {RAlt Down}{Down}{RAlt Up}
   return
*$WheelUp::
IfWinNotActive, ahk_class CorelDRAW 13.0
{
   Send, {WheelUp}
   return
}
Send, {RAlt Down}{Up}{RAlt Up}
   return


короче заморочка была со *, без нее скрипт глючит. В Faq прочитал что *
Quote:
запускает горячую клавишу, даже если удерживаются дополнительные модификаторы.
Оказалось дело все в этих модификаторах...
А вообще этот скрипт подошел к Corel, поэтому он и прописан

#22:  Author: Belkin PostPosted: Fri May 11, 2007 01:56
    —
kop_anton
Мне не совсем понятно, как это связано с Тоталом, но вот так будет проще:

Code:
#IfWinActive, ahk_class CorelDRAW 13.0
WheelDown:: SendInput, !{Down}
WheelUp:: SendInput, !{Up}
#IfWinActive

А вообще, вопросы по AutoHotkey можно задать здесь.

#23:  Author: wOxxOm PostPosted: Fri May 11, 2007 16:19
    —
кстати скроллер к Draw и Paint: http://recentfiles.sbn.bz/misc/AutoHotKey.ini - там через сообщения WM_SCROLL.
Есть, если кому надо скроллер в окнах VBA Editor

#24:  Author: Alextp PostPosted: Fri May 11, 2007 18:05
    —
На вс. случай сообщаю:

все что касается TC и AutoHotkey, оно здесь:
http://www.ghisler.ch/wiki/index.php/AutoHotkey

Если вы написали что-то чего там нет, укажите мне, я добавлю. Или сами добавьте (нужна регистрация на том Вики!).

#25:  Author: kop_antonLocation: Uzbekiatan, Tashkent PostPosted: Sun May 13, 2007 22:28
    —
Belkin

Спасибо, все окозолось куда проще, чем я думал. Smile
Поправил все подобные скрипты.

З.Ы. Сейчас зарегистрируюсь, и буду там их мучить Very Happy

#26:  Author: UserTC PostPosted: Fri Jan 11, 2008 20:11
    —
подскажите как записсать команду WM_USER+331 в PostMessage?

#27:  Author: D1PLocation: Тбилиси PostPosted: Sat Jan 12, 2008 01:37
    —
WM_USER = $0400 = 1024
WM_USER + 331 = 1355

#28: Навернем "F7" и вспомним NC по "F9" Author: ОтецСергий PostPosted: Thu Jul 24, 2008 00:05
    —
Создать папку с датой в имени по Shift+F7
Code:

DateName = %A_YYYY%-%A_MM%-%A_DD%
SetTitleMatchMode, 2
IfNotExist, %DateName%
{
WinWaitActive, Total Commander
Send, {F7}
WinWait, Total Commander, Отмена
Send, %DateName%{HOME}{SHIFTDOWN}{END}{SHIFTUP}
}
else
{
WinWaitActive, Total Commander
Send, %DateName%
}


Вызов скрипта реализовал из меню "Запуск"
(
Команда D:\Run\totalcmd\ahk\Создать папку с датой в имени.ahk
Параметр %P
)
настроив хоткей в конфигурации (S+F7=cm_UserMenu2).


Своё меню для папки
Code:

Menu, MyMenu, Add, Набрать заметку, mp1
Menu, MyMenu, Add, заглушка, mp2
Menu, MyMenu, Add  ; Add a separator line.
Menu, MyMenu, Add, Закрыть, mp3

Menu, MyMenu, Show
return

mp1:
FileName = Заметка'%A_Now%.txt
FileAppend, %A_YYYY%.%A_MM%.%A_DD% %A_Hour%:%A_Min%`n, %FileName%
Run, notepad %FileName%
WinWait, Безымянный - Блокнот
Send, ^{END}
WinWaitClose
return

mp2:
MsgBox Заглушка
return

mp3:
return

Вызов скрипта реализовал из меню "Запуск"
(
Команда D:\Run\AutoHotkey\AutoHotkey.exe
Параметр %PDirMenu.ahk
)
настроив хоткей в конфигурации (F9=cm_UserMenu3).

Файл DirMenu.ahk должен находиться в папке для которой создается меню.

#29:  Author: kadvlad PostPosted: Wed Dec 10, 2008 16:39
    —
Вот ещё пара полезных ahk-скриптов для Тотала (с оф.форума):

1) выделить/снять выделение в обеих панелях нажатием CTRL-ALT-(Num+)(Num-):
Code:
#SingleInstance, Force
asControlNames := "ListBox1,Button1,Button2,Button3,Button4,Edit1,ListBox1"
Return

#IfWinActive, ahk_class TTOTAL_CMD
   ^!NumpadSub::
      Send, ^{NumpadSub}{TAB}^{NumpadSub}{TAB}
      Return
   ^!NumpadAdd::
      Send, ^{NumpadAdd}{TAB}^{NumpadAdd}{TAB}
      Return
   ^+!NumpadSub::
      Send, ^+{NumpadSub}{TAB}^+{NumpadSub}{TAB}
      Return
   ^+!NumpadAdd::
      Send, ^+{NumpadAdd}{TAB}^+{NumpadAdd}{TAB}
      Return
#IfWinActive


2) когда Тотал свёрнут в трей -- переключение по ALT-TAB без нажания ENTER:

Code:
SetTimer subTimer, 100
subTimer:
If WinActive( "ahk_class switchwin2" )
{
SendInput, {Enter}
}
Return

#30:  Author: kefirux PostPosted: Thu Dec 11, 2008 12:09
    —
сразу после установки АутоХотКея вылетел Еррор в файле AutoHotkey.ahk:

#z::Run www.autohotkey.com

ругался на #z
причём этот файл я так и не нашёл)
я создал новый с таким же именем,
скрипт поменял на какойто пример из этого поста
который начинается на <!r::
но он ругается что it does not exist on current Keyboard Layer
я в замешательстве!

#31:  Author: sergeichLocation: Москва PostPosted: Thu Dec 11, 2008 23:27
    —
#z:: это не файл, а клавиша. а ошибка выскакивает, потому что у тебя язык по умолчанию русский, поставь английский.

#32:  Author: kefirux PostPosted: Fri Dec 12, 2008 00:32
    —
sergeich
такой пустяк а столько разочарований )
спасибо!

#33:  Author: John Shade PostPosted: Sun May 23, 2010 04:26
    —
А вот этим скриптом "Открыть в Total Commander (пункт контекстного меню)" кто-нибудь пользуется?
http://forum.script-coding.info/viewtopic.php?id=364

Вот эти ключи вроде как не работают (ТС 7.55 rc2)

Code:
; /L= - открыть в левой панели
; /R= - открыть в правой панели


То есть он открывает, но в активной панели вне зависимости от наличия данных ключей. Может кто-нибудь подскажет?

#34:  Author: FlasherLocation: Москва PostPosted: Sun May 23, 2010 11:25
    —
John Shade wrote:
То есть он открывает, но в активной панели
Там же в скрипте явно указано ; /O - используем запущенный ТС (RTFM, собственно).

#35:  Author: John Shade PostPosted: Sun May 23, 2010 15:40
    —
Flasher, хмм. Мне казалось, что ключи /O /L вполне могут сочетаться, то есть при таком наборе в уже запущенном экземпляре ТС скрипт выберет нужную (левую или правую) панель для отображения файла. И отсылка на RTFM ни к чему, поскольку ЯВНО об этом там не сказано.

Кроме того, мне лично совершенно не нужна отдельная копия ТС на каждый открываемый таким образом файл.

#36:  Author: FlasherLocation: Москва PostPosted: Sun May 23, 2010 15:57
    —
John Shade wrote:
Мне казалось, что ключи /O /L вполне могут сочетаться
Ну если они использовались в связке, то могу уверенно сказать, что скрипт в этом смысле у меня на той же версии ТС работает правильно, открывается именно указанная панель. Я было подумал, что без параметра /O задавалось условие. RTFM лишь к этому.
John Shade wrote:
Кроме того, мне лично совершенно не нужна отдельная копия ТС на каждый открываемый таким образом файл.
Ну да, только при условии, если ТС не включён. Wink

#37:  Author: John Shade PostPosted: Sun May 23, 2010 16:12
    —
Flasher wrote:
Ну если они использовались в связке, то могу уверенно сказать, что скрипт в этом смысле у меня на той же версии ТС работает правильно, открывается именно указанная панель. Я было подумал, что без параметра /O задавалось условие.

В том-то и дело, что в связке не работает. Вне зависимости от наличия ключа с явным указанием панели всё открывается в той панели, которая на данный момент активна. Sad

Брр. Надо еще поэкспериментировать.

win xp sp3 если что.

#38:  Author: John Shade PostPosted: Sun May 23, 2010 16:36
    —
Включил отладочный режим через DebugOut = 1 и вот что оно мне выдало:

Code:
Received_Path=(здесь путь)
TCParam=/O /T /L
NewTab=1
TCExtCom=
Left=
Right=
Clipboard=


Как видно, в ключах задано использование имеющейся копии ТС, открытие в новой вкладке и в левой панели.
Но если параметр /T отработал (что видно по расположенному ниже NewTab=1), то запись Left= не радует.

#39:  Author: dude PostPosted: Tue Aug 16, 2011 15:02
    —
Есть вопрос к адептам — а как реализовать на AutoHotkey (и возможно ли) одновременную поддержку f5/f6 в одном скрипте?
Я про:
Code:
;копирование по клавише f5 без подтверждения
;(либо перемещение, если подставить f6)
$f5::
IfWinNotActive, ahk_class TTOTAL_CMD
{
Send, {f5}
Return
}
ControlSend, ,2 {f5}
WinWait, ahk_class TInpComboDlg
Send, {Enter}
Return

За что отдельное спасибо KarS

*Да, и как вариант — интересует также перехват нажатий не клавиш f5/f6, а соответствующих кнопок непосредственно в ТС?

#40:  Author: mf-zlLocation: BLR PostPosted: Tue Aug 16, 2011 15:59
    —
dude
Code:
#SingleInstance force
#IfWinActive, ahk_class TTOTAL_CMD
~F5::
~F6::
  WinWait, ahk_class TInpComboDlg
  ControlSend, TButton5, {Enter}, ahk_class TInpComboDlg
Return


 !  Avada:
Избыточное цитирование удалено.

#41:  Author: dude PostPosted: Tue Aug 16, 2011 16:19
    —
mf-zl, отлично работает — то, что нужно, спасибо огромное!
________________________________________________________

*но таки как почти идеальный вариант — "перехват нажатий не клавиш f5/f6, а соответствующих кнопок непосредственно в ТС"?
и как безусловный идеал — и то и другое вместе, и f5/f6 и кнопки ТС? Такое может быть?

#42:  Author: mf-zlLocation: BLR PostPosted: Tue Aug 16, 2011 20:09
    —
dude, Пойдёт ?
Code:
#Persistent
#SingleInstance force
SetTimer, NoConfirm, 0
NoConfirm:
  WinWait, ahk_class TInpComboDlg
  ControlSend, TButton5, {Enter}, ahk_class TInpComboDlg
Return

#43:  Author: dude PostPosted: Tue Aug 16, 2011 21:14
    —
mf-zl, да Вы гений! Конечно подойдет, и еще как)
Проблема с этими "подтверждениями" элементарных действий решена, вуаля

#44:  Author: mf-zlLocation: BLR PostPosted: Tue Aug 16, 2011 21:20
    —
Вот и чудненько Wink

#45:  Author: dude PostPosted: Tue Aug 16, 2011 22:48
    —
Дабы окончательно отшлифовать поднятую тему (автоматизация ТС же):
на основе простейшего батника:
Code:
start TC.ahk
start /wait TOTALCMD.EXE
taskkill /IM TC.ahk

на коленке было изготовлено http://rghost.ru/18214721
оба файла закидываются в директорию ТС, запускается TCLouncher.exe и ... наслаждаемся)

mf-zl, еще одно огроменное Спасибо не помешает, думаю ;)

#46:  Author: FlasherLocation: Москва PostPosted: Tue Aug 16, 2011 23:37
    —
dude
В данном случае лучше использовать autorun с командой ShellExec и ключами /T и /W.

#47:  Author: mf-zlLocation: BLR PostPosted: Wed Aug 17, 2011 03:31
    —
dude вариант без батника:
Code:
#Persistent
#NoTrayIcon
#SingleInstance force
SetTimer, NoConfirm, 0
RunWait, TOTALCMD.EXE
ExitApp
NoConfirm:
  WinWait, ahk_class TInpComboDlg,, 1
  ControlSend, TButton5, {Enter}, ahk_class TInpComboDlg
Return

#48:  Author: dude PostPosted: Wed Aug 17, 2011 04:29
    —
mf-zl, чудеснейше, нет слов!
Победа?)
серьезно — гениальное решение проблемы

*думаю, стоит выложить "общую" версию
бинарник поместить в директорию рядом с TOTALCMD.EXE, через TCRun.exe и запускать
http://rghost.ru/18338991

#49:  Author: FlasherLocation: Москва PostPosted: Thu Aug 25, 2011 20:00
    —
Кто подскажет, почему на 7-ке при запущенном TC не работает WinActivate с такой строкой
Code:
IfWinNotActive ahk_class TTOTAL_CMD
, а только с такой
Code:
if WinExist( "ahk_class TTOTAL_CMD" )

И почему клавиши, например, "#Tab::" приходится удерживать более секунды до появления окна? При быстром нажатии - игнор.
Версия - 1.0.48.05

#50:  Author: FlasherLocation: Москва PostPosted: Fri Oct 28, 2011 05:05
    —
790 wrote:
Команды cm_GotoPreviousLocalDir и cm_GotoNextLocalDir прекрасно работают на клаве (у меня назначены на стрелки влево/вправо) и пропускают FTP-соединения, как положено.
Но у меня ещё есть на мышке доп. боковые кнопки, которые также переключают пред/след папки и уже так привык с ними работать, что без них и мыши не представляю.
...
может быть, вопрос уже как-то решён по другому?

Code:
#SingleInstance force
#NoTrayIcon
#IfWinActive ahk_class TTOTAL_CMD

*$XButton1::
SendMessage, 0x433, 573,,, ahk_class TTOTAL_CMD
Return

*$XButton2::
SendMessage, 0x433, 574,,, ahk_class TTOTAL_CMD
Return

#51:  Author: LonerDLocation: Донецк PostPosted: Sun Jan 08, 2012 23:06
    —
Можно ли отследить нажатие средней/правой/боковыми клавишами мыши по кнопкам панелей инструментов?
Отследить по координатам не получится - координаты разные в зависимости от размеров окна.
Остаются только всплывающие подсказки... но как их отследить?

Можно ли отследить нажатие правой/средней кнопки мыши по нижней панели или только можно по всей панели в целом?

#52:  Author: mf-zlLocation: BLR PostPosted: Mon Jan 09, 2012 01:09
    —
LonerD Думаю можно, а что конкретно вы хотите автоматизировать?
ЗЫ: Относительно окна координаты одинаковы! Исключение - большое количество кнопок и перенос их на вторую строку, а также перенос меню с большим количеством пунктов.

Code:
CoordMode, Mouse, Relative ; Coordinates are relative to the active window.

#53:  Author: FlasherLocation: Москва PostPosted: Mon Jan 09, 2012 05:27
    —
mf-zl wrote:
Относительно окна координаты одинаковы!
Это с чего вдруг? Координаты в пикселях задаются, а не процентах, верно? Значит, относительно разноразмерных панелей будут разные позиции.

#54:  Author: mf-zlLocation: BLR PostPosted: Mon Jan 09, 2012 10:37
    —
Flasher Если очень надо можно ведь и запариться - прочитать из wincmd.ini размер значков панели и относительно его составить формулу... или нет ? Rolling Eyes

#55:  Author: FlasherLocation: Москва PostPosted: Mon Jan 09, 2012 10:42
    —
mf-zl
Уже парились и не раз. Wink Увы, шкурки винды диктуют своё, знание размеров кнопок не решает полностью проблему позиционирования, только частично.

#56:  Author: LonerDLocation: Донецк PostPosted: Mon Jan 09, 2012 15:37
    —
Quote:
Думаю можно, а что конкретно вы хотите автоматизировать?

Хотел повесить функции на клики средней кнопкой мыши на кнопки панели инструментов.
Но, раз только через координаты можно это осуществить - тогда для меня это гиблое дело, кнопок у меня и правда много, и они то в один, то в два ряда выстраиваются, темы винды могут быть разные... А на всплывающую подсказку нельзя ориентироваться?

Кинул на оф.форуме предложение встроить непосредственно в Тотал функционал нажатия средней кнопки на кнопках панели.

А вот по поводу нижнего ряда кнопок (просмотр - редактирование - копирование - перемещение - новая папка - удаление - выход) - думаю, стоит попробовать. Кнопок всего семь штук, и они достаточно широкие при любом размере окна. Ради совместимости с разными шкурками можно самые крайние пиксели кнопок не обрабатывать.
Правда, моих познаний пока что вряд ли хватит для хватит для высчитывания относительных координат.
Думаю, такой скрипт был бы полезен многим:
Если кликаем левой кнопкой мыши по определённой кнопке нижнего ряда, то вызывается определённая cm_ или em_ команда, если правой - то другая, если средней - то третья.

#57:  Author: shveicarLocation: Россия Москва PostPosted: Sun Mar 18, 2012 14:07
    —
Здравствуйте.
Есть интересный скрипт касаемый средней копки мыши (или колеса)
Code:

MButton::
   MouseGetPos, , , id
   WinGetClass, class, ahk_id %id%
   if (class = "TTOTAL_CMD")
   {
      Mouseclick
      Send {F3}
   }
   else if (class = "TLister")
   {
      Mouseclick
      Send {Esc}
   }
   else
      Mouseclick, Middle
return
F12:: ExitApp

Позволяет открывать для быстрого просмотра в панели, файла под курсором, причем для открытия и закрытия файла достаточно -один раз нажать на кнопку. Весьма удобно...

#58:  Author: FlasherLocation: Москва PostPosted: Sun Mar 18, 2012 14:35
    —
Нажатие F3 вызывает не быстрый просмотр, а обычный. Я бы заменил на SendMessage c 903 для надёжности.

#59:  Author: LonerDLocation: Донецк PostPosted: Sat Jul 28, 2012 22:24
    —
Как сэмулировать нажатие вот этой кнопочки-скролла (и аналогичной кнопочки вверх) в активной панели?



Цель - повесить на пользовательскую команду (хоткей) скрипт скролла панели с сохранением положения курсора относительно верхней границы панели.
При нажатии на хоткей должно эмулироваться нажатие указанной кнопки в активной панели (список файлов прокручивается на одну позицию вниз), плюс курсор в активной панели смещается на одну позицию вниз (эмуляция нажатия кнопки вниз на клавиатуре). Если файлов на панели мало и скролла нет - ничего не происходит.
И аналогично - нажатия скролла вверх + смещение позиции курсора на одно деление вверх.

Posted after 50 minutes:

Сам себе и отвечу Laughing

Code:
; Scroll up by one line (for a control that has a vertical scroll bar):
ControlGetFocus, control, A
SendMessage, 0x115, 0, 0, %control%, A
SendEvent {UP}

; Scroll down by one line:
ControlGetFocus, control, A
SendMessage, 0x115, 1, 0, %control%, A
SendEvent {DOWN}


Остальное, думаю не составит труда реализовать.
Пока только не понял - как убрать мелькание песочных часиков (ожидание выполнения) возле мышиного курсора при выполнении вышеуказанных команд.


Last edited by LonerD on Sun Jul 29, 2012 04:29; edited 1 time in total

#60:  Author: FlasherLocation: Москва PostPosted: Sun Jul 29, 2012 00:44
    —
Мелькание убирается только явной сменой курсора фонового режима.

А что сложного в использовании обычного скролла мыши?

#61:  Author: LonerDLocation: Донецк PostPosted: Sun Mar 17, 2013 16:42
    —
Каким образом послать Тоталу пользовательскую команду через Unicode-версию Autohotkey_L ? (в том числе через 64-битную версию если есть различие).
Для ANSI есть рабочий вариант, но адаптировать под Unicode самостоятельно не удаётся.

#62:  Author: FlasherLocation: Москва PostPosted: Sun Mar 17, 2013 19:10
    —
Все рабочие варианты для любой версии Autohotkey_L приведены в этой ветке. Почему не работает именно указанный вариант, понять без всех выполненных условий нельзя. Видимо, там какая-то проверка не срабатывает. Нужна-то всего одна строчка.

#63:  Author: LonerDLocation: Донецк PostPosted: Sun Mar 17, 2013 20:26
    —
Quote:
Все рабочие варианты для любой версии Autohotkey_L приведены в этой ветке.

В ветке рабочие варианты.

Но вся суть в том, что в ветке до этого момента рассматривались только cm_ команды, посылаемые в виде числового кода. Я же спрашиваю про пользовательскую (em_) команду.
Про одну строчку - согласен, скорее всего решение элементарное. Но уже пробовал и осмыслить команду, и метод тыка - пока безрезультатно.
Согласно совету на оф.форуме заменил:
cbData := StrPutVar(Command, Command, "cp0")
Добавил функцию StrPutVar, но и так не работает.
Таки работает (почему не работало сразу - вопрос на засыпку).
Может, кому пригодится:
Code:

SendTCUserCommand("em_blablabla")
Return

SendTCUserCommand(Command) ; string
  {
    If  Command <>
      {
        VarSetCapacity(CopyDataStruct, 3*A_PtrSize, 0)  ; Set up the structure's memory area.
        dwData := Asc("E") + 256 * Asc("M")
        NumPut(dwData,  CopyDataStruct, 0)
        cbData := StrPutVar(Command, Command, "cp0")
        NumPut(cbData, CopyDataStruct, A_PtrSize)  ; OS requires that this be done.
        NumPut(&Command, CopyDataStruct, 2*A_PtrSize)  ; Set lpData to point to the string itself.
        SendMessage, 0x4a, 0, &CopyDataStruct,, ahk_class TTOTAL_CMD ; 0x4a is WM_COPYDATA. Must use Send not Post.
      }
  }
 
StrPutVar(string, ByRef var, encoding)
{
    VarSetCapacity( var, StrPut(string, encoding) * ((encoding="utf-16"||encoding="cp1200") ? 2 : 1) ) ; Ensure capacity.
    return StrPut(string, &var, encoding) ; Copy or convert the string.
}

#64:  Author: LonerDLocation: Донецк PostPosted: Sat May 25, 2013 14:10
    —
Не могу понять.
Записываю пользовательскую команду (или же кнопку):
Code:
[em_MyScript]
cmd=%commander_path%\Utilities\AutoHotkey\AutoHotkey.exe
param=%%commander_path%%\Scripts\MyScript.ahk

Не работает. AutoHotkey пытается искать скрипт по пути "текущий_активный_каталог\%commander_path%\Scripts\MyScript.ahk"

А вот так работает:
Code:
[em_MyScript]
cmd=%commander_path%\Utilities\AutoHotkey\AutoHotkey.exe %commander_path%\Scripts\MyScript.ahk

В чём ошибка в первой записи, как правильно передать скрипт в поле параметра ?

#65:  Author: AvadaLocation: Россия, Саратов PostPosted: Sat May 25, 2013 14:26
    —
LonerD
А зачем, собственно, разносить запись на два поля, если всё нормально работает в одном?

#66:  Author: LonerDLocation: Донецк PostPosted: Sat May 25, 2013 16:06
    —
Avada wrote:
А зачем, собственно, разносить запись на два поля, если всё нормально работает в одном?

Да, я тоже знаю золотое правило админа "Если что-то работает - лучше не трогай".
Вопрос в другом. Где ошибка в первом варианте записи? Это особенность AHK или Тотала в целом? Ведь и в одном и во втором случае путь к скрипту выступает в качестве параметра, но в одну строку работает, а в две - нет.

#67:  Author: FlasherLocation: Москва PostPosted: Sat May 25, 2013 16:57
    —
LonerD
Ты явно не в ту тему залез. На днях обсуждали, а ещё здесь, и здесь, и много ещё где. Ты бы поискать не поленился.

#68:  Author: LonerDLocation: Донецк PostPosted: Sat May 25, 2013 19:42
    —
Flasher
Спасибо за ссылочки.
"Тотал не раскрывает переменные окружения, указанные в поле параметров кнопки."
Тогда всё в тему. Значит, проблема в том, что AutoHotkey.exe не умеет раскрывать переменные окружения, потому в данном частном случае единственный правильный выход - указывать программу и параметр в одной строке.

#69:  Author: FlasherLocation: Москва PostPosted: Sat May 25, 2013 20:09
    —
LonerD wrote:
проблема в том, что AutoHotkey.exe не умеет раскрывать переменные окружения
Он умеет это делать в теле скрипта, а не в пути к нему.

LonerD wrote:
потому в данном частном случае единственный правильный выход - указывать программу и параметр в одной строке.
Ну, если ты смотрел примеры по ссылкам внимательно, то не единственный.

#70:  Author: LonerDLocation: Донецк PostPosted: Sun Jun 09, 2013 17:47
    —
Каким образом "заморозить" и "разморозить окно" (запретить и разрешить прорисовку), а затем перерисовать содержимое окна (панелей) ? Всё в целом окно Тотала или хотя бы только панели.
То есть скрыть активность при выполнении скриптов (выделение, переименование, навигацию и т.д...)
Пробовал вот так:
SendMessage, 0xB, 0,,, ahk_class TTOTAL_CMD - окно замораживается насмерть, оно вообще отображается лишь в панели инструментов, и лечится только закрытием.
SendMessage, 0xB, 1,,, ahk_class TTOTAL_CMD - не размораживается.
Плюс ещё как-то перерисовать надо...

Тему читал, но как это всё адаптировать в AutoHotKey - не представляю.

PS. Собственно, сам и отвечу. Хоть такой способ и не рекомендуется умными программистами, но для кратковременных операций имхо будет приемлем и выглядит довольно заманчиво - лишь лёгкое помаргивание панелек.
Code:
; Получаем HWND Тотала и блокируем перерисовку
WinGet, TCHWND, ID, ahk_class TTOTAL_CMD
DllCall("LockWindowUpdate", "uint", TCHWND)
; Делаем что-нибудь
; Разблокируем окно
DllCall("LockWindowUpdate", "uint", 0)

#71:  Author: dmitriy111 PostPosted: Fri Jul 05, 2013 17:48
    —
Есть вот скрипт который ловит двойные быстрые нажатия указанных клавиш и выполняет соответствующую команду, но есть проблема - клавиша, по которой происходит срабатывание перестает работать в сочетаниях с другими клавишами (например Ctrl+S), подскажите пожалуйста как это можно исправить?

Code:
DoubleKey(sendKeys, timeout)
{
  if(A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey < timeout)
    Send, %sendKeys%
}

LCtrl:: DoubleKey("^V", 200)

#72:  Author: rediffusion PostPosted: Sun Mar 10, 2019 20:16
    —
Кто подскажет как - "Назначить F4 на клик по колёсику мыши".

autorun.cfg вставил:
Code:
ShellExec /SW_HIDE  /W /TT "%COMMANDER_DRIVE%\Users\NIKA\Downloads\F4-Mouse\F4W.exe"  "%COMMANDER_DRIVE%\Users\NIKA\Downloads\F4-Mouse\F4W.ahk"


Файлы скачал. Что дальше?


Last edited by rediffusion on Mon Mar 11, 2019 11:31; edited 5 times in total

#73:  Author: AvadaLocation: Россия, Саратов PostPosted: Sun Mar 10, 2019 20:22
    —
rediffusion
Сообщения с многоточиями в начале фраз дальше будут удаляться. Раз нормальные замечание игнорируются, придётся поступать так. А за злостные нарушения правил форума у нас банят.

#74:  Author: FlasherLocation: Москва PostPosted: Mon Mar 11, 2019 09:00
    —
rediffusion
В памятке чётко написано, что делать в случае "не работает".
И не autorum.cfg, а autorun.cfg.

#75:  Author: AvadaLocation: Россия, Саратов PostPosted: Mon Mar 11, 2019 09:20
    —
rediffusion
Во-первых, не надо отвечать модератору в теме, для этого есть ЛС.
Во-вторых, содержимое строки из autorun.cfg и подобные её вещи впредь прошу оформлять либо кодом, либо цитатой. Под спойлер обычно упрятывается либо объёмная, либо посторонняя информация.

#76:  Author: FlasherLocation: Москва PostPosted: Mon Mar 11, 2019 20:20
    —
rediffusion wrote:
Code:
"%COMMANDER_DRIVE%\Users\NIKA\Downloads\F4-Mouse\F4W.exe" "%COMMANDER_DRIVE%\Users\NIKA\Downloads\F4-Mouse\F4W.ahk"
Скомпилированный в exe код пытается запустить тот же нескомпилированный. Отлично! Всё сразу заработает! Laughing

#77:  Author: rediffusion PostPosted: Thu Mar 14, 2019 11:01
    —
Flasher

Если скрипт не работает!

1) http://forum.wincmd.ru/viewpost.php?p=14148
2) Кода ошибки нет. Пока толком не понял как запустить!?
3)
Code:
#SingleInstance force
#NoTrayIcon
#IfWinActive ahk_class TTOTAL_CMD
MButton::
SendMessage, 0x433, 2127,,, ahk_class TTOTAL_CMD ; cm_OpenRecycled
return

4) Ну TC от Matros.
5) Windows LTSB x64
6) Есть компилятор "Ahk2Exe.exe".

Не могу понять как сделать правильно кнопку (и нужна ли она вообще)!? А ещё как правильно прописать в autorun.cfg клик по "MButton"?
В итоге хочу чтоб клик по "MButton" происходила очистка корзины, без её открытия.

P.S.
Данный топик перечитал 2 раза.

#78:  Author: FlasherLocation: Москва PostPosted: Thu Mar 14, 2019 11:22
    —
rediffusion wrote:
и нужна ли она вообще?
Не нужна.
rediffusion wrote:
А ещё как правильно прописать в autorun.cfg клик по "MButton"?
Зачем? Это делает сам скрипт.

В autorun.cfg при отсутствии пишется в начальных строках загрузка библиотеки:
Code:
LoadLibrary Plugins\Autorun_Sysinfo.dll
А после где-то снизу (до Pragma AutorunFinalizeSection):
Code:
ShellExec /T "%COMMANDER_PATH%\Scripts\AutoHotKey\AutoHotkeyU%SYSINFO_OSARCH%.exe" '"%COMMANDER_PATH%\Scripts\AutoHotKey\OpenRecycledBinByMiddleButton.ahk"'

#79:  Author: rediffusion PostPosted: Thu Mar 14, 2019 14:48
    —
Flasher

Благодарю!
Работает и открывает папку "Корзина". Такое в "TC" у меня в принципе есть.
Я хочу чтоб просто "ОЧИСТКА КОРЗИНЫ" была на кнопке "MiddleButton".
В "TC" у меня например есть такая команда:
Code:
rempty tcimg=$cm540

Вот как её туда прикрутить?

#80:  Author: FlasherLocation: Москва PostPosted: Thu Mar 14, 2019 15:19
    —
rediffusion
Code:
MButton::FileRecycleEmpty

Но какое это будет иметь отношение к ТС, если это можно делать и без привязки к окну?:
Code:
#IfWinActive ahk_class TTOTAL_CMD

#81:  Author: rediffusion PostPosted: Thu Mar 14, 2019 15:28
    —
Flasher wrote:

если это можно делать и без привязки к окну?:


Я не знаю. Только пару дней назад узнал об этой утилите.
Что изменить в этом скрипте, чтоб было правильно?
Code:
#SingleInstance force
#NoTrayIcon
#IfWinActive ahk_class TTOTAL_CMD
MButton::
SendMessage, 0x433, 2127,,, ahk_class TTOTAL_CMD
return

#82:  Author: FlasherLocation: Москва PostPosted: Thu Mar 14, 2019 15:32
    —
rediffusion
Code:
#SingleInstance force
#NoTrayIcon
MButton::FileRecycleEmpty
Но опять же. Какой тогда смысл привязывать этот скрипт к ТС, если его можно закинуть в автозагрузку ОС?
И к подфоруму это по сути не имеет отношения. Другое дело было бы с хоткеями самого ТС.

P.S.: Вы в курсе, что цитировать выделенный текст сообщения можно, нажимая "цитировать" под ником в блоке профиля, слева от поста?

#83:  Author: rediffusion PostPosted: Thu Mar 14, 2019 15:44
    —
Flasher wrote:
если его можно закинуть в автозагрузку ОС?

Ов, да вы знаете я хочу чтоб только в "TC" выполнялся данный скрипт, но не вне. А что если в игру буду играть и нужно чтоб не был занят "MButton"?

P.S. Теперь в крусе!

#84:  Author: FlasherLocation: Москва PostPosted: Thu Mar 14, 2019 15:49
    —
rediffusion
Confused Издеваетесь? Сперва 'Я не знаю. ... Что изменить в этом скрипте', а теперь 'чтоб только в "TC"'. Так и пропишите директивное условие над последней строкой.

#85:  Author: rediffusion PostPosted: Thu Mar 14, 2019 16:33
    —
Рабочий скрипт:
Code:
#SingleInstance force
#NoTrayIcon
#IfWinActive, ahk_class TTOTAL_CMD
MButton::FileRecycleEmpty


Добавлено спустя 58 минут:

Flasher

Такой вопрос, что прописать для завершения скрипта в "Диспетчер задач". После закрытия "TC" скрипт продолжает висеть.
Пересмотрел такие варианты:
Code:
Exit
ExitApp
onExit

Работающего кода не нашёл для моего случия. Мож вы что то знаете?

#86:  Author: FlasherLocation: Москва PostPosted: Thu Mar 14, 2019 17:40
    —
rediffusion
Версия Autorun актуальная?
Ключ /T призван завершать запускаемую программу с закрытием ТС.

#87:  Author: rediffusion PostPosted: Thu Mar 14, 2019 18:58
    —
Flasher wrote:
Где AutoHotKey?


Я заменил на такое название "RecycleBinEmpty.exe" мне удобнее выискивать в папке и "Диспетчер задач". А если таких AutoHotkey.exe много станет со временем, то как мне определить какой скрипт за какой программой стоит?
Или можно в один .exe вшивать много скриптов?

#88:  Author: FlasherLocation: Москва PostPosted: Thu Mar 14, 2019 19:03
    —
rediffusion wrote:
А если таких AutoHotkey.exe много станет со временем
Тем более! Как можно называть интерпретатор по имени только одного скрипта из группы запущенных?
rediffusion wrote:
то как мне определить какой скрипт за какой программой стоит?
См. последнее предложение.
rediffusion wrote:
Или можно в один .exe вшивать много скриптов?
В один код можно запихнуть кучу всего. Для этого не нужна компиляция.

rediffusion wrote:
Пересмотрел такие варианты:
Между 2-й и 3-й строкой на всякий:
Code:
WinWaitClose, ahk_class TTOTAL_CMD
ExitApp

#89:  Author: rediffusion PostPosted: Thu Mar 14, 2019 19:31
    —
Flasher

Я не понял вот эти решетки # убирать или оставлять перед
Code:
Pragma AutorunFinalizeSection
Pragma AutorunBlockUnload
LoadLibrary Plugins\Autorun_Sysinfo.dll

У меня "TC" 64-bit. Возможно вот тут нужно добавить:
Code:
Sysinfo.dll64

Во всяком случии вот такая запись мне помогла (как только жмякаю на крестик в "TC" скрипт сразу исчезает):
Code:
WinWaitClose, ahk_class TTOTAL_CMD
ExitApp

#90:  Author: FlasherLocation: Москва PostPosted: Thu Mar 14, 2019 19:46
    —
rediffusion wrote:
Я не понял вот эти решетки # убирать или оставлять перед
А выяснить в справке религия не позволяет?
Общая информация\Syntax\Основы wrote:
Строка, начинающаяся с символа #, трактуется как комментарий и игнорируется.

Если после #Pragma AutorunFinalizeSection ничего нет, то её лучше оставить закомментированной. Но и она способствует исправлению текущей проблемы:
Code:
LoadLibrary Plugins\Autorun_Process.dll

# тут всяко разно

Pragma AutorunFinalizeSection
If ProcessExist /F '%COMMANDER_PATH%\Scripts\AutoHotKey\AutoHotkeyU%SYSINFO_OSARCH%.exe' Then
ProcessTerminate /F /TT /A '%COMMANDER_PATH%\Scripts\AutoHotKey\AutoHotkeyU%SYSINFO_OSARCH%.exe'
EndIf

rediffusion wrote:
У меня "TC" 64-bit. Возможно вот тут нужно добавить:
Нет. Опять же смотрим в help_ru.chm: Команды\LoadLibrary\Примечание.
rediffusion wrote:
Во всяком случии вот такая запись мне помогла
Иначе и быть не могло.

Last edited by Flasher on Fri Mar 15, 2019 12:26; edited 2 times in total

#91:  Author: rediffusion PostPosted: Thu Mar 14, 2019 20:38
    —
Flasher

Выше описанное перепробовал всё и по нескольку раз. Ничего не помогло!
Возможно у меня "TC" странный.

Самый рабочий вариант этот (легко и просто без танцев с бубном):
Code:
#SingleInstance force
#NoTrayIcon
WinWaitClose, ahk_class TTOTAL_CMD
ExitApp
#IfWinActive, ahk_class TTOTAL_CMD
MButton::FileRecycleEmpty


Огромное спасибо за помощь!

#92:  Author: FlasherLocation: Москва PostPosted: Thu Mar 14, 2019 20:49
    —
rediffusion
Неточности с путями и именами все были учтены?
Также можно было попробовать /TT /W:40 вместо /T.

Пож-та. По сабжу в разделе есть скрипты поинтересней.

#93:  Author: rediffusion PostPosted: Thu Mar 14, 2019 23:35
    —
Flasher wrote:
/TT /W:40

Попробовал результата нет. Возможно на другой сборке будет работать...
А есть какой нибудь другой вариант для запуска "AutoHotkey.exe" вместе с "Total Commander"? Мне только вариант с ярлыком приходит на ум, а ярлык бросить в автозагрузку с "Windows".

#94:  Author: FlasherLocation: Москва PostPosted: Thu Mar 14, 2019 23:38
    —
rediffusion
А смысл? Проблемы с запуском мы не обсуждали, только с завершением.
И, бросив ярлык в автозагрузку, никакого "вместе" быть уже не может.

#95:  Author: FlasherLocation: Москва PostPosted: Fri Mar 15, 2019 11:30
    —
rediffusion
Забыл здесь учёсть замену на свою переменную. Исправлено.

#96:  Author: rediffusion PostPosted: Fri Mar 15, 2019 15:43
    —
Flasher

Сегодня ещё покопался и нашёл лучший вариант:
Запуск/Завершение .exe вместе с "TC".
Code:
ShellExec /SW_HIDE /W /TT "%COMMANDER_PATH%\Scripts\AutoHotKey\AutoHotkey.exe"

Предложили ещё вот такой вариант:
Code:
#SingleInstance force
#NoTrayIcon
#IfWinActive ahk_class TTOTAL_CMD
MButton::
SendMessage, 0x433, 2127,,, ahk_class TTOTAL_CMD
SendMessage, 0x433, 3301,,, ahk_class TTOTAL_CMD
SendMessage, 0x433, 908,,, ahk_class TTOTAL_CMD
return

1. В [АП] открывается папка "Корзина". 2. Всплывает окно с предложением очистки.

#97:  Author: FlasherLocation: Москва PostPosted: Fri Mar 15, 2019 15:53
    —
rediffusion wrote:
Сегодня ещё покопался и нашёл лучший вариант:
Он не лучший. Нет учёта битности системы, /SW_HIDE тут вообще ни к чему. /W пытается закрывать окно, которого и так нет. Да и где, собственно, путь к скрипту?
По итогам я понял, что вы просто неверно прописали путь в моём варианте.

Последний вариант даже обсуждать нет смысла.

#98: Скрипты Autohotkey Author: zybrevLocation: Russia PostPosted: Thu Mar 04, 2021 21:15
    —
Назначение команд ТС на кнопки мыши.

Редактирование 904) cm_Edit MButton - средняя кнопка мыши
Просмотр 903) cm_List XButton1 - четвертая кнопка мыши, боковая
Быстрый просмотр 304) cm_SrcQuickview XButton2 - пятая кнопка мыши, боковая
Code:
#SingleInstance force
#NoTrayIcon
#IfWinActive ahk_class TTOTAL_CMD
MButton::
SendMessage, 0x433, 904,,, ahk_class TTOTAL_CMD
return
XButton1::
SendMessage, 0x433, 903,,, ahk_class TTOTAL_CMD
return
XButton2::
SendMessage, 0x433, 304,,, ahk_class TTOTAL_CMD
return



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group