Что нового

[Файловая система] Мониторинг копирования с папки

ZanMax

Тестер
Сообщения
120
Репутация
5
Всем привет.
Есть задача мониторить папку c:\base\ и в случае если с папки что-то копируют - писать это в лог.
Такое возможно реализовать на AutoIT?
Спасибо огромное.
 
Автор
Z

ZanMax

Тестер
Сообщения
120
Репутация
5
я написал на C# мониторинг (изменения, создания,удаление, переименование )
но вот с купированием у меня беда.
Может как-то можно проверять есть ли эти файлы в буфере обмена.
Спасибо большое.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Если ты сможешь перехватывать вызовы API на копирование файлов и составлять отчет, то очень бы хотелось бы посмотреть на твой код :smile:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
ZanMax,
Попробуйте так, у меня работает (ХР 32).
Код:
#NoTrayIcon

Global $sClipGetOld, $sFolderCheck = @ScriptDir & '\minus'

HotKeySet('{Esc}', '_Exit')

AdlibRegister('_CheckCopyFromFolder', 500)
While 1
	Sleep(1000)
WEnd

Func _Exit()
	Exit
EndFunc   ;==>_Exit

Func _CheckCopyFromFolder()
	Local $s_ClipGet, $s_Text, $a_Text, $s_FileLog = @ScriptDir & '\' & @MDAY & '_' & @MON & '_' & @YEAR & '.txt'

	$s_ClipGet = ClipGet()
	If $sClipGetOld <> $s_ClipGet Then
		$sClipGetOld = $s_ClipGet
		If StringInStr($s_ClipGet, $sFolderCheck) Then
			$a_Text = StringSplit($s_ClipGet, @LF)
			For $i = 1 To $a_Text[0]
				$s_Text &= StringFormat('Time: %s:%s:%s\tCopy:\t%s\r\n', @HOUR, @MIN, @SEC, $a_Text[$i])
			Next
			;ClipPut('');если раскомментировать, то не даст копировать
			FileWrite($s_FileLog, $s_Text)
		EndIf
	EndIf
EndFunc   ;==>_CheckCopyFromFolder
 
Автор
Z

ZanMax

Тестер
Сообщения
120
Репутация
5
Спасибо огромное! То что нужно. :IL_AutoIt_1:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
ZanMax,
Если добавить в функцию (поменял код выше)
Код:
ClipPut('')
то вообще не даст копировать файлы (папки).

Все это работает только при копировании через контекстное меню.
 
Верх