1 (изменено: Dworkin, 2017-11-09 22:57:30)

Тема: AHK: получить переменную из потока autohotkey.dll

Добрый вечер. Решил немного изучить многопоточность в ahk с помощью autohotkey.dll.

Сам autohotkey.dll скачал отсюда:
https://raw.githubusercontent.com/HotKe … Hotkey.dll
Библиотеки отсюда:
https://github.com/HotKeyIt/ahkdll-v2-r … ported.ahk
https://github.com/zhamlin/Macro/blob/m … Thread.ahk

НО их я закинул в папку lib где установлен autohotkey иначе через #include почему-то не работает.

Нормально запускает скрипт файл в другом потоке:

dllpath:= "AutoHotkey.dll"
DllCall("LoadLibrary","Str",dllpath) ; Load the AutoHotkey module.
DllCall(dllpath "\ahkdll","Str",A_ScriptDir "\httptest.ahk","Str","","CDecl") ; start a new thread from file.
While DllCall(dllpath "\ahkReady")
  Sleep 100 ; wait for the thread to exit

Можно ли и как вытащить переменную из запущенного скрипта в другом потоке?

Нормально запускает код:

dllpath:= "AutoHotkey.dll"
codefromvar =
(
var := 5
MsgBox, Hello World!
)

DllCall("LoadLibrary","Str",dllpath) ; Load the AutoHotkey module.
DllCall(dllpath "\ahktextdll","Str",codefromvar,"Str","","CDecl") ; start a new thread from file.
While DllCall(dllpath "\ahkReady")
  Sleep 100 ; wait for the thread to exit

Скажите пожалуйста как вытащить переменную var из запущеного потока?

Вот справка:
https://hotkeyit.github.io/v2/docs/comm … getvar.htm

2

Re: AHK: получить переменную из потока autohotkey.dll

Видел для _L такую ф-ию с доступом к переменным и функциям дочернего процесса. Не поток, но все же.

3 (изменено: YMP, 2017-11-10 08:32:35)

Re: AHK: получить переменную из потока autohotkey.dll

Dworkin пишет:

Скажите пожалуйста как вытащить переменную var из запущеного потока?

Вот справка:
https://hotkeyit.github.io/v2/docs/comm … getvar.htm

А в чём подвох? Код из справки у вас не работает?


dllpath:= "AutoHotkey.dll"
codefromvar =
(
var := 5
MsgBox, Hello World!
)

DllCall("LoadLibrary","Str",dllpath) ; Load the AutoHotkey module.
DllCall(dllpath "\ahktextdll","Str",codefromvar,"Str","","CDecl") ; start a new thread from file.
OutputVar := DllCall(dllpath "\ahkgetvar", "Str", "Var", "UInt", 0 ,"CDecl Str")
MsgBox, %OutputVar%
While DllCall(dllpath "\ahkReady")
  Sleep 100 ; wait for the thread to exit

4

Re: AHK: получить переменную из потока autohotkey.dll

Спасибо.
Код из справки почему-то выдавал какие-то цифры.