Что нового

Реакция на использование конкретного файла

Сообщения
67
Репутация
-1
Здравствуйте.
Хочу задать общий вопрос по autoit.

Вопрос касается того, можно ли скиптом - среагировать на то используется ли некий файл или нет.
Использоваться этот файл может каким-то приложением, но каким именно - неважно.
Важно - среагировать на тот момент если файл стал использоваться (речь идет не о названии процесса или заголовка).

Может ли автоит, вися в трее - по адресу размещения самого файла установить - среагировать Msgbox-ом если данный файл стал использоваться ?
 

xXx

╚{■_■}╗
Меценат
Сообщения
248
Репутация
95
В свое время забросил один свой проект потому, что не нашел способа определить использует ли нужный мне Текстовый документ какой-либо другой программой.
А у вас какой тип файла?
 
Последнее редактирование:
Автор
D
Сообщения
67
Репутация
-1
Мой вопрос касается txt файла.
(и еще mp3 и wav файлы)

Вот тут привели такую ссылку:

Но как эту UDF использовать - непонятно (Там все на английском).
В примере идут какие-то переименования, удаления, интерфейс.
А мне нужно только отследить используется один конкретный файл или не используется.
 

xXx

╚{■_■}╗
Меценат
Сообщения
248
Репутация
95
Мой вопрос касается txt файла.
(и еще mp3 и wav файлы)
Что касается .mp3 и .wav тут все относительно просто:
Код:
#include <WinAPIFiles.au3>

$sFilePath = FileOpenDialog('Диалог открытия файла', @ScriptDir, 'Тип файла (*.mp3;*.wav;*.txt)', 1)
If @error Then Exit MsgBox(4096, '', 'Не выбрано ни одного файла')

While Sleep(200)
    $hFile = _WinAPI_CreateFile($sFilePath, 2)
    If Not $hFile Then
        MsgBox(262144, Default, _WinAPI_GetLastErrorMessage())
        Sleep(600)
    Else
        DllCall('kernel32.dll', 'bool', 'CloseHandle', 'handle', $hFile) ; _WinAPI_CloseHandle()
    EndIf
WEnd
... то есть скрипт пытается открыть нужный нам файл, и как только это у него не получается - это означает что файл уже открыт в другом приложении.
С .txt все немного сложнее - программы пользующие такие файлы не держат его дескриптор постоянно открытым, т.е. обращаются к этим файлам кратковременно, только для того чтобы произвести какие-то действия. Нет, открытие .txt конечно можно засечь подобным способом, для этого замените "Sleep(200)" на "1". Но выполнение такого скрипта загрузит ЦП по полной.
 
Последнее редактирование:
Автор
D
Сообщения
67
Репутация
-1
открытие .txt конечно можно засечь подобным способом, для этого замените "Sleep(200)" на "1". Но выполнение такого скрипта загрузит ЦП по полной.

Я заменил "Sleep(200)" на "1"
Но открытие txt все равно не отлавливается.
 
Верх