[U盘操作]一键弹出

有时候想弹出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)
        }
    }
}

 

给TA捐赠
共{{data.count}}人
人已捐赠
其他教程案例

Gui Add创建控件的动态设置研究及官方示例代码修改

2018-2-13 20:13:52

其他教程

AHK调用炫彩界面库1简单窗口

2018-2-26 0:05:12

11 条回复 A文章作者 M管理员
  1. 肥羊儿肥

    这行代码去掉,好像发布的时候自己加上去的

  2. 火冷

    非常感谢,完全用代码就解决了!!!
    能稍微解释下DLLCALL吗?
    CreateFile,DeviceIoControl代码是干什么的?

    • 肥羊儿肥

      不好意思耶,dllcall里的参数,我也是东凑凑西凑凑的 ❓

    • 火冷

      发现有Bug,用了这个命令后,托盘图标是没了,
      但是DriveGet, USB_List, List, REMOVABLE还是能获取到U盘盘符,移除地不彻底,希望能改进,谢谢!

    • 肥羊儿肥

      好的谢谢,我就说有时候资源管理器里面还有U盘图标呢

    • 火冷

      如果有完善的希望能在这里补充 😀 先谢谢了

    • 肥羊儿肥

      问下,你那是 U盘还是移动硬盘?如果是U盘的话,是可以的,但是如果是移动硬盘的话,是识别不了的,因为U盘的类型是Removable,移动硬盘和系统盘的类型都是Fixed。我现在看看怎么把移动硬盘识别

  3. 咦,有大神!

    虽然看不懂,但非常好用~打赞

  4. zhanglei1371

    很不错,竟然能直接代码搞定!

  5. zjj1311

    感谢

个人中心
购物车
优惠劵
有新私信 私信列表
搜索