m765555 发表于 2010-5-29 12:25:33

检测D盘是否存在,是否为硬盘,是否格式化是否可写入数据 已解决

本帖最后由 m765555 于 2010-9-21 15:36 编辑

本人想写一个软件自动安装到D盘,源码已写好,但仔细想了一下有些不完美,问题在于:
D盘存在吗?是硬盘吗,可写吗,如果是新分的区的话,还存在没有格式化就不能写入数据的问题。问题一想一大堆。请各位高手指点一下小弟,在此先谢了!本人QQ76555051

thesnow 发表于 2010-5-29 12:28:36

先建立个文件试试

m765555 发表于 2010-5-29 12:33:38

补充一下, 有些代码是集各位高手的源码借签而来的,我上传了两个au3文件,其中一个是包含文件,缺少不得,另个360的安装文件是7.1版本的,我没有上传,请各位自己下载,下载后命名为360Safesetup.exe,两个au3文件和一个360的exe安装文件放到一起就可以运行了。喜欢的朋友可以下载,高手请飘过。

m765555 发表于 2010-5-29 12:37:36

谢谢thesnow 的回贴,请给个简单点的实例可以吗?比如成功则安装软件,失败则退出

afan 发表于 2010-5-29 14:30:01

应该还要检查剩余空间是否够安装用~

afan 发表于 2010-5-29 15:11:48

#include <File.au3>

$test = CkDrive_WS('D:', '200') ;检测D盘是否有200MB可供读写
If $test Then MsgBox(0, '', 'OK~')

Func CkDrive_WS($path, $mixFree)
        ;afan说明:检测指定盘符是否有足够的空间以供读写
        ;参数:$path = 需检测的盘符;$mixFree = 最小的需求空间(MB)
        ;返回值:正确返回1;错误返回0,并设置 @Error 为以下值:
        ;@Error = 1,指定的盘符不存在
        ;@Error = 2,指定的盘符为只读光盘
        ;@Error = 3,指定的盘符不可写或未格式化
        ;@Error = 4,剩余空间不足
        If Not FileExists($path) Then Return SetError(1, 0, 0)
        If DriveGetType($path) = 'CDROM' Then Return SetError(2, 0, 0)
        Local $tmp = _TempFile($path)
        FileWrite($tmp, '')
        If Not FileExists($tmp) Then Return SetError(3, 0, 0)
        FileDelete($tmp)
        Local $DSFree = DriveSpaceFree($path)
        If $DSFree < $mixFree Then Return SetError(4, 0, 0)
        Return 1
EndFunc   ;==>CkDrive_WS

menfan1 发表于 2010-5-29 16:35:56

考虑挺全面的嘛呵呵

lidenpan 发表于 2011-6-20 17:23:25

有没有高手给解决一下。如果D盘没有就自动安装到C盘里面去呢。。我只看到了这里只有检测D盘的功能。

雨林GG 发表于 2011-6-30 11:16:31

借签 前辈的代码了!~ 非常感谢 ~

zdpcc 发表于 2012-12-11 20:56:28

谢谢版主,正好用上
页: [1]
查看完整版本: 检测D盘是否存在,是否为硬盘,是否格式化是否可写入数据 已解决