1 (изменено: Shoomer, 2010-10-21 17:47:25)

Тема: AHK: Как получить время последнего доступа к файлу?

Всем привет! Файл .wav, время от времени проигрывается программой на компе. Нужно получить время, когда он последний раз проигрывался. (Или что заданная программа проигрывает его в данный момент. Проще говоря, любым способом нужно обнаружить, что в данный момент или несколько секунд назад файл использовался) Если я правильно понимаю, то где-то должны храниться данные об этом, но как их получить?

Пробовал просто через FileGetTime, где есть варианты получить Modification time, Creation time, Last access time.  При скачивании его на комп сформировалось Creation time, при распаковке обновляется Last access time. Но при проигрывании на плеере Last access не меняется.

+RButton::

Sleep 1000
FileGetTime, OutputVar, Music.wav, A  ; Retrieves the last access time.
MsgBox, 4,, Last access= %OutputVar%

Видимо, я не в ту степь?

2

Re: AHK: Как получить время последнего доступа к файлу?

Хм... Узнал, что можно как-то обнаруживать, что файл занят. Это будет даже проще.

3

Re: AHK: Как получить время последнего доступа к файлу?

Это зависит от того, держит ли проигрыватель файл открытым. Попробуйте во время проигрывания файла нажать F11. Код попытается открыть файл в монопольном режиме. Если файл уже открыт, то ему это не удастся.

File = C:\PROG\TEMP\text.txt

F11::
    GENERIC_READ = 0x80000000
    OPEN_EXISTING = 0x3
    INVALID_HANDLE_VALUE = -1

    IfNotExist, %File%
    {
        MsgBox, Файл не найден.
        Return
    }

    hFile := DllCall("CreateFile", "str", File, "uint", GENERIC_READ
                                 , "uint", 0, "uint", 0
                                 , "uint", OPEN_EXISTING, "uint", 0
                                 , "uint", 0)

    If (hFile = INVALID_HANDLE_VALUE)
        MsgBox, Файл занят.
    Else {
        DllCall("CloseHandle", "uint", hFile)
        MsgBox, Файл не занят.
    }
Return

4

Re: AHK: Как получить время последнего доступа к файлу?

Зациклил, убрал "MsgBox, Файл не занят.", попробовал на обычном плеере. Работает на ура!)) Попробовал с той программой (игра, с возможностью подсовывать ей свои wav) - не получается. Подскажите, что делать в этом случае?

5

Re: AHK: Как получить время последнего доступа к файлу?

Если честно, понятия не имею. А зачем это всё нужно вообще? Может, есть какой-то другой способ достижения цели.

6

Re: AHK: Как получить время последнего доступа к файлу?

Для автоматизации процесса pыбнoй лoвли) Когда идет пoклевкa, проигрывается определенный звук. Его-то я и ловлю. Вариант с PixelSearch работает, но хочется обойтись без него.

7

Re: AHK: Как получить время последнего доступа к файлу?

Попробую заменить короткий секундный звук 5-10 секундным.

8

Re: AHK: Как получить время последнего доступа к файлу?

Все равно не получается. Звук в игре проигрывается, но игра файл не держит открытым. Помогите!)