ken0137 发表于 2008-5-14 22:41:49

如何调用windows自带的格式化工具

一般选择一个盘,然后右键--格式化
会出现一个窗口“格式化 本地磁盘 (D:)”,这个窗口,要发送什么命令才会出现

[ 本帖最后由 ken0137 于 2008-5-22 20:52 编辑 ]

bing614 发表于 2008-5-14 23:06:17

format 简单实用.

sanhen 发表于 2008-5-15 00:58:45


;
;
Local $DriveNumber=3;A盘为0,B盘为1,C盘为2,D盘为3,依次类推……
Local $FormatOptions=1 ;1为快速格式化,0为完全格式化
DllCall("shell32.dll","int","SHFormatDrive","hwnd",0,"int",$DriveNumber,"int",0,"int",$FormatOptions)
;
;

漠北雪~狼 发表于 2008-5-15 04:04:07

:face (22): :face (22): 叁恨发言果然不同凡响,顺便问句:你API方面的这么多东西到底是怎么学会使用的呢?能教下大家方法么?

ken0137 发表于 2008-5-15 08:18:03

如果我要格式化的是多个优盘,怎么判断
这里我连接的是手机,连接后一个手机会有两个“removable”,其中一个是虚拟的,一个是优盘,我是根据优盘的容量来判断哪个是实际的优盘。
要是我一次插入多个手机,有什么函数可以返回 $DriveNumber的值

meteorln 发表于 2008-5-15 11:57:40

:face (32): 不明白dllcall这怎么用的...

漠北雪~狼 发表于 2008-5-15 11:59:37

$DriveNumber ????你自已脚本里的一个变量? 你想获取的倒底是什么值呢?

sanhen 发表于 2008-5-15 12:39:41

回复 4# 漠北雪~狼 的帖子

通过查MSDN得到函数原型。再转换为AU3即可。。。:face (31):

asdf 发表于 2008-5-15 16:56:56

$DriveNumber可以这样算?
a-z为盘符,ascII为97-122。那么,DGT获取Removable,再DS Ready,获得所有可用的U盘的盘符,asc盘符-96,就把将盘符转成dllcall需要的数字($DriveNumber)了。

asdf 发表于 2008-5-15 17:18:45

发一下代码吧。
$var = DriveGetDrive( "REMOVABLE" )
Dim $DriveNumber
$i = 1
If NOT @error Then
        For $i = 1 to $var
                $state = DriveStatus($var[$i])
                If $state = "READY"        Then       
                        $DriveNumber[$i] = Asc($var[$i]) - 96
                        $i += 1
                        ReDim $DriveNumber[$i]
                EndIf
        Next
        $DriveNumber = $i
        $var = 0
EndIf

For $i = 1 To $i
        MsgBox(0,"阁下的U盘:",$DriveNumber[$i])
Next

[ 本帖最后由 asdf 于 2008-5-15 17:24 编辑 ]

bob 发表于 2008-5-16 08:14:06

可移动磁盘可以用DriveGetDrive 函数来实现
另外怀疑我楼上是AD贴

ollydbg 发表于 2008-5-16 10:24:20

正想多了解这方面的内容,不错的!!

hynq2000 发表于 2008-5-16 12:17:53

学习了 看高手过招

ken0137 发表于 2008-5-16 14:05:32

其实我想知道,出现这样的效果,要运行什么命令?



[ 本帖最后由 ken0137 于 2008-5-16 14:06 编辑 ]

sanhen 发表于 2008-5-16 14:32:38

真的无语了。。。。。。。。。。。。。。。
页: [1] 2
查看完整版本: 如何调用windows自带的格式化工具