请问检测操作系统类型的API是那个 如题,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 void CLakerDlg::DetectSystemVersion(void){ OSVERSIONINFOEX osvi; BOOL bOsVersionInfoEx; //char * s = new char[ 100 ]; memset( sql, 0, 100 );#define a( t ) strcat( sql, t ) ZeroMemory( &osvi, sizeof( OSVERSIONINFOEX ) ); osvi.dwOSVersionInfoSize = sizeof( OSVERSIONINFOEX ); a( " -->" ); if( !( bOsVersionInfoEx = GetVersionEx( ( OSVERSIONINFO * ) &osvi ) ) ) { osvi.dwOSVersionInfoSize = sizeof ( OSVERSIONINFO ); if ( !GetVersionEx ( ( OSVERSIONINFO * ) &osvi) ) { //delete []s; return; } } switch (osvi.dwPlatformId) { case VER_PLATFORM_WIN32_NT: if( osvi.dwMajorVersion <= 4 ) a( "Microsoft Windows NT " ); if( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0 ) a( "Microsoft Windows 2000 " ); if( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1 ) a( "Microsoft Windows XP " ); if( bOsVersionInfoEx ) { if ( osvi.wProductType == VER_NT_WORKSTATION ) { if( osvi.wSuiteMask & VER_SUITE_PERSONAL ) a( "Personal " ); else a( "Professional " ); } else if ( osvi.wProductType == VER_NT_SERVER ) { if( osvi.wSuiteMask & VER_SUITE_DATACENTER ) a ( "DataCenter Server " ); else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE ) a ( "Advanced Server " ); else a ( "Server " ); } } else { HKEY hKey; char szProductType[80]; DWORD dwBufLen; RegOpenKeyEx( HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control\\ProductOptions", 0, KEY_QUERY_VALUE, &hKey ); RegQueryValueEx( hKey, "ProductType", NULL, NULL, ( LPBYTE )szProductType, &dwBufLen ); RegCloseKey( hKey ); if( lstrcmpi( "WINNT", szProductType ) == 0 ) a( "Professional " ); if( lstrcmpi( "LANMANNT", szProductType ) == 0 ) a( "Server " ); if( lstrcmpi( "SERVERNT", szProductType ) == 0 ) a( "Advanced Server " ); } if ( osvi.dwMajorVersion <= 4 ) { CString s0; s0.Format( "version %d.%d %s ( Build %d )", osvi.dwMajorVersion, osvi.dwMinorVersion, osvi.szCSDVersion, osvi.dwBuildNumber & 0xFFFF ); a( ( LPCTSTR )s0 ); } else { CString s1; s1.Format( "%s ( Build %d )", osvi.szCSDVersion, osvi.dwBuildNumber & 0xFFFF ); a( ( LPCTSTR )s1 ); } break; case VER_PLATFORM_WIN32_WINDOWS: if ( osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 0 ) { a( "Microsoft Windows 95 " ); if ( osvi.szCSDVersion[ 1 ] == 'C' || osvi.szCSDVersion[ 1 ] == 'B' ) a( "OSR2 " ); } if ( osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 10 ) { a( "Microsoft Windows 98 " ); if ( osvi.szCSDVersion[1] == 'A') a( "SE " ); } if ( osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 90 ) { a( "Microsoft Windows Me " ); } break; case VER_PLATFORM_WIN32s: a( "Microsoft Win32s" ); break; } DispMessage( ( LPCTSTR )sql ); //delete []s; return; } 关于CString和string相关的数据类型转换 50分 进度条实现问题 用GDI+绘图的时候碰到麻烦。。。 难道没有人会吗 一个文本框控件,我如何让它显示16进制的数? EnumProcesses包含在哪个头文件中? Unable to open file 'XMLCOMPONENT.BPI' DLL里面县是一个模式对话框 请教高手! 如何获取IE窗口里EDIT框的句柄?谢谢! 那里有简单的字符串加密和解密C/C++程序参考 有没有介绍Visual SourceSafe的书
{
OSVERSIONINFOEX osvi;
BOOL bOsVersionInfoEx;
//char * s = new char[ 100 ];
memset( sql, 0, 100 );
#define a( t ) strcat( sql, t ) ZeroMemory( &osvi, sizeof( OSVERSIONINFOEX ) );
osvi.dwOSVersionInfoSize = sizeof( OSVERSIONINFOEX );
a( " -->" ); if( !( bOsVersionInfoEx = GetVersionEx( ( OSVERSIONINFO * ) &osvi ) ) )
{
osvi.dwOSVersionInfoSize = sizeof ( OSVERSIONINFO );
if ( !GetVersionEx ( ( OSVERSIONINFO * ) &osvi) )
{
//delete []s;
return;
}
}
switch (osvi.dwPlatformId)
{
case VER_PLATFORM_WIN32_NT:
if( osvi.dwMajorVersion <= 4 )
a( "Microsoft Windows NT " );
if( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0 )
a( "Microsoft Windows 2000 " );
if( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1 )
a( "Microsoft Windows XP " );
if( bOsVersionInfoEx )
{
if ( osvi.wProductType == VER_NT_WORKSTATION )
{
if( osvi.wSuiteMask & VER_SUITE_PERSONAL )
a( "Personal " );
else
a( "Professional " );
}
else if ( osvi.wProductType == VER_NT_SERVER )
{
if( osvi.wSuiteMask & VER_SUITE_DATACENTER )
a ( "DataCenter Server " );
else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
a ( "Advanced Server " );
else
a ( "Server " );
}
}
else
{
HKEY hKey;
char szProductType[80];
DWORD dwBufLen; RegOpenKeyEx( HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control\\ProductOptions", 0, KEY_QUERY_VALUE, &hKey );
RegQueryValueEx( hKey, "ProductType", NULL, NULL, ( LPBYTE )szProductType, &dwBufLen );
RegCloseKey( hKey );
if( lstrcmpi( "WINNT", szProductType ) == 0 )
a( "Professional " );
if( lstrcmpi( "LANMANNT", szProductType ) == 0 )
a( "Server " );
if( lstrcmpi( "SERVERNT", szProductType ) == 0 )
a( "Advanced Server " );
} if ( osvi.dwMajorVersion <= 4 )
{
CString s0;
s0.Format( "version %d.%d %s ( Build %d )", osvi.dwMajorVersion, osvi.dwMinorVersion, osvi.szCSDVersion, osvi.dwBuildNumber & 0xFFFF );
a( ( LPCTSTR )s0 );
}
else
{
CString s1;
s1.Format( "%s ( Build %d )", osvi.szCSDVersion, osvi.dwBuildNumber & 0xFFFF );
a( ( LPCTSTR )s1 );
}
break; case VER_PLATFORM_WIN32_WINDOWS: if ( osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 0 )
{
a( "Microsoft Windows 95 " );
if ( osvi.szCSDVersion[ 1 ] == 'C' || osvi.szCSDVersion[ 1 ] == 'B' )
a( "OSR2 " );
}
if ( osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 10 )
{
a( "Microsoft Windows 98 " );
if ( osvi.szCSDVersion[1] == 'A')
a( "SE " );
}
if ( osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 90 )
{
a( "Microsoft Windows Me " );
}
break; case VER_PLATFORM_WIN32s:
a( "Microsoft Win32s" );
break;
}
DispMessage( ( LPCTSTR )sql );
//delete []s;
return;
}