【问题标题】:Run when USB is mounted [duplicate]挂载USB时运行[重复]
【发布时间】:2016-02-07 11:29:15
【问题描述】:

Microsoft 禁用了自动运行。但是要运行扫描和备份文件(在file.cmd 中定义),我发现了这个 AutoIt 脚本:

$DBT_DEVICEARRIVAL = "0x00008000"
$WM_DEVICECHANGE = 0x0219
GUICreate("")
GUIRegisterMsg($WM_DEVICECHANGE , "MyFunc")

Func MyFunc($hWndGUI, $MsgID, $WParam, $LParam)
   If $WParam == $DBT_DEVICEARRIVAL Then
      MsgBox(4096, "Info", "My Drive has been Inserted, Backup My Files!")
   EndIf
EndFunc

While 1
   $GuiMsg = GUIGetMsg()
WEnd

每当插入脚本所在的 USB 驱动器时,它都会显示一个消息框。我编译并将其复制到我的 USB 驱动器。我一插上电源,MsgBox() 就出现了。

我换了:

MsgBox(4096, "Info", "My Drive has been Inserted, Backup My Files!")

与:

Run ("F:\path\to\my\file.cmd").

但其他计算机为 USB 驱动器分配了不同的驱动器号。如何编辑脚本以便运行file.cmd 不需要分配驱动器号F:?如果有人能把它翻译成 Python,我完全没问题。

【问题讨论】:

    标签: autoit usb-drive autorun


    【解决方案1】:

    您需要循环浏览所有可移动驱动器并搜索 您需要运行的文件。

    $DBT_DEVICEARRIVAL = "0x00008000"
    $WM_DEVICECHANGE = 0x0219
    
    GUICreate("")
    GUIRegisterMsg($WM_DEVICECHANGE , "MyFunc")
    
    
    While True
        $GuiMsg = GUIGetMsg()
    WEnd
    
    
    Func MyFunc($hWndGUI, $MsgID, $WParam, $LParam)
    
        If $WParam == $DBT_DEVICEARRIVAL Then
    
            $Drives = DriveGetDrive( "REMOVABLE" )
            For $i = 1 to $Drives[0]
                $file = $Drives[$i] & "\path\to\my\file.cmd"
                If FileExists($file) Then Run($file)
            Next
    
        EndIf
    
    EndFunc
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      相关资源
      最近更新 更多