Скрипты Autohotkey

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
Igor_A.
Сообщения: 83
Зарегистрирован: Чт мар 23, 2006 13:09

Сообщение Igor_A. »

2 Вахмурка:

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

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

Кроме того, я прекрасно знаю, что я лишаюсь автоматизировав F5 и F6, но ведь делаю я это сознательно, и отключаемым в ЛЮБОЙ момент скриптом. И автор Тотала мог бы это сделать опционально. И даже не через меню настроек, а только ручной правкой wincmd.ini для пущей безопасности. Ламер бы править не смог и не стал бы инишник для этого, а опытный, мог бы при желании.
Аватара пользователя
KarS
Сообщения: 102
Зарегистрирован: Пт апр 21, 2006 16:43
Откуда: г. Абакан

Сообщение KarS »

Скрипт для открытия в ТС новой вкладки, в которой откроется аплет "Мой компьютер". Автор - 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
kop_anton
Сообщения: 7
Зарегистрирован: Ср апр 25, 2007 01:35
Откуда: Uzbekiatan, Tashkent

Сообщение kop_anton »

Здравствуйте!
Стал недавно пользоваться AHK и вот набросал:

Код: Выделить всё

#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
Вроде работает!

Возникла проблема со скроллом, к примеру код:

Код: Выделить всё

~WheelDown:: 
IfWinNotActive, ahk_class TTOTAL_CMD
{
	Send, {WheelDown}
	return 
}
Send, {RAlt Down}{Down} 
   return
глючит, не понимаю в чем причина :cry:
Работает через раз, то есть 1 раз действительно команда выполняется.
а при нажатии во 2 раз глючит. Выяснил только то, что кнопка Alt висит нажатой в памяти, даже после выхода из скрипта.
Помогите, если знаете в чем дело.
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

kop_anton
Я бы забросил на оф. форум.

Там majkinetor, SansFritz - они в AHK гуру.
DrShark
Сообщения: 911
Зарегистрирован: Сб окт 21, 2006 20:27
Откуда: Kyiv, Ukraine
Контактная информация:

Сообщение DrShark »

Не проблема.
Send, {RAlt Down}{Down}{RAlt Up}
Или чё-то типа этого (проверять нет времени, щас у меня дисконнект будет).
kop_anton
Сообщения: 7
Зарегистрирован: Ср апр 25, 2007 01:35
Откуда: Uzbekiatan, Tashkent

Сообщение kop_anton »

Спастбо мужики, разобрался!
Теперь работает

Код: Выделить всё

*$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 прочитал что *
запускает горячую клавишу, даже если удерживаются дополнительные модификаторы.
Оказалось дело все в этих модификаторах...
А вообще этот скрипт подошел к Corel, поэтому он и прописан
Belkin
Сообщения: 26
Зарегистрирован: Вт фев 22, 2005 16:48

Сообщение Belkin »

kop_anton
Мне не совсем понятно, как это связано с Тоталом, но вот так будет проще:

Код: Выделить всё

#IfWinActive, ahk_class CorelDRAW 13.0
WheelDown:: SendInput, !{Down}
WheelUp:: SendInput, !{Up}
#IfWinActive
А вообще, вопросы по AutoHotkey можно задать здесь.
wOxxOm
Сообщения: 30
Зарегистрирован: Вс фев 12, 2006 22:10

Сообщение wOxxOm »

кстати скроллер к Draw и Paint: http://recentfiles.sbn.bz/misc/AutoHotKey.ini - там через сообщения WM_SCROLL.
Есть, если кому надо скроллер в окнах VBA Editor
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

На вс. случай сообщаю:

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

Если вы написали что-то чего там нет, укажите мне, я добавлю. Или сами добавьте (нужна регистрация на том Вики!).
kop_anton
Сообщения: 7
Зарегистрирован: Ср апр 25, 2007 01:35
Откуда: Uzbekiatan, Tashkent

Сообщение kop_anton »

Belkin

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

З.Ы. Сейчас зарегистрируюсь, и буду там их мучить :D
UserTC
Сообщения: 22
Зарегистрирован: Ср янв 02, 2008 12:54

Сообщение UserTC »

подскажите как записсать команду WM_USER+331 в PostMessage?
Аватара пользователя
D1P
Сообщения: 2987
Зарегистрирован: Пн дек 20, 2004 18:30
Откуда: Тбилиси
Контактная информация:

Сообщение D1P »

WM_USER = $0400 = 1024
WM_USER + 331 = 1355
ОтецСергий
Сообщения: 1
Зарегистрирован: Ср июл 23, 2008 23:40

Навернем "F7" и вспомним NC по "F9"

Сообщение ОтецСергий »

Создать папку с датой в имени по Shift+F7

Код: Выделить всё

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).


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

Код: Выделить всё

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 должен находиться в папке для которой создается меню.
kadvlad
Сообщения: 81
Зарегистрирован: Вс авг 26, 2007 14:45

Сообщение kadvlad »

Вот ещё пара полезных ahk-скриптов для Тотала (с оф.форума):

1) выделить/снять выделение в обеих панелях нажатием CTRL-ALT-(Num+)(Num-):

Код: Выделить всё

#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:

Код: Выделить всё

SetTimer subTimer, 100 
subTimer: 
If WinActive( "ahk_class switchwin2" ) 
{ 
SendInput, {Enter} 
} 
Return
Аватара пользователя
kefirux
Сообщения: 20
Зарегистрирован: Вт дек 09, 2008 22:26
Контактная информация:

Сообщение kefirux »

сразу после установки АутоХотКея вылетел Еррор в файле AutoHotkey.ahk:

#z::Run www.autohotkey.com

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