LonerD
|
Posted: Wed Apr 22, 2015 16:37 Post subject: |
|
|
Flasher wrote: | Там уже вроде как что-то отписали, но больше невнятицы про errorlevel. |
Вроде как низзя без перехватчика OnMessage... а как его прервать после получения сообщения - вопрос.
По нажатию хоткея выполняется Send_WM_COPYDATA - формируется запрос Тоталу с заданным параметром.
Далее этот запрос обрабатывается, получается какая-то фигня - строка (иероглиф) CopyDataStruct и этот запрос отправляется Тоталу.
Тотал даёт некий ответ, и висящий в трее AHK отслеживает появление ответа через OnMessage, обрабатывает в Receive_WM_COPYDATA и высвечивает результат...
Как всё это упростить - непонятно.
Добавлено спустя 49 минут:
Ага. Индусский код начинает вырисовываться.
Убираем #Persistent чтобы скрипт не висел постоянно в памяти, убираем горячие клавиши.
Убираем MsgBox, %retVal% и в начале функции Receive_WM_COPYDATA пишем global retVal (назначаем переменную глобальной, то есть результат отправляется в глобальную переменную, которая будет доступна вне скрипта).
Тогда тело скрипта будет выглядет так
Code: | OnMessage(0x4a, "Receive_WM_COPYDATA")
Send_WM_COPYDATA(cmd:="A")
; в переменной retVal - желаемое значение, делаем что хотим с этим значением, и в конце концов завершаем скрипт обязательно через ExitApp
ExitApp |
Можно ли ещё проще?
И зачем совет "must have a wait loop arround onMessage in order to receive data from TC"? Ведь если запустить OnMessage внутри цикла, он продолжает висеть в памяти даже после прерывания цикла...
Как прервать OnMessage? Можно ли и нужно ли это делать? _________________ Windows 11 | TC DreamLair eternal pre-α |
|