Ver Mensaje Individual
  #12  
Antiguo 15-07-2010
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Otra forma de implementar lo que buscas, es pedirle al shell que nos diga su nombre, a través de IShellFolder Interface:

Código:
#define NO_WIN32_LEAN_AND_MEAN
#include <vcl.h>
#pragma hdrstop
 
#include <shlobj.h>
 
 
String GetDriveName(String Drive)
{
   LPSHELLFOLDER Desk;
   LPITEMIDLIST  pidl;
   STRRET        StrRet;
   String        Result = "";
 
   if(SUCCEEDED(SHGetDesktopFolder(&Desk))){
      Desk->ParseDisplayName(0, NULL, StringToOleStr(Drive), 0, &pidl, 0);
      Desk->GetDisplayNameOf(pidl, SHGDN_NORMAL, &StrRet);
      switch(StrRet.uType) {
        case STRRET_WSTR:
          Result = StrRet.pOleStr;
          break;
        case STRRET_OFFSET:
          Result = (char*)pidl + StrRet.uOffset;
          break;
        case STRRET_CSTR:
          Result = StrRet.cStr;
          break;
      }
      Desk->Release();
   }
   return Result;
}
Lo usaremos así:
Código:
String Name = GetDriveName("C:\\");
Saludos.

Última edición por escafandra fecha: 15-07-2010 a las 15:13:48.
Responder Con Cita