comment obtenir des lettres de lecteurs qui sont disponibles (non utilisés) dans MFC en utilisant C++? Tout extrait de code ..comment obtenir des lettres de lecteurs qui sont disponibles (non utilisés) dans MFC?
Répondre
Votre probablement après GetLogicalDrives, cela vous donne un peu le masque de toutes les lettres de lecteur utilisées par le système, ce sera à vous de les convertir en lettres et de les ajouter dans la zone de liste déroulante
Pour le rendre un peu plus clair:
Valeur de retour
Si la fonction réussit, la valeur de retour est un masque représentant les unités de disques actuellement disponibles. La position de bit 0 (bit le moins significatif) est le lecteur A, le bit la position 1 est le lecteur B, la position de bit 2 est le lecteur C, et ainsi de suite.
si GetLogicalDrives() & 1
vérifie si le lecteur A est présent, GetLogicalDrives() & 4
vérifie si les lecteurs C est là
comment les convertir en lettres? –
@Swapnil Gupta: chaque bit représente une lettre de lecteur, le bit 0 est "A:", le bit 1 est "B:", etc, en utilisant le bit le moins significatif, il est indiqué sur la page msdn – Necrolis
De Here:
Cela vous donne les lecteurs qui sont en cours d'utilisation, il suffit de les éloignes du reste de l'alphabet AZ
////////////////////////////////////////////////////////////////
// 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;
}
Comment les enlever du reste de l'alphabet A-Z mec? –
Appel GetLogicalDrives()
. Les bits mis à zéro correspondent aux lettres de lecteur inutilisées (à l'exception bien sûr des bits 26-31)
La manière la plus simple d'utiliser GetLogicalDrives() et d'obtenir les lettres de lecteur disponibles consiste à utiliser une liste de chaînes. Avec l'index des chaînes liant à la position du bit représentant le lecteur dans le masque de bits retourné par GetLogicalDrives(). Voici un exemple utilisant QStringList
DWORD bitmask = GetLogicalDrives();
QStringList driveList = QStringList();
//Can add the rest of the alphabet.
driveList << "a:" << "b:" << "c:" << "d:" << "e:" << "f:" << "g:" << "h:" << "i:";
for(int i = 0; i < driveList.size(); i++)
{
if((bitmask & (1 << i)) == 0) //Shift bitmask and if 0 drive is free
{
driveList.at(i) // String of the free drive.
}
}
- 1. comment obtenir des lecteurs physiques dans Windows
- 2. MFC Combobox Ajouter des lecteurs A-Z?
- 3. Obtenez la liste des lecteurs disponibles et leurs tailles
- 4. Comment obtenir la liste des ports qui sont utilisés sur le serveur depuis Delphi
- 5. comment obtenir la liste des ports qui sont utilisés sur le serveur
- 6. qui allocateur sont disponibles dans STLport, et comment les utiliser
- 7. Désactivation des contrôles de boîte aux lettres MFC
- 8. Delphi: Comment obtenir la requête qui est passée au serveur lorsque les paramètres sont utilisés
- 9. Comment la plupart des lecteurs vidéo AS3 sont-ils créés?
- 10. Combien de caractères non imprimables sont couramment utilisés?
- 11. SQL obtenir les ID qui sont disponibles dans l'intervalle de temps donné pour X jours consécutifs
- 12. Comment obtenir la liste des membres (propriétés/méthodes) qui ne sont utilisés nulle part dans la solution?
- 13. Obtenir la liste des programmes fréquemment utilisés
- 14. Composants System.ComponentModel.IContainer non utilisés?
- 15. Obtenir la longueur des bits utilisés dans int
- 16. Quels modèles de conception sont sous-utilisés?
- 17. Utilisation de l'objet activeX sur des applications non-MFC
- 18. Quels types de sockets sont disponibles dans VxWorks?
- 19. Où sont tous mes inodes utilisés?
- 20. Comment obtenir le FolderPath dans l'application MFC
- 21. XmlSlurper namespaces non utilisés
- 22. Comment obtenir par programme des informations sur les lecteurs de stockage sous Linux? (C# MONO)
- 23. Exécuter des tests non disponibles dans Visual Studio
- 24. Boîte de dépôt C# des lecteurs
- 25. Comment vérifier les ressources externes sont disponibles
- 26. Lettres dans les entiers. Que sont-ils?
- 27. Supprimer les styles non utilisés dans des ressources Dictionnaire
- 28. Comment détecter les fichiers qui ne sont pas utilisés dans ma construction
- 29. Comment créer une fenêtre non interactive dans le MFC
- 30. C#: obtenir des lettres de l'alphabet pour la langue scandinave?
Que voulez-vous dire par noms de lecteurs? Noms de fabricants? Drive lettres? – Goz
Lettres de lecteur ... –
Et que voulez-vous dire en cours d'utilisation - pas d'E/S actives? Cela pourrait bien changer seconde par seconde. Qu'essayez-vous de faire? – Rup