贴段代码(转)

#ifdef _DEBUG

#endif   //  _DEBUG
#include 
< windows.h >  
#include 
< stdio.h >  


enum   {TXT_NORM,TXT_BRED,TXT_BGREEN,TXT_BBLUE,TXT_BWHITE}

void  DriverInfo(); 
void  SysInfo(); 
BOOL SetTextColor(
int ); 

void  main() 

    SetTextColor(TXT_BWHITE); 
    printf(
" _.-=[ InfoGather by nop]=-._ "); 
    SetTextColor(TXT_NORM); 
    SysInfo(); 
    DriverInfo(); 
}
 

void  SysInfo() 


    
// 操作系统版本号 
    OSVERSIONINFOEX        OsVerInfo; 
    OsVerInfo.dwOSVersionInfoSize    
= sizeof(OSVERSIONINFOEX); 
    GetVersionEx((OSVERSIONINFO 
*)&OsVerInfo); // 注意转换类型 

    
// CPU个数 :-< 
    SYSTEM_INFO        SystemInfo; 
    GetSystemInfo(
&SystemInfo); 

     
    
    
char                ComputerName[MAX_PATH + 1]; 
    
char                CurrentUserName[MAX_PATH + 1]; 
    DWORD                dwLenth 
= MAX_PATH;
    
// 计算机名 
    GetComputerName(ComputerName, &dwLenth);
    dwLenth 
= MAX_PATH;
    
// 当前用户名 
    if(GetUserName(CurrentUserName, &dwLenth) == NULL)
        printf(
"%d ", GetLastError());
    

    
// 开机时间(毫秒) 
    DWORD Uptime = GetTickCount(); 
    
int Days        = Uptime/1000/3600/24
    
int Hours        = Uptime/1000/3600 - Days*24
    
int Minutes        = Uptime/1000/60 - Days*24*60 - Hours*60
    
int Seconds    = Uptime/1000 - Days*24*3600 - Hours*3600 - Minutes*60
     
    
// 显示器信息 
    HDC    hScrDC    = CreateDC("Display", NULL, NULL, NULL); 
    
int xScrn    = GetDeviceCaps(hScrDC, HORZRES); 
    
int yScrn    = GetDeviceCaps(hScrDC, VERTRES); 
    
int Bit        = GetDeviceCaps(hScrDC, BITSPIXEL); 
    
int Hz        = GetDeviceCaps(hScrDC, VREFRESH); 
    DeleteDC(hScrDC); 

    
// 内存信息 
    MEMORYSTATUS    MemInfo; 
    MemInfo.dwLength
=sizeof(MemInfo); 
    GlobalMemoryStatus(
&MemInfo); 


    
// 输出信息 
    printf("用户@计算机:  %s@%s ", CurrentUserName, ComputerName); 
    printf(
"运行时间:     %1d天%2d小时%2d分%2d秒 ", Days, Hours, Minutes, Seconds); 
    printf(
"系统版本:     Windows "); 
    
switch (OsVerInfo.dwPlatformId) 
    

          
        
case VER_PLATFORM_WIN32_NT:           
        
if ( OsVerInfo.dwMajorVersion <= 4 ) 
              printf(
"NT ");           
        
if ( OsVerInfo.dwMajorVersion == 5 && OsVerInfo.dwMinorVersion == 0 ) 
              printf(
"2000 ");        
        
if ( OsVerInfo.dwMajorVersion == 5 && OsVerInfo.dwMinorVersion == 1 ) 
              printf(
"XP ");         
        
if ( OsVerInfo.dwMajorVersion == 5 && OsVerInfo.dwMinorVersion == 2 ) 
              printf(
"2003 "); 
    }
 
    printf(
"Service Pack %d.%d(Build %d) "
        
//OsVerInfo.szCSDVersion, 
        OsVerInfo.wServicePackMajor, 
        OsVerInfo.wServicePackMinor, 
        OsVerInfo.dwBuildNumber); 
    printf(
"CPU个数:      %d个 ", SystemInfo.dwNumberOfProcessors); 

    
// CPU名称,频率 
    DWORD                dwFrequence; 
    
char                szCPUName[MAX_PATH]; 
    DWORD                dwRegDw 
=     REG_DWORD; 
    DWORD                dwRegSz 
=    REG_SZ; 
    DWORD                dwDw 
= sizeof(DWORD);                         
    HKEY                hKey; 
    
char                szCPUKey[]="HARDWAREDESCRIPTIONSystemCentralProcessor/0/"
     
    
// 这里用szCPUKey[0x2d] 来控制所访问的注册表项有点不好 
    for(  ; szCPUKey[0x2d]-48 < SystemInfo.dwNumberOfProcessors; szCPUKey[0x2d]++
    

        dwLenth 
= MAX_PATH + 1
        RegOpenKeyEx(HKEY_LOCAL_MACHINE, szCPUKey, NULL, KEY_READ,    
&hKey); 
        RegQueryValueEx(hKey, 
"~MHz", NULL, &dwRegDw, (LPBYTE)&dwFrequence, &dwDw); 
        RegQueryValueEx(hKey, 
"ProcessorNameString", NULL, &dwRegSz, (LPBYTE)szCPUName, &dwLenth); 
        printf(
"CPU[%d]名称:   %s@ %dMHz ", szCPUKey[0x2d]-48, szCPUName, dwFrequence); 
        RegCloseKey(hKey); 
// 用了要还 
    }
 
     
    printf(
"内存容量:     %dMB, 剩余: %dMB "
        MemInfo.dwTotalPhys
/1024/1024, MemInfo.dwAvailPhys/1024/1024); 
    printf(
"分辨率:       %dx%d@ %dHz, %dBit ", xScrn, yScrn, Hz, Bit); 
    
