为了保护USB移动硬盘,或其他设备。在把出usb连接之前,我们总是要先点选右下角图标,选择弹出usb连接设备,然后再拔下来usb链接。

每次点选够烦人,可是,直接拔下来又怕损坏u盘(丢失数据才要命啊)。 看了一下AutoHotKey的说明,哈哈,还真有相应的功能,弹出各种Drive……

废话不多说,直接上代码。
说明:
第一行: 定义那个快捷键来实现弹出usb连接。 这里为键盘ctrl+e,e是exit的意思。跟以前一样,自己随便定义,也可以是q(quit)。
然后再需要说明的就是 Driveletter= E:, 这个E是u盘连接后的盘符,也是根据自己的情况更改。
后边的就不需要管了。
测试后发现,会自动弹出u盘连接,但是又下角的usb连接图标不会立即消失,会在usb连接真正拔出来的时候才消失,如过在我的电脑下看各个盘符,u盘对应的盘符会变成灰色,不能使用了,也是在拔出usb连接后自行消失。


^e::
; Update the first line below to match the desired drive letter (you can ignore all the other lines below).
Driveletter = E: ; Set this to the drive letter you wish to eject.

hVolume := DllCall("CreateFile"
, Str, "\.\" . Driveletter
, UInt, 0x80000000 | 0x40000000 ; GENERIC_READ | GENERIC_WRITE
, UInt, 0x1 | 0x2 ; FILE_SHARE_READ | FILE_SHARE_WRITE
, UInt, 0
, UInt, 0x3 ; OPEN_EXISTING
, UInt, 0, UInt, 0)
if hVolume <> -1
{
DllCall("DeviceIoControl"
, UInt, hVolume
, UInt, 0x2D4808 ; IOCTL_STORAGE_EJECT_MEDIA
, UInt, 0, UInt, 0, UInt, 0, UInt, 0
, UIntP, dwBytesReturned ; Unused.
, UInt, 0)
DllCall("CloseHandle", UInt, hVolume)
}
return

News Reporter
Dr. Lu

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

跳至工具栏