- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何使用 C++ 获取 MFC 中可用(未使用)的盘符?任何代码片段..
最佳答案
来自 Here :
这会为您提供正在使用的驱动器,只需将它们从字母表 A-Z 的其余部分中取出即可
////////////////////////////////////////////////////////////////
// MSDN Magazine -- April 2002
// If this code works, it was written by Paul DiLascia.
// If not, I don't know who wrote it.
// Compiles with Visual C++ 6.0. Set tabsize = 3 in your editor.
// Runs in Windows XP and probably Windows 2000 too.
//
#include "stdafx.h"
#include "resource.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
using namespace std; // for string class
//////////////////
// This mini-table maps GetDriveType codes to human-readable string
//
struct {
UINT type; // return code from GetDriveType
LPCSTR name; // ascii name
} DriveTypeFlags [] = {
{ DRIVE_UNKNOWN, "Unknown" },
{ DRIVE_NO_ROOT_DIR, "Invalid path" },
{ DRIVE_REMOVABLE, "Removable" },
{ DRIVE_FIXED, "Fixed" },
{ DRIVE_REMOTE, "Network drive" },
{ DRIVE_CDROM, "CD-ROM" },
{ DRIVE_RAMDISK, "RAM disk" },
{ 0, NULL},
};
//////////////////
// Standard tmain for MFC ListDrives app
//
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) {
cerr << _T("Fatal Error: MFC initialization failed") << endl;
return -1;
}
// Get logical drive strings-- a:\b:\c:\... etc.
// Could also use GetLogicalDrives to get in the form of a bitmap instead
// of character string.
//
TCHAR buf[100];
DWORD len = GetLogicalDriveStrings(sizeof(buf)/sizeof(TCHAR),buf);
// Display information about each drive.
//
string msg = "Logical Drives:\n"; // STL string
for (TCHAR* s=buf; *s; s+=_tcslen(s)+1) {
LPCTSTR sDrivePath = s;
msg += sDrivePath;
msg += " ";
// GetDriveType gets one of the enum values DRIVE_UNKNOWN, etc.
//
UINT uDriveType = GetDriveType(sDrivePath);
// Find drive type in table. I do a table lookup here to be extra
// cautious, but since the uDriveType values are sequential, i could've
// used DriveTypeFlags[uDriveType] instead of linear lookup. In
// practice you would usually perform some check like
//
// if (uDriveType & DEVICE_CDROM) {
// ...
// }
//
for (int i=0; DriveTypeFlags[i].name; i++) {
if (uDriveType == DriveTypeFlags[i].type) {
msg += DriveTypeFlags[i].name;
break;
}
}
msg += '\n';
}
cout << msg.c_str();
return 0;
}
关于c++ - 如何获取 MFC 中可用(未使用)的盘符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3811052/
我正在尝试创建备份批处理文件以自动执行 Acronis True Image 和备份维护。 USB 驱动器盘符会根据我正在备份的机器和/或连接的设备数量和使用的驱动器盘符而变化... 我的批处理位于
我在 http://network-blog.lan-secure.com/2008/03/usb-detection-using-wmi-script.html 上找到了这个脚本 strCompu
我正在使用以下代码获取计算机上每个驱动器的盘符列表。我想从此列表中获取 CD 驱动器的盘符。如何检查? 我用来获取列表的代码如下: 在 Form.Load 事件中: cmbDrives.Dro
这个问题之前有人问过,有一个答案据说有效 here 。但我试过了,它对我不起作用。 问题是 Win32_DiskDrive 上的查询返回的 PNPDeviceID 与“设备”类返回的不同。例如,在我的
这个问题之前有人问过,有一个答案据说有效 here 。但我试过了,它对我不起作用。 问题是 Win32_DiskDrive 上的查询返回的 PNPDeviceID 与“设备”类返回的不同。例如,在我的
所以我想我会在这里包含最终答案,这样您就不必理解这篇文章了。非常感谢 Simon Mourier 花时间解决这个问题。 我的工作代码 try {
我是一名优秀的程序员,十分优秀!