//printf("当前用户:     %s ", CurrentUserName); 

         
}
 


void  DriverInfo() 

    
char                Disk[] = "B:"
    
char                VolName[MAX_PATH]; 
    
char                FileSystem[MAX_PATH]; 
    
char                DeviceName[MAX_PATH]; 
    unsigned __int64    Amount; 
    unsigned __int64    FreeSpace; 
    unsigned __int64    HDAmount 
= 0
    unsigned __int64    HDFreeSpace 
= 0
    
float                Percent; 

    printf(
" 盘符[卷标] 驱动器[文件系统]      总大小        可用空间 百分比 "); 
    
//SetTextColor(TXT_BWHITE); 
    printf("============================================================================== "); 
    
//SetTextColor(TXT_NORM); 

    
for(; Disk[0]<='Z'; Disk[0]++
    

        Amount 
= 0
        FreeSpace 
= 0
        FileSystem[
0=0
        VolName[
0= 0//清空缓存 :-P 
         
        GetVolumeInformation(Disk, VolName, MAX_PATH, NULL, NULL, NULL, FileSystem, MAX_PATH); 
        GetDiskFreeSpaceEx(Disk, (PULARGE_INTEGER)
&FreeSpace, (PULARGE_INTEGER)&Amount, NULL); 
         
        unsigned 
long    AmntMB = Amount/1024/1024
        
float            AmntGB = AmntMB/1024.; 
        unsigned 
long    FreeMB = FreeSpace/1024/1024
        
float            FreeGB = FreeMB/1024.; 
        
if( AmntMB == 0
        

            Percent 
= 0.0
        }
 
        
else 
        

            Percent    
= (float)FreeMB/(float)AmntMB*100.0
        }
 
         
        
switch(GetDriveType(Disk)) 
        

        
case    DRIVE_REMOVABLE: 
            strcpy(DeviceName, 
"可移动磁盘"); 
            
break
        
case    DRIVE_FIXED: 
            strcpy(DeviceName, 
"      硬盘"); 
            HDAmount 
= HDAmount + Amount; 
            HDFreeSpace 
= HDFreeSpace + FreeSpace; 
            
break
        
case    DRIVE_REMOTE: 
            strcpy(DeviceName, 
"网络驱动器"); 
            
break
        
case    DRIVE_CDROM: 
            
if ( FileSystem[0== 0&& VolName[0== 0
                strcpy(FileSystem, 
"无盘"); 
            strcpy(DeviceName, 
"      光驱"); 
            
break
        
case    DRIVE_RAMDISK: 
            strcpy(DeviceName, 
" RAM驱动器"); 
            
break
        
case    DRIVE_UNKNOWN: 
            strcpy(DeviceName, 
"  未知设备"); 
            
break
        
default
            strcpy(DeviceName, 
"其他情况"); 
            
break
        }
 
        
if ( strcmp(DeviceName, "其他情况")) 
        

            printf(
"%s[%-8s] %s|%4s  %8ldMB|%6.1fG  %8ldMB|%6.1fG  %2.1f%% "
                Disk, VolName, DeviceName, FileSystem, AmntMB, AmntGB, FreeMB, FreeGB, Percent); 
        }
 
    }
  //for()循环的 

    unsigned 
long    HDAmntMB = HDAmount/1024/1024
    
float            HDAmntGB = HDAmntMB/1024.; 
    unsigned 
long    HDFreeMB = HDFreeSpace/1024/1024
    
float            HDFreeGB = HDFreeMB/1024.; 
    
if( HDAmntMB == 0
    

        Percent 
= 0.0
    }
 
    
else 
    

        Percent    
= (float)HDFreeMB/(float)HDAmntMB*100.0
    }
 

    printf(
" 硬盘总大小: %8ldMB|%6.1fG 剩余空间:   %8ldMB|%6.1fG 可用率百分比:  %2.1f%% "
            HDAmntMB, HDAmntGB, HDFreeMB, HDFreeGB, Percent); 
}
 


BOOL SetTextColor(
int  color) 

    
switch(color) 
    

    
case TXT_NORM: 
        
return SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 
            FOREGROUND_RED 
| FOREGROUND_GREEN | FOREGROUND_BLUE); 
    
case TXT_BRED: 
        
return SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 
            FOREGROUND_RED
| FOREGROUND_INTENSITY); 
    
case TXT_BGREEN: 
        
return SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 
            FOREGROUND_GREEN
| FOREGROUND_INTENSITY); 
    
case TXT_BBLUE: 
        
return SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 
            FOREGROUND_BLUE
| FOREGROUND_INTENSITY); 
    
case TXT_BWHITE: 
        
return SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 
            FOREGROUND_RED 
| FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY); 
    
default
        
return FALSE; 
    }
 
}

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值