- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Possible Duplicate:
Get drive information (free space, etc.) for drives on Windows and populate a memo box
我对编程(尤其是 Delphi)很陌生,并且无法找到任何有关如何枚举 PC 上所有驱动器的示例。
我真的很关心硬盘和 CD-ROM 驱动器,但我一直找不到任何可用的东西。
有人能给我指出一个好的工作示例的方向吗?
最佳答案
最简单的方法实际上是使用 sysutils.pas
文件中的 GetDiskFreeSpaceEx
。
此示例有 2 个部分。第一个是使用 GetDiskFreeSpaceEX
的重要部分。
function DriveSpace(DriveLetter : String; var FreeSpace, UsedSpace, TotalSpace : int64) : Boolean;
begin
Result := SysUtils.GetDiskFreeSpaceEx(Pchar(DriveLetter), UsedSpace, TotalSpace, @FreeSpace);
if UsedSpace > 0 then
UsedSpace := TotalSpace - FreeSpace;
if not Result then
begin
UsedSpace := 0;
TotalSpace := 0;
FreeSpace := 0;
end;
end;
如果您要请求已知驱动器号的驱动器,例如 C:,那么这就是您所需要的。
用法如下:
var
FS,
US,
TS : Int64
begin
DriveSpace('C:', FS, US, TS);
//Do something with the 3 variables.
end;
话虽如此,如果您也想找到驱动器,您可以使用如下内容:
procedure ListDrivesOfType(DriveType : Integer; var Drives : TStringList);
var
DriveMap,
dMask : DWORD;
dRoot : String;
I : Integer;
begin
dRoot := 'A:\'; //' // work around highlighting
DriveMap := GetLogicalDrives;
dMask := 1;
for I := 0 to 32 do
begin
if (dMask and DriveMap) <> 0 then
if GetDriveType(PChar(dRoot)) = DriveType then
begin
Drives.Add(dRoot[1] + ':');
end;
dMask := dMask shl 1;
Inc(dRoot[1]);
end;
end;
注意 DriveType 整数,应该是以下之一:
DRIVE_UNKNOWN = 0;
DRIVE_NO_ROOT_DIR = 1;
DRIVE_REMOVABLE = 2;
DRIVE_FIXED = 3;
DRIVE_REMOTE = 4;
DRIVE_CDROM = 5;
DRIVE_RAMDISK = 6;
(我直接从 windows.pas
中取出这些)
现在终于回答您的问题(这非常粗略),以下内容会将所有固定硬盘驱动器
的信息添加到备忘录(称为 memo1)中:
Procedure TAform.SomeNameICantThinkOfNow;
const
BytesPerMB = 1048576;
var
MyDrives : TStringlist;
I : Integer;
FreeSpace,
UsedSpace,
TotalSpace : int64;
begin
MyDrives := TStringlist.Create;
ListDrivesOfType(DRIVE_FIXED, MyDrives);
Memo1.Lines.Clear;
for I := 0 to MyDrives.Count - 1 do
begin
FreeSpace := 0;
UsedSpace := 0;
TotalSpace := 0;
if DriveSpace(MyDrives.Strings[I], FreeSpace, UsedSpace, TotalSpace) then
begin
FreeSpace := FreeSpace div BytesPerMB;
UsedSpace := UsedSpace div BytesPerMB;
TotalSpace := TotalSpace div BytesPerMB;
Memo1.Lines.Add('Drive: ' + MyDrives.Strings[I] + ' = Free Space :' + IntToStr(FreeSpace) +
' Used Space: ' + IntToStr(UsedSpace) + ' Total Space: ' + IntToStr(TotalSpace));
end;
end;
end;
我确实说过这会很恶心!我刚刚在 IDE 中运行了它,它可以工作,我已经作为 MB 完成了,但实际上你应该转换为 Double 并选择你的格式(如果作为 MB 进行更精确),因为我上面创建的示例当然只是四舍五入.
希望这能带来一些小小的帮助。
关于Delphi - 枚举 Windows PC 上的磁盘和其他驱动器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5635573/
我执行以下操作以检查远程计算机上的本地驱动器/分区: Get-WmiObject -Class Win32_Share -ComputerName SERVERNAME -Filter "Descri
我正在尝试扫描包含成千上万个文件的共享网络驱动器,仅查找过去一年中未修改的Word文件。虽然我写的东西行得通,但速度非常慢。我需要扫描多个驱动器,这需要几个小时。我有什么办法可以加快速度? gci \
我记得在 vb6 中有一个类似于 dropbox/combobox 的控件,您可以选择驱动器名称。它会引发一个事件,然后您可以设置另一个控件来枚举列表框中的文件。 (在 drive.event 中你做
USB 驱动器有哪些安全风险? USB 驱动器优点是体积小、容易获得、价格低廉且便于携带,因此在将文件从一台计算机存储和传输到另一台计算机方面很受欢迎。然而,这些优点特征使它们对攻击者具有吸引
驱动器的编程对黑客编程来说至关重要。好在vbs给我们提供了方便的集合,使得工作变得很简单。 1、检查驱动器 使用filesy
我正在尝试编写批处理文件以将文件夹xcopy到可移动USB驱动器。但是,我面临的问题是驱动器号可能会发生变化,因此我希望能够通过引用卷标而不是驱动器号来做到这一点。 有任何想法吗?一个小时的Googl
我正在用 C# 开发一个应用程序,因此,如果用户确认消息框格式化 USB 驱动器,从组合框列表中选择,驱动器将被格式化。 我不知道如何处理这个问题,但是 - 我有以下代码: public stati
我正在尝试将文件保存到 icloud 驱动器。我会选择简单的版本,我不让用户选择保存文件的位置,我只是将它保存在 icloud 驱动器的根目录中。这是我正在使用的代码: func exportToFi
我正在尝试创建一个脚本,我将在其中搜索文件服务器的非继承权限。结果,我遇到了文件名 260 个字符的限制。我看到的一个建议,我认为会有所帮助,有几次是创建一些非持久性的 PS 驱动器,深度为几个级别并
我正在制作一个 USB 驱动器,其中应包含有助于解决用户遇到的各种软件问题的工具。 您建议我添加哪些工具? 主要环境:Windows和.NET 最佳答案 我可以推荐以下内容:{其中一些已经被提及} 日
因此,在稀缺的introduction to inegration testing中,您应该使用 flutter drive --target=test_driver/app.dart 但是我找不到有
我正在尝试让 docker 挂载我的 d 驱动器。一直在与大量的 stack 和 git 作斗争,但它们似乎都不适合我。 我已经将我的d盘添加到共享文件夹 然后我安装在我的 docker-compos
我正在尝试以编程方式从 Powershell 应用程序中安全地删除 USB 驱动器。我当前的代码适用于单卷 USB 驱动器。代码如下: $Eject = New-Object -comObject S
我有一个乏味的项目即将到来。我需要将 USB 闪存驱动器插入计算机,然后将三个文件复制到该驱动器,然后卸载它并重复 3000 次(字面意思)。我希望能想出一些 VBScript 来减少我的 Actio
我正在编写一个提取 xml 的文件以获取文件名,并且需要将这些文件复制到 USB 驱动器。前两个步骤我能够做到这一点。但问题是: 如何检测是否有 U 盘 然后检测它是哪个驱动器。 谢谢! 最佳答案 这
在我的 Java Web 应用程序中,需要单击“保存文件”按钮将 6 个文件从服务器复制到用户计算机 USB 驱动器。 如果未找到 USB 驱动器,则需要显示警告消息“未检测到 USB 驱动器”。 我
您好,我有以下查询来获取 12 个月前的时间窗口内每月发生的驱动器。然而,结果并不正确,例如,在我的测试数据库中,2 月份仅发生了 3 个驱动器,但在我的结果集中,它显示了 9 个驱动器。 SELEC
我一直在尝试找到一种通过 swift 2 和 Xcode 7 连接到我的网络驱动器的方法。我可以连接到我的桌面或文档目录,但不能连接到我的服务器。我玩过 NSString/NSURL 等但无济于事。以
我有几个问题: 以下 C++ 代码是否会导致我的硬盘在经过一定时间后空闲? #include int main() { while(1); } 如果是这样,我可以在此代码中添加什么以确保我的
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我是一名优秀的程序员,十分优秀!