Вот была тема. http://autoit-script.ru/index.php/topic,206.msg1636.html#msg1636. Но в "моём" скрипте не обязательно отсоединение устройства. Идея состоит в том, чтобы ограничивать доступ до тех пор пока не будет вставлен носитель с ключом(ini-файл). Все работает. Не могу сделать так, чтоб программа работала в фоне, и при извлечении usb(например)устройства возвращалась в своё исходное состояние(сейчас вставляю флешку БЕЗ ключа - включается блок и сплэш на весь экран, потом "чужая" флэшка вытаскивается, а сплэш с блоком остаются включенными - в этом и есть проблема! помогите пожалуйста.)
Код:
#include <Constants.au3>
#include <Misc.au3>
#include <BlockInputEx.au3>
#include <Array.au3>
#include <File.au3>
HotKeySet("+!^{END}", "_Block")
HotKeySet("+!^{HOME}", "_UnBlock")
HotKeySet("{ESC}", "_Quit")
Global $disk
_Loop1()
Func _Loop1()
dim $i,$kkk,$kkk2,$izvl=0,$i2,$i3
$var_before = DriveGetDrive("all")
While 1
$var_after = DriveGetDrive("all")
For $i = 1 To $var_after[0]
$kkk=0
For $i2 = 1 To $var_before[0]
If $var_after[$i]=$var_before[$i2] Then
$kkk=1
$izvl1 = IniRead($var_after[$i]&"\PCLock.ini","2","key",0)
If $izvl1=5 then $disk=$var_after[$i]
EndIf
Next
If $kkk=0 Then
$izvl = IniRead($var_after[$i]&"\PCLock.ini","2","key",0)
If $izvl <> 5 then
SplashTextOn("Опасностянама!", "Компьютер заблокирован! Найден незарегистрированный носитель информации. Вставьте носитель с ключом!", @DesktopWidth, @DesktopHeight, -1, -1, 0, "",50,600)
_Block()
Beep(1500)
Sleep (2000)
While 2
$kkk = DriveGetFileSystem ($var_after[$i])
If $kkk <> $kkk2 Then
_SplashOff ()
_UnBlock()
ExitLoop
EndIf
Wend
EndIf
EndIf
Next
_SplashOff ()
_UnBlock()
WEnd
EndFunc
Func _SplashOff()
SplashOff()
EndFunc
Func _Block()
_BlockInputEx(1, "{Ctrl}|{Alt}|{Shift}|{HOME}|{INSERT}|{ESC}")
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableTaskMgr", "REG_DWORD", "1")
EndFunc
Func _UnBlock()
_BlockInputEx(0)
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableTaskMgr", "REG_DWORD", "0")
_SplashOff()
EndFunc
Func _Quit()
Exit
EndFunc