#AutoIt3Wrapper_Outfile=P-2k10.exe #AutoIt3Wrapper_Icon=0.ico #AutoIt3Wrapper_Compression=n #AutoIt3Wrapper_UseUpx=n ; #AutoIt3Wrapper_UseX64=y #AutoIt3Wrapper_UseAnsi=y #AutoIt3Wrapper_Res_Comment= #AutoIt3Wrapper_Res_Description=P-2k10.exe #AutoIt3Wrapper_Res_Fileversion=0.2.0.0 #AutoIt3Wrapper_Res_FileVersion_AutoIncrement=n #AutoIt3Wrapper_Res_LegalCopyright=AZJIO #AutoIt3Wrapper_Res_Language=1049 #AutoIt3Wrapper_Run_Au3check=n #AutoIt3Wrapper_Res_Icon_Add=1.ico #AutoIt3Wrapper_Res_Icon_Add=2.ico ; #AutoIt3Wrapper_Res_Icon_Add=3.ico ; #AutoIt3Wrapper_Res_Icon_Add=4.ico ; #AutoIt3Wrapper_Res_Icon_Add=5.ico #AutoIt3Wrapper_Run_After=%autoitdir%\SciTE\upx\upx.exe -7 --compress-icons=0 "%out%" ShellExecute(FileGetShortName(@ScriptDir&'\P2start.cmd'), 'Update', @ScriptDir, '', @SW_HIDE) Opt("TrayIconHide", 1) $Ini = @ScriptDir & '\P-2k10.ini' ; If $CmdLine[0]>0 Then ; $IniType=IniRead($Ini, 'exclude', 'Type', 'CDROM;FIXED') ; $IniLabel=IniRead($Ini, 'exclude', 'Label', '') ; $IniPath=IniRead($Ini, 'exclude', 'Path', '') ; $IniDisk=IniRead($Ini, 'exclude', 'Disk', '') ; EndIf ; http://www.autoitscript.com/forum/topic/79460-usbmon/page__view__findpost__p__572867 ;============# Запрет на повторный запуск #==================================== $hMutex = DllCall("kernel32.dll", "hwnd", "OpenMutex", "int", 0x1F0001, "int", False, "str", "USB459345") If $hMutex[0] Then $hWnd = WinGetHandle("USB459345") WinSetState($hWnd, "", @SW_RESTORE) DllCall("user32.dll", "int", "SetForegroundWindow", "hwnd", $hWnd) Exit EndIf $hMutex = DllCall("kernel32.dll", "hwnd", "CreateMutex", "int", 0, "int", False, "str", "USB459345") ;============================================================================ Opt("TrayIconHide", 0) Opt("TrayMenuMode", 7) Opt("TrayOnEventMode", 1) Global $TpOff = 0, $curico=0, $Dr=0, $CurDrives[1] Global Const $DBT_DEVICEARRIVAL = 0x8000 ; Найдено новое устройство Global Const $DBT_DEVICEREMOVECOMPLETE = 0x8004 ; отключенное устройство Global Const $DBT_DEVTYP_VOLUME = 0x00000002 ; Логический диск If @compiled Then $AutoItExe=@AutoItExe Else $AutoItExe=@ScriptDir&'\P-2k10.dll' EndIf ; $autorun=IniRead($Ini, 'Set', 'autorun', '') ; $arg=IniRead($Ini, 'Set', 'arg', '') ; $OutProcessClose=IniRead($Ini, 'Set', 'OutProcessClose', '') TraySetToolTip('Программы 2k10') $update = TrayCreateItem('Обновить') TrayItemSetOnEvent(-1, "_update") $nExit = TrayCreateItem('Выход') TrayItemSetOnEvent(-1, "_Quit") TraySetIcon($AutoItExe, $curico) TraySetState() $Gui = GUICreate("USB1", 370, 140) GUISetState(@SW_HIDE, $Gui) GUISetState(@SW_DISABLE, $Gui) GUIRegisterMsg(0x0219, "WM_DEVICECHANGE") While 1 Sleep(1000) WEnd ; http://www.autoitscript.com/forum/topic/79460-usbmon/page__view__findpost__p__572867 Func WM_DEVICECHANGE($hWnd, $Msg, $wParam, $lParam) If ($wParam = $DBT_DEVICEARRIVAL) Or ($wParam = $DBT_DEVICEREMOVECOMPLETE) Then Local $DEV_BROADCAST_VOLUME = DllStructCreate("int dbcvsize;int dbcvdevicetype;int dbcvreserved;int dbcvunitmask;" & _ "ushort dbcvflags", $lParam) Local $iDriveType = DllStructGetData($DEV_BROADCAST_VOLUME, "dbcvdevicetype") Else Return 'GUI_RUNDEFMSG' EndIf If $iDriveType <> $DBT_DEVTYP_VOLUME Then Return 'GUI_RUNDEFMSG' Local $iMask = DllStructGetData($DEV_BROADCAST_VOLUME, "dbcvunitmask") $iMask = Log($iMask) / Log(2) Local $iDrive = Chr(65 + $iMask) & ":" Switch $wParam Case $DBT_DEVICEARRIVAL ; обнаружение флешки TraySetIcon($AutoItExe, 201) ShellExecute(FileGetShortName(@ScriptDir&'\P2start.cmd'), 'Start', @ScriptDir, '', @SW_HIDE) Case $DBT_DEVICEREMOVECOMPLETE ; отключение флешки TraySetIcon($AutoItExe, 202) ShellExecute(FileGetShortName(@ScriptDir&'\P2start.cmd'), 'Update', @ScriptDir, '', @SW_HIDE) EndSwitch GUIRegisterMsg(0x0113, "WM_TIMER") DllCall("User32.dll", "int", "SetTimer", "hwnd", $Gui, "int", 50, "int", 2000, "int", 0) Return 'GUI_RUNDEFMSG' EndFunc Func WM_TIMER() TraySetIcon($AutoItExe, $curico) GUIRegisterMsg(0x0113, '') DllCall("user32.dll", "int", "KillTimer", "hwnd", $Gui, "int*", 50) EndFunc Func _Quit() TraySetState(2) ShellExecute(FileGetShortName(@ScriptDir&'\P2start.cmd'), 'Exit', @ScriptDir, '', @SW_HIDE) Exit EndFunc Func _update() TraySetState(2) ShellExecute(FileGetShortName(@ScriptDir&'\P2start.cmd'), 'Update', @ScriptDir, '', @SW_HIDE) EndFunc