Скриптът 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

Sleep е там, за да предотврати многократни изпълнения в случай, че клавишът е бил натиснат за по-дълъг период от време. Все още ми е любопитно какво се обърка първия път.

person Ciri    schedule 26.03.2013