Programación General > C++ Builder

 Version De Mi Sistema Operativo

<< < (2/2)

The Black Boy:

--- Código: Text --- AnsiString __fastcall TEstacionWindows::ObtenerVersionExSO( ){  AnsiString szVersionSO;  OSVERSIONINFO VersionSO;   VersionSO.dwOSVersionInfoSize = sizeof( OSVERSIONINFO );  if( GetVersionEx( &VersionSO ) )  {    switch( VersionSO.dwPlatformId )    {      case VER_PLATFORM_WIN32s:        szVersionSO = &#34;Win32 on Windows 3.1 Versión &#34;;        break;       case VER_PLATFORM_WIN32_WINDOWS:        szVersionSO = &#34;Windows 95 Versión &#34;;        break;       case VER_PLATFORM_WIN32_NT:        if( VersionSO.dwMajorVersion &#62;= 5 )        {          szVersionSO = &#34;Windows 2000 Versión &#34;;        }        else        {          szVersionSO = &#34;Windows NT Versión &#34;;        }        break;       default:        szVersionSO = &#34;Sistema Desconocido &#34;;    }    szVersionSO += VersionSO.dwMajorVersion;    szVersionSO += &#34;.&#34;;    szVersionSO += VersionSO.dwMinorVersion;    szVersionSO += &#34; &#34;;    szVersionSO += VersionSO.szCSDVersion;    szVersionSO += &#34; Build &#34;;    szVersionSO += VersionSO.dwBuildNumber;  }   return szVersionSO;} AnsiString __fastcall TEstacionWindows::ObtenerTipoProcesador( ){  AnsiString szTipoProcesador;  HANDLE hCPUID;  VOID ( WINAPI *pGetProcessorType )( LPSTR, LPSTR );  char szProcessorType[ 255 ], szCoprocessorType[ 255 ];   szTipoProcesador = &#34;&#34;;  memset( szProcessorType, 0, 255 );  memset( szCoprocessorType, 0, 255 );  hCPUID = LoadLibrary( &#34;CPUID.DLL&#34; );  if( hCPUID )  {    pGetProcessorType = ( VOID ( WINAPI* )( LPSTR, LPSTR ) )GetProcAddress( hCPUID, &#34;GetProcessorType&#34; );    if( pGetProcessorType )    {      pGetProcessorType( szProcessorType, szCoprocessorType );      szTipoProcesador = szProcessorType;    }    FreeLibrary( hCPUID );  }   return szTipoProcesador;} const int TEstacionWindows::ObtenerDiscos( TStringList *ListaDiscos, TStringList *ListaTamanoDiscos ){  HANDLE hFile;  SECURITY_ATTRIBUTES SecAttr;  AnsiString szDrive, szNombreDrive;  int nDrives;  DISK_GEOMETRY InfoDrive;  DWORD dwBytesRetornados;  LARGE_INTEGER TamDrive;  bool bOK;   nDrives = 0;  szDrive = &#34;&#092;&#092;&#092;&#092;.&#092;&#092;PHYSICALDRIVE&#34;;  szDrive += nDrives;   SecAttr.nLength = sizeof( SECURITY_ATTRIBUTES );  SecAttr.lpSecurityDescriptor = NULL;  SecAttr.bInheritHandle = false;   hFile = CreateFile( szDrive.c_str( ), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL );  while( hFile != INVALID_HANDLE_VALUE )  {    bOK = DeviceIoControl( hFile, IOCTL_DISK_GET_DRIVE_GEOMETRY, NULL, 0, &InfoDrive, sizeof( DISK_GEOMETRY ), &dwBytesRetornados, NULL );     if( bOK && ( InfoDrive.MediaType == FixedMedia ) )    {      szNombreDrive = &#34;Drive&#34;;      szNombreDrive += nDrives;      TamDrive.QuadPart = ( InfoDrive.Cylinders.QuadPart * InfoDrive.TracksPerCylinder * InfoDrive.SectorsPerTrack * InfoDrive.BytesPerSector ) / 1048576;      ListaDiscos -&#62; Add( szNombreDrive );      ListaTamanoDiscos -&#62; Add( TamDrive.QuadPart );    }     CloseHandle( hFile );    nDrives++;    szDrive = &#34;&#092;&#092;&#092;&#092;.&#092;&#092;PHYSICALDRIVE&#34;;    szDrive += nDrives;    hFile = CreateFile( szDrive.c_str( ), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL );  }   return nDrives;} const int TEstacionWindows::ObtenerUnidades( TStringList *ListaUnidades, unsigned int nClaseUnidad ){  int nUnidades;  char szUnidades[ TAM_BUFFER_UNIDADES + 1 ];  char *szPosicion;   nUnidades = 0;  ListaUnidades -&#62; Clear( );  if( GetLogicalDriveStrings( TAM_BUFFER_UNIDADES, szUnidades ) )  {    szPosicion = szUnidades;    while( *szPosicion )    {      if( GetDriveType( szPosicion ) == nClaseUnidad )      {        ListaUnidades -&#62; Add( szPosicion );        nUnidades++;      }      szPosicion += strlen( szPosicion ) + 1;    }  }   return nUnidades;}   
La verdad ahora solo puedo ayudarte con esto...



--- Código: Text --- //---------------------------------------------------------------------------#ifndef EstacionNTH#define EstacionNTH #include &#60;vcl/registry.hpp&#62; //---------------------------------------------------------------------------#define TAM_USUARIO 127#define TAM_BUFFER_UNIDADES 127#define TAM_NOMBRE_ESTACION 127 class TEstacionWindows{  private:    TRegistry *Registry;  public:    __fastcall TEstacionWindows( );    __fastcall ~TEstacionWindows( );    AnsiString __fastcall ObtenerVersionSO( );        AnsiString __fastcall ObtenerVersionExSO( );    AnsiString __fastcall ObtenerTipoProcesador( );    const int ObtenerDiscos( TStringList *ListaDiscos, TStringList *ListaTamanoDiscos );    const int ObtenerUnidades( TStringList *ListaUnidades, unsigned int nClaseUnidad );};#endif  
y en alnterior es el .h :good:

Espero te sirva... y en cuanto a Win 98...mmm  ... :think:  no se si la sintaxis que utilicé para Win95 te sirva.. pero si algo mirate en la utilidades de la API como es..


Saludos :hola:

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa