Скрипт AutoHotkey не запускается при запуске Skyrim

Я хочу использовать простой скрипт для резервного копирования существующего файла быстрого сохранения, прежде чем он будет перезаписан игрой. По сути, я хочу, чтобы каждый раз, когда я нажимал F5, создавал новый файл сохранения:

F5::
OldQuickSave := "c:\Users\Me\Documents\My Games\Skyrim\Saves\quicksave.ess"
FileGetTime, qstime, %OldQuickSave%
BackupFileName := "c:\Users\Me\Documents\My Games\Skyrim\Saves\OldQuicksave" . qstime . ".ess"
FileCopy, %OldQuickSave%, %BackupFileName%
SendPlay {F5}
return

Вне игры работает, но пока игра работает, команда не доходит до AutoHotkey. Игра сохраняет как надо, но скрипт не запускается. Как будто я ни разу не нажал на клавишу. Я предполагаю, что Skyrim использует DirectInput для чтения с клавиатуры, он принимает событие и не отправляет его дальше. Есть ли обходной путь? Или любое другое решение для создания нового файла сохранения для каждого быстрого сохранения?


person Ciri    schedule 26.03.2013    source источник
comment
Вы пробовали GetKeyState?   -  person    schedule 27.03.2013
comment
@Armin Отличный совет! В конечном итоге я использовал не GetKeyState, а комбинацию KeyWait, Sleep и GoTo в конце. Он делает именно то, что я хотел, спасибо!   -  person Ciri    schedule 27.03.2013


Ответы (1)


Я нашел обходной путь, используя следующий сценарий:

Label:
KeyWait, F5, D
OldQuickSave := "c:\Users\Me\Documents\My Games\Skyrim\Saves\quicksave.ess"
FileGetTime, qstime, %OldQuickSave%
BackupFileName := "c:\Users\Me\Documents\My Games\Skyrim\Saves\OldQuicksave" . qstime . ".ess"
FileCopy, %OldQuickSave%, %BackupFileName%
Sleep, 5000
Goto, Label

Сон предназначен для предотвращения многократного выполнения в случае, если клавиша была нажата в течение более длительного периода времени. Мне все еще любопытно, что пошло не так в первый раз.

person Ciri    schedule 26.03.2013