工控编程吧
标题:
205上位机VC MFC获取计算机名用户名等信息
[打印本页]
作者:
qq263946146
时间:
2016-1-29 22:08
标题:
205上位机VC MFC获取计算机名用户名等信息
(, 下载次数: 3)
上传
点击文件名下载附件
205上位机VC MFC获取计算机名用户名等信息
功能展示
电脑都有用户名,计算机名等信息,用户可以用鼠标进行获取与设置也以编写代码实现,当前例程实现电脑系统计算机名用户名的获取与设置,效果如图;
要点提示
电脑用户名的获取可以用函数GetUserName() 计算机名可以用函数GetComputerName()获取,计算机名设置可以用函数SetComputerName()实现;
一.GetUserName() 函数原型GetUserName(lpBuffer: PChar; {缓冲区}var nSize: DWORD {缓冲区大小}):
参数定义:
参数 类型及说明
1.lpBuffer String,一个字串缓冲区,预先初始化成由nSize指定的长度。它将用于容纳用户名,是获取名称缓冲区。
2.nSize Long,初始化成lpBuffer的长度。返回以后,它会包含载入lpBuffer的字符数量 ,是缓冲区的大小和返回帐号的大小
二. GetComputerName()函数原型:BOOL WINAPIGetComputerName(__out LPTSTRlpBuffer,__inout LPDWORDlpnSize);
参数定义:
1.lpBuffer [out]指向一块内存缓冲区,这个缓冲区用于接收计算机名称或群集的虚拟服务器名称。缓冲区的大小应该足够大,以便能够容纳MAX_COMPUTERNAME_LENGTH + 1个字符。
2.lpnSize [in, out]在输入时,指定的缓冲区的大小,这个大小是按照TCHAR计算的。
在输出的时候,字符的长度不包括终止空字符\0。如果缓冲区太小,该函数将失败,调用GetLastError返回ERROR_BUFFER_OVERFLOW。
实现功能
1.新建基于对话框的应用程序
2.拖拽一编辑框ID为IDC_EDIT1,用于显示获取信息;依次添加按钮<获取电脑拥有者名称><获取系统用户名><获取计算机名><设置电脑名称>实现相应功能
void CGkbc8Dlg::OnPcownername()
{
CString sText="电脑拥有者:";
HKEY hKey;
LPCTSTR StrKey="Software\\Microsoft\\Windows NT\\CurrentVersion";
if (ERROR_SUCCESS==::RegOpenKeyEx(HKEY_LOCAL_MACHINE,StrKey,NULL,KEY_ALL_ACCESS,&hKey))
{
DWORD dwSize=255,dwType=REG_SZ;
char String[256];
LPCSTR KeyValue="RegisteredOwner";
if (ERROR_SUCCESS==::RegQueryValueEx(hKey,KeyValue,0,&dwType,(BYTE *)String,&dwSize))
sText+=String;
}
sText+="\r\n电脑所有者单位:";
if (ERROR_SUCCESS==::RegOpenKeyEx(HKEY_LOCAL_MACHINE,StrKey,NULL,KEY_ALL_ACCESS,&hKey))
{
DWORD dwSize=255,dwType=REG_SZ;
char String[256];
LPCSTR KeyValue="RegisteredOrganization";
if (ERROR_SUCCESS==::RegQueryValueEx(hKey,KeyValue,0,&dwType,(BYTE *)String,&dwSize))
sText+=String;
::RegCloseKey(hKey);
}
MessageBox(sText);}
复制代码
void CGkbc8Dlg::OnUsername()
{
char cName[_MAX_PATH];
DWORD dwSize=_MAX_PATH;
::GetUserName(cName,&dwSize);
//<>
SetDlgItemText(IDC_EDIT1,cName);
}
void CGkbc8Dlg::OnPcname()
{
char cName[_MAX_PATH];
DWORD dwSize=_MAX_PATH;
::GetComputerName(cName,&dwSize);
//<>
SetDlgItemText(IDC_EDIT1,cName);
}
void CGkbc8Dlg::OnSetpcname() //要权限
{
CString sComputerName="gkbc8";
if(::SetComputerName(sComputerName))
MessageBox("设置成功,重启电脑生效","提示",MB_OK);
}
复制代码
另外计算机名的设置 在WIN7上得获得管理员权限,具体获取方法前面例程已介绍过,也可看视频演示学习
我们来演示下功能实现的整个过程
[iqiyi]http://player.video.qiyi.com/7eda52d7113923268a132288e1cc0fa9/0/0/w_19rtakrpbp.swf-albumId=5264909209-tvId=5264909209-isPurchase=0-cnId=12[/iqiyi]
(, 下载次数: 0)
上传
点击文件名下载附件
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4