amel27,
Спасибо, но функция всегда возвращает 0

, у меня на компе установлен Flash Player.
Объекта SWCtl.SWCtl у меня нет, возможно это не стандартный объект...
Но вот piccaso вроде
нашёл решение, у меня, где есть флэш (для IExplorer), возвращает 9, на компе без флэша пока нет возможности проверить:
Код:

Global $oErr = ObjEvent("AutoIt.Error","_ComError")
ConsoleWrite(_FlashMajorVersion() & @CRLF)
Func _FlashMajorVersion()
Local $oSwf,$sVersion
$oSwf = ObjCreate("ShockwaveFlash.ShockwaveFlash")
if @error Then Return 0 ; No flash at all
$oSwf.AllowScriptAccess = "always"
$sVersion = $oSwf.GetVariable("$version")
if @error Then
$oSwf = ObjCreate("ShockwaveFlash.ShockwaveFlash.3")
if @error Then
$oSwf = ObjCreate("ShockwaveFlash.ShockwaveFlash.2")
if @error then return 0
Return 2
EndIf
Return 3
EndIf
$sVersion = StringTrimLeft($sVersion,3)
$sVersion = StringLeft($sVersion,StringInStr($sVersion,",")-1)
Return Number($sVersion)
EndFunc
Func _ComError()
; Just set @error, the script will handle it...
Local $iErr = $oErr.number
if $iErr = 0 Then $iErr = -1
SetError($iErr)
EndFunc
Цитата:
на базе скрипта-кейлоггера получилось вот что
|

Получилось то что надо!!! я правда поменял концепцию примера, во-первых потому то ещё не ставил последнюю версию, а во-вторых потому что мне нужно иметь возможность включать/выключать клавиатуру по запросу (не при выходе из скрипта)...
Код:

#include <DllCallBack.au3>
Global $hWinHook
$CallBackProc = TogglePlugKeyBoard()
MsgBox(4096, "", "Клавиатура заблокирована, нажмите OK для разблокирования.")
TogglePlugKeyBoard($CallBackProc)
MsgBox(4096, "", "Клавиатура разблокирована!")
Exit
Func TogglePlugKeyBoard($hCallProc=0)
If IsArray($hWinHook) Then
DllCall("user32.dll", "int", "UnhookWindowsHookEx", "hwnd", $hWinHook[0])
_DllCallBack_Free($hCallProc)
Return 0
EndIf
Local Const $WH_KEYBOARD_LL = 13
Local $hKeyProc = _DllCallBack("_KeyProc", "int;ptr;ptr")
Local $hMod = DllCall("kernel32.dll", "hwnd", "GetModuleHandle", "ptr", 0)
$hWinHook = DllCall("user32.dll", "hwnd", "SetWindowsHookEx", _
"int", $WH_KEYBOARD_LL, _
"ptr", $hKeyProc, _
"hwnd", $hMod[0], _
"dword", 0)
Return $hKeyProc
EndFunc
Func _KeyProc($nCode, $wParam, $lParam)
If $nCode < 0 Then
Local $iRet = DllCall("user32.dll", "long", "CallNextHookEx", "hwnd", $hWinHook[0], _
"int", $nCode, _
"ptr", $wParam, _
"ptr", $lParam)
Return $iRet[0]
EndIf
Return 1
EndFunc
Но это мелочи, главное что оно блокирует все(?) клавишы, на любой клавиатуре
P.S
Кстати, функция OnAutoItExit вызывается по умолчанию, её не обязательно вызывать (
OnAutoItExit() ).