1.获取IE文件夹路径
void CGetCatchPathDlg::OnGet()
{
HKEY hKEY;
LPCTSTR data_Set="Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\\";
long ret0=(::RegOpenKeyEx(HKEY_CURRENT_USER,data_Set, 0, KEY_READ, &hKEY));
if(ret0!=ERROR_SUCCESS)
{
MessageBox("错误: 无法打开有关的hKEY!");
return ;
}
LPBYTE data=new BYTE[80];
DWORD type_1=REG_SZ ;
DWORD cbData_1=80;
long ret1 = ::RegQueryValueEx(hKEY, "Cache", NULL, &type_1, data, &cbData_1);
if(ret1 != ERROR_SUCCESS)
{
MessageBox("错误: 无法查询有关注册表信息!");
return ;
}
CString str_owner=CString(data);
delete[] data;
GetDlgItem(IDC_STATIC)->SetWindowText( str_owner );
::RegCloseKey(hKEY);
}
2.获取CPU信息
unsigned _int64 Count(void)
{
_asm _emit 0x0F
_asm _emit 0x31
}
void CGetCPUInfoDlg::OnGet()
{
HKEY hKey;
SYSTEM_INFO SysInfo;
CString strInfo,str;
LPCTSTR StrKey="HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0";
long ret = (::RegOpenKeyEx(HKEY_LOCAL_MACHINE,StrKey,
NULL,KEY_ALL_ACCESS,&hKey));
if (ERROR_SUCCESS != ret)
{
MessageBox("错误:无法打开HKEY");
return;
}
char name[256]; //CPU名称
DWORD dwType=REG_SZ;
DWORD dwSize_name=255;
ret = (::RegQueryValueEx(hKey,"ProcessorNameString",
0,&dwType,(BYTE *)name,&dwSize_name));
if (ERROR_SUCCESS!= ret)
{
MessageBox("错误:无法查询相关的注册表信息");
return;
}
strInfo.Format("CPU名称 :%s", name);
str+=( strInfo );
str += "\n";
char maker[256]; //CPU制造商
DWORD dwSize_maker=255;
ret = (::RegQueryValueEx(hKey,"VendorIdentifier",
0,&dwType,(BYTE *)maker,&dwSize_maker));
if (ERROR_SUCCESS!= ret)
{
MessageBox("错误:无法查询相关的注册表信息");
return;
}
strInfo.Format("CPU制造商:%s",maker);
str+=( strInfo );
str += "\n";
::RegCloseKey(hKey);
GetSystemInfo(&SysInfo); //CPU数量
strInfo.Format("CPU数量 :%d", SysInfo.dwNumberOfProcessors);
str+=( strInfo );
str += "\n";
unsigned _int64 start= Count(); //CPU主频
Sleep(1000);
unsigned _int64 end = Count();
unsigned _int64 tick = (end-start)/1000000;
strInfo.Format("CPU主频 :%ld MHz",tick);
str+=( strInfo );
GetDlgItem(IDC_STATIC)->SetWindowText( str );
}
3.获取程序的当前路径
char buffer[256];
GetCurrentDirectory(255,buffer);
CString str;
str = CString( buffer );
GetDlgItem(IDC_STATIC)->SetWindowText( str );
4.获取C盘信息
void CGetDirverSizeDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CString StrTotalsize,StrFreesize,StrUsedsize,StrInfo;
/*typedef union _ULARGE_INTEGER {
struct {
DWORD LowPart;
DWORD HighPart;
};
struct {
DWORD LowPart;
DWORD HighPart;
} u;
ULONGLONG QuadPart;
} ULARGE_INTEGER;*/
//定义三个ULARGE_INTERGE类型变量
ULARGE_INTEGER nTotalBytes, nTotalFreeBytes, nTotalAvailable;
//获取磁盘空间信息
if( ::GetDiskFreeSpaceEx("C:", &nTotalAvailable, &nTotalBytes, &nTotalFreeBytes))
{
//计算总空间大小
StrTotalsize.Format("%ld MB\n",nTotalBytes.QuadPart/1024/1024);
//计算剩余空间大小
StrFreesize.Format("%ld MB\n",nTotalFreeBytes.QuadPart/1024/1024);
//计算已用空间大小
StrUsedsize.Format("%ld MB",nTotalBytes.QuadPart/1024/1024-nTotalFreeBytes.QuadPart/1024/1024);
}
StrInfo+=StrTotalsize+StrFreesize+StrUsedsize;
//赋值给控件变量
m_total = StrTotalsize;
m_free = StrFreesize;
m_left = StrUsedsize;
//更新控件内容
UpdateData(FALSE);
}
5.获取驱动器
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
m_comboList.ResetContent(); //清空combo box
char drives[128]; //存储所以驱动器名称
char* pDrive; //驱动器指针
//取得系统的第一个逻辑驱动器
if (!GetLogicalDriveStrings(sizeof(drives), drives))
{
MessageBox("获取驱动器失败。");
return false;
}
pDrive = drives; //指向第一个逻辑驱动器
//将驱动器字符放入列表框中
while(*pDrive)
{
//将驱动器名称加入列表中
m_comboList.AddString(pDrive);
//指向下一个驱动器标识符
pDrive += strlen(pDrive) + 1;
}
void CGetDrivesDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
7.获取文件系统名称
void CGetFileSysNameDlg::OnButton1()
{
// TODO: Add your control notification handler code here
DWORD Length; //保存长度
TCHAR FileSystemName[MAX_PATH]; //保存文件系统名称,MAX_PATH=260
//GetVolunmeInformation 获取指定驱动器的文件系统
GetVolumeInformation("C:",NULL, MAX_PATH,NULL,&Length,NULL,FileSystemName,MAX_PATH);
//设置Edit控件
SetDlgItemText(IDC_EDIT1,FileSystemName);
}
8.获取系统文件类型
void CGetFileTypeDlg::OnGet()
{
// TODO: Add your control notification handler code here
HKEY hKey;
CString StrType;
long ret = (::RegOpenKeyEx(HKEY_CLASSES_ROOT,"",0,KEY_ENUMERATE_SUB_KEYS,&hKey));
if(ERROR_SUCCESS != ret )
{
MessageBox("错误:无法打开相关的HKEY");
return;
}
DWORD dwIndex=0;
char Name[100];
SHFILEINFO shSmall;
while(RegEnumKey(hKey,dwIndex++,Name,100)==ERROR_SUCCESS)
{
if(Name[0]!='.')
{
continue;
}
ZeroMemory(&shSmall,sizeof(shSmall));
SHGetFileInfo(Name,FILE_ATTRIBUTE_NORMAL,&shSmall,sizeof(shSmall),
SHGFI_USEFILEATTRIBUTES|SHGFI_DISPLAYNAME|SHGFI_TYPENAME|
SHGFI_ICON|SHGFI_SMALLICON);
StrType+="文件扩展名:";
StrType+=Name;
StrType+=" 文件类型:";
StrType+=shSmall.szTypeName;
m_list.AddString( StrType );
StrType = "";
}
::RegCloseKey(hKey);
}
9.系统字体文件夹位置
TCHAR szPath[MAX_PATH];
SHGetSpecialFolderPath( NULL, szPath, CSIDL_FONTS, false );
CString str;
str = CString( szPath );
GetDlgItem(IDC_STATIC)->SetWindowText( str );
10.获取IE版本
HKEY hKEY;
LPCTSTR data_Set="Software\\Microsoft\\Internet Explorer\\";
long ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set,
0, KEY_READ, &hKEY));
if(ret0!=ERROR_SUCCESS)
{
MessageBox("错误: 无法打开有关的hKEY!");
return false;
}
LPBYTE data=new BYTE[80];
DWORD type_1=REG_SZ ;
DWORD cbData_1=80;
long ret1 = ::RegQueryValueEx(hKEY, "Version",
NULL, &type_1, data, &cbData_1);
if(ret1 != ERROR_SUCCESS)
{
MessageBox("错误: 无法查询有关注册表信息!1");
return false;
}
CString str_owner=CString(data);
delete[] data;
GetDlgItem(IDC_STATIC)->SetWindowText( str_owner );
::RegCloseKey(hKEY);
11.查询子目录
void CGetSubFileDlg::OnFile()
{
UpdateData(true);
FindAllFilesInPath( m_strPath );
}
void CGetSubFileDlg::FindAllFilesInPath(CString strPath)
{
HANDLE hFile;
WIN32_FIND_DATA fndInfo;
char strPathName[MAX_PATH];
memset(strPathName, 0, MAX_PATH);
sprintf(strPathName, "%s\\*.*", strPath);
hFile = ::FindFirstFile(strPathName, &fndInfo);
do
{
if(hFile==INVALID_HANDLE_VALUE)
{
return;
}
else
{
if(fndInfo.cFileName[0]=='.')
{
continue;
}
char strNewName[MAX_PATH];
memset(strNewName, 0, MAX_PATH);
sprintf(strNewName, "%s\\%s", strPath, fndInfo.cFileName);
if(fndInfo.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) //子目录
{
FindAllFilesInPath(strNewName);
}
else//文件
{
m_list.AddString( strNewName );
}
}
}
while( ::FindNextFile(hFile, &fndInfo) );
::FindClose(hFile);
}