有时候想弹出U盘需要做很多操作,麻烦死了,就做了个一键弹出,
DriveGet, list, list
loop,Parse,list
{
; 设定为你想弹出的驱动器的标号。
popDriver:=A_LoopField . ":"
DriveGet, type, type, %popDriver%
; 如果是移动磁盘,则执行弹出操作
if(type == "Removable")
{
hVolume := DllCall("CreateFile", Str, "\\.\" . popDriver
, UInt, 0x80000000 | 0x40000000
, UInt, 0x1 | 0x2
, UInt, 0
, UInt, 0x3
, UInt, 0, UInt, 0)
if hVolume <> -1
{
DllCall("DeviceIoControl", UInt, hVolume , UInt, 0x2D4808
, UInt, 0, UInt, 0, UInt, 0, UInt, 0 , UIntP, dwBytesReturned
, UInt, 0)
DllCall("CloseHandle", UInt, hVolume)
}
}
}
这行代码去掉,好像发布的时候自己加上去的
哪行代码?
非常感谢,完全用代码就解决了!!!
能稍微解释下DLLCALL吗?
CreateFile,DeviceIoControl代码是干什么的?
不好意思耶,dllcall里的参数,我也是东凑凑西凑凑的 ❓
发现有Bug,用了这个命令后,托盘图标是没了,
但是DriveGet, USB_List, List, REMOVABLE还是能获取到U盘盘符,移除地不彻底,希望能改进,谢谢!
好的谢谢,我就说有时候资源管理器里面还有U盘图标呢
如果有完善的希望能在这里补充 😀 先谢谢了
问下,你那是 U盘还是移动硬盘?如果是U盘的话,是可以的,但是如果是移动硬盘的话,是识别不了的,因为U盘的类型是Removable,移动硬盘和系统盘的类型都是Fixed。我现在看看怎么把移动硬盘识别
虽然看不懂,但非常好用~打赞
很不错,竟然能直接代码搞定!
感谢