(已解决)检测移动设备插入电脑问题
本帖最后由 747957181 于 2012-6-3 15:10 编辑程序运行后若检测到插入U盘则在该程序“文件”菜单下创建菜单项为U盘盘符的子菜单。
若检测到U盘被拔出则在该程序“文件”菜单下删除上述子项。
求教该如何实现? 回复 1# 747957181
大半夜的还来逛论坛提问, 不容易, 表示下支持吧!
建议在论坛搜索:右键菜单? 和U盘 ? #include <GUIConstantsEx.au3>
Opt("GUIOnEventMode", 1);OnEvent模式
Global Const $WM_DEVICECHANGE = 0x0219
Global Const $DBT_DEVICEARRIVAL = 0x8000
Global Const $DBT_DEVICEREMOVECOMPLETE = 0x8004
Local $menu_A, $U
GUIRegisterMsg($WM_DEVICECHANGE, '_DEVICECHANGE')
GUICreate("检测")
$menu = GUICtrlCreateMenu("文件")
CreatMenu()
GUISetState(@SW_SHOW)
GUISetOnEvent($GUI_EVENT_CLOSE, "gui")
While 1
Sleep(10)
WEnd
Func _DEVICECHANGE($hWnd, $Msg, $wParam, $lParam)
Switch $wParam
Case $DBT_DEVICEARRIVAL, $DBT_DEVICEREMOVECOMPLETE
For $i = 1 To UBound($menu_A)
GUICtrlDelete($menu_A[$i - 1])
Next
CreatMenu()
EndSwitch
EndFunc ;==>_DEVICECHANGE
Func gui()
Switch @GUI_CtrlId
Case $GUI_EVENT_CLOSE
Exit
Case $menu_A
ShellExecute($U)
Case $menu_A
ShellExecute($U)
Case $menu_A
ShellExecute($U)
Case $menu_A
ShellExecute($U)
Case $menu_A
ShellExecute($U)
EndSwitch
EndFunc ;==>gui
Func CreatMenu()
$Drive = DriveGetDrive("REMOVABLE")
If IsArray($Drive) Then
For $i = 1 To $Drive
$menu_A[$i - 1] = GUICtrlCreateMenuItem("打开" & StringUpper($Drive[$i]) & "\", $menu)
$U[$i - 1] = $Drive[$i]
GUICtrlSetOnEvent($menu_A[$i - 1], "gui")
Next
EndIf
EndFunc ;==>CreatMenu
回复 3# zldfsz
哇,大师一出手,嘛问题都是浮云! 回复 4# hzxymkb
水哥又在http://www.autoitx.com/attachment.php?aid=MjEzOTB8NTdlNTVmODJ8MTMzODY5OTgxM3w3ZGYza3FsSHo4bjhycVRMbjMzY0ZINE03dVJmdDZ0cHB4VmRvNE0xb0cvd0VtSQ%3D%3D&noupdate=yes咱家了 回复 3# zldfsz
大师就是大师,这么简短的代码就解决了。
就这个问题曾经搜索过论坛,但一直没找到合适的方法。 回复 6# 地平线
叫我写我还不是写不出来,我只不过进行简单的代码拼凑而已,各位见笑了 回复 3# zldfsz
多谢指教,我研究研究。 看看学习下 看看学习下
页:
[1]