1 (изменено: stealzy, 2014-12-23 22:41:11)

Тема: AHK: Логирование хода выполнения

По умолчанию, в контекстом меню иконки скрипта в трее есть пункт "Open", который открывает листинг последних выполненных строк.
Из недостатков - ограничение на длину и отсутсвие в скомпилированной версии.

Еще есть SciTE4AutoHotkey, где можно поставить breakpoint и вывести список переменных.

А есть готовое решение, чтобы сохранить весь ход исполнения в файл?
Т.е. список всех пройденных строк с их номерами.


Пока ничего умнее повесить на таймер проверку изменения A_LineNumber не приходит. Но если скрипт выполняется быстро, такое решение не подходит.
Можно между всеми строками вставить запись:


LineNum:=(A_LineNumber - 1)
FileReadLine, RunnigLine, %A_ScriptFullPath%, LineNum
FileAppend, %A_LineNumber%: %RunnigLine%, log.txt

и сделать скрипт, который сам это сделает и отправит на выполнение.
Хм. Наверно так.
Сам спросил - сам ответил. Осталось написать .

2

Re: AHK: Логирование хода выполнения

листинг последних выполненных строк
...
отсутсвие в скомпилированной версии

ListLines

Можно между всеми строками вставить

Если после каждой строки дописывать в переменную через разделитель A_LineNumber, а потом всё это скинуть в файл... Вроде надёжно получится.

3

Re: AHK: Логирование хода выполнения

Вместо того, чтоб вставлять указанные в первом посте строки, лучше сохранить их в отдельный файл <имя_файла>, и воспользоваться #IncludeAgain <имя_файла>.

4

Re: AHK: Логирование хода выполнения

По-моему так удобнее:

logFile := "log.txt"
Send, a
Logging(A_LineNumber - 1, logFile)
Send,b
Logging(A_LineNumber - 1, logFile)
Send,c
Logging(A_LineNumber - 1, logFile)
return

Logging(LineNum, logFile)
{
   FileReadLine, RunnigLine, %A_ScriptFullPath%, LineNum
   FileAppend, %LineNum%: %RunnigLine%`n, %logFile%
   return
}