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 

Скрипты Autohotkey
Goto page Previous  1, 2, 3, 4, 5, 6, 7  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Sun Mar 17, 2013 16:42    Post subject: Reply with quote

Каким образом послать Тоталу пользовательскую команду через Unicode-версию Autohotkey_L ? (в том числе через 64-битную версию если есть различие).
Для ANSI есть рабочий вариант, но адаптировать под Unicode самостоятельно не удаётся.
_________________
Win11 x64 Eng | TC DreamLair eternal pre-α
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun Mar 17, 2013 19:10    Post subject: Reply with quote

Все рабочие варианты для любой версии Autohotkey_L приведены в этой ветке. Почему не работает именно указанный вариант, понять без всех выполненных условий нельзя. Видимо, там какая-то проверка не срабатывает. Нужна-то всего одна строчка.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Sun Mar 17, 2013 20:26    Post subject: Reply with quote

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

_________________
Win11 x64 Eng | TC DreamLair eternal pre-α
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Sat May 25, 2013 14:10    Post subject: Reply with quote

Не могу понять.
Записываю пользовательскую команду (или же кнопку):
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

В чём ошибка в первой записи, как правильно передать скрипт в поле параметра ?
_________________
Win11 x64 Eng | TC DreamLair eternal pre-α
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10235
Location: Россия, Саратов

Post (Separately) Posted: Sat May 25, 2013 14:26    Post subject: Reply with quote

LonerD
А зачем, собственно, разносить запись на два поля, если всё нормально работает в одном?
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Sat May 25, 2013 16:06    Post subject: Reply with quote

Avada wrote:
А зачем, собственно, разносить запись на два поля, если всё нормально работает в одном?

Да, я тоже знаю золотое правило админа "Если что-то работает - лучше не трогай".
Вопрос в другом. Где ошибка в первом варианте записи? Это особенность AHK или Тотала в целом? Ведь и в одном и во втором случае путь к скрипту выступает в качестве параметра, но в одну строку работает, а в две - нет.
_________________
Win11 x64 Eng | TC DreamLair eternal pre-α
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat May 25, 2013 16:57    Post subject: Reply with quote

LonerD
Ты явно не в ту тему залез. На днях обсуждали, а ещё здесь, и здесь, и много ещё где. Ты бы поискать не поленился.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Sat May 25, 2013 19:42    Post subject: Reply with quote

Flasher
Спасибо за ссылочки.
"Тотал не раскрывает переменные окружения, указанные в поле параметров кнопки."
Тогда всё в тему. Значит, проблема в том, что AutoHotkey.exe не умеет раскрывать переменные окружения, потому в данном частном случае единственный правильный выход - указывать программу и параметр в одной строке.
_________________
Win11 x64 Eng | TC DreamLair eternal pre-α
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat May 25, 2013 20:09    Post subject: Reply with quote

LonerD wrote:
проблема в том, что AutoHotkey.exe не умеет раскрывать переменные окружения
Он умеет это делать в теле скрипта, а не в пути к нему.

LonerD wrote:
потому в данном частном случае единственный правильный выход - указывать программу и параметр в одной строке.
Ну, если ты смотрел примеры по ссылкам внимательно, то не единственный.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Sun Jun 09, 2013 17:47    Post subject: Reply with quote

Каким образом "заморозить" и "разморозить окно" (запретить и разрешить прорисовку), а затем перерисовать содержимое окна (панелей) ? Всё в целом окно Тотала или хотя бы только панели.
То есть скрыть активность при выполнении скриптов (выделение, переименование, навигацию и т.д...)
Пробовал вот так:
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)

_________________
Win11 x64 Eng | TC DreamLair eternal pre-α
Back to top
View user's profile Send private message
dmitriy111



Joined: 01 Apr 2013
Posts: 25

Post (Separately) Posted: Fri Jul 05, 2013 17:48    Post subject: Reply with quote

Есть вот скрипт который ловит двойные быстрые нажатия указанных клавиш и выполняет соответствующую команду, но есть проблема - клавиша, по которой происходит срабатывание перестает работать в сочетаниях с другими клавишами (например Ctrl+S), подскажите пожалуйста как это можно исправить?

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

LCtrl:: DoubleKey("^V", 200)
Back to top
View user's profile Send private message
rediffusion



Joined: 25 Feb 2019
Posts: 34

Post (Separately) Posted: Sun Mar 10, 2019 20:16    Post subject: Reply with quote

Кто подскажет как - "Назначить 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
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10235
Location: Россия, Саратов

Post (Separately) Posted: Sun Mar 10, 2019 20:22    Post subject: Reply with quote

rediffusion
Сообщения с многоточиями в начале фраз дальше будут удаляться. Раз нормальные замечание игнорируются, придётся поступать так. А за злостные нарушения правил форума у нас банят.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Mar 11, 2019 09:00    Post subject: Reply with quote

rediffusion
В памятке чётко написано, что делать в случае "не работает".
И не autorum.cfg, а autorun.cfg.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10235
Location: Россия, Саратов

Post (Separately) Posted: Mon Mar 11, 2019 09:20    Post subject: Reply with quote

rediffusion
Во-первых, не надо отвечать модератору в теме, для этого есть ЛС.
Во-вторых, содержимое строки из autorun.cfg и подобные её вещи впредь прошу оформлять либо кодом, либо цитатой. Под спойлер обычно упрятывается либо объёмная, либо посторонняя информация.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3, 4, 5, 6, 7  Next
Page 5 of 7

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group