LonerD
|
Posted: Sun Mar 17, 2013 20:26 Post subject: |
|
|
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-α |
|