• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++基础--获取部分系统信息

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
///
///获取系统信息Demo
///
#include "stdafx.h"
#include<windows.h>
#include<conio.h>
#include<tchar.h>
#include<locale.h>
#include"Reader.h"
#include"Writer.h"
#include<stdlib.h>
#include<iostream>
using namespace  std;
wchar_t* envVarStrings[]=
{
			TEXT("OS					=%OS%"),
			TEXT("PATH				=%PATH%"),
			TEXT("HOMEPATH	=%HOMEPATH%"),
			TEXT("TEMP				=%TEMP%")
};
#define ENV_VAR_STRING_COUNT (sizeof(envVarStrings)/sizeof(wchar_t*))
#define INFO_BUFFER_SIZE	32767
void printError(wchar_t* msg);
int _tmain(int argc, _TCHAR* argv[])
{
	DWORD i;
	wchar_t infoBuf[INFO_BUFFER_SIZE];
	DWORD bufCharCount=INFO_BUFFER_SIZE;
	//Get and display the name of the computer
	bufCharCount=INFO_BUFFER_SIZE;
	if(!GetComputerName(infoBuf,&bufCharCount))
		printError(L"GetComputerName");
	wcout.imbue(std::locale("chs"));
	wcout<<endl<<"Computer name:"<<infoBuf<<endl;

	//Get and display the user name
	bufCharCount=INFO_BUFFER_SIZE;
	if(!GetUserName(infoBuf,&bufCharCount))
	printError(L"GetUserName:");
	wcout<<"User Name:"<<infoBuf<<endl;

	//Get and display the system directoy.
	if(!GetSystemDirectory(infoBuf,INFO_BUFFER_SIZE))
		printError(L"System Directory");
	wcout<<"System Directory:"<<infoBuf<<endl;

	//Get and display the Windows directory.
	if(!GetWindowsDirectory(infoBuf,INFO_BUFFER_SIZE))
		printError(L"Get System Directory");
	wcout<<"Windows Directory:"<<infoBuf<<endl;

	//Expand and display a few environment variables
	wcout<<"Small selection of Environment Variables:"<<endl;
	for(i=0;i<ENV_VAR_STRING_COUNT;i++)
	{
		bufCharCount=ExpandEnvironmentStrings(envVarStrings[i],infoBuf,INFO_BUFFER_SIZE);
		if(bufCharCount>INFO_BUFFER_SIZE)
			wcout<<"Buffer too small to expand :"<<envVarStrings[i]<<endl;
		else if(!bufCharCount)
			printError(L"Expand Environment Strings ");
			wcout<<infoBuf<<endl;
	}
	wcout<<"\n\n";
	cin.get();
	return 0;
}
void printError(wchar_t* msg)
{
	DWORD eNum;
	TCHAR sysMsg[256];
	TCHAR* p;
	eNum=GetLastError();
	FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|
		FORMAT_MESSAGE_IGNORE_INSERTS,
		NULL,eNum,
		MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),
		sysMsg,256,NULL);
	p=sysMsg;
	while((*p>31||(*p==9)))
	{
		++p;
	}
	do{*p--==0;}while((p >= sysMsg ) &&
		( ( *p == '.') || ( *p<33 ) ));
	wcout<<"\n\t"<<msg<<"failed with error "<<eNum<<" ("<<msg<<")"<<endl;
}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
用过的一些c++xll开源库发布时间:2022-07-14
下一篇:
C++通过函数访问QML发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap