Visual C++范例开发大全源程序---学习笔记 3 .

  

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);

}

此资源是《Visual C++范例开发大全》配套全部源码,解压后1.3G,精心挑选了有代表意义的406个实例,在我发布的资源里也有配套pdf。 《Visual C++范例开发大全》共17章,分4篇。主要内容包括Visual C++的基础界面、文档视图、对话框的调用和使用方法及常见控件的使用方法和技巧;文件系统、图形图像程序、音频与视频、键盘、光标及操作系统的应用与技巧; Visual C++数据库开发、进程和线程、动态链接库、ActiveX和COM组件的应用和技巧; Visual C++网络应用程序的开发和技巧、特殊文件(如XML、HTML、Word、Excel)的处理方法和常见的一些操作技巧。 第1篇 VC++入门与基本文档视图 第1章 Visua C++ 6.0 MFc程序设计快速入门(教学视频:5分钟) 第2章 文档视图应用程序实例(教学视频:159分钟) 第3章 对话框应用实例(舻教学视频:82分钟) 第4章 控件应用实例(教学视频:150分钟) 第2篇文件、系统、输入输出和音频视频 第5章 文件系统应用实例(7r教学视频:85分钟) 第6章 图形图像程序应用实例(教学视频:211分钟) 第7章 音频和视频应用实例(教学视频:40分钟) 第8章 操作系统应用实例(教学视频:293分钟) 第9章 鼠标及键盘应用实例(教学视频:25分钟) 第10章 光标与图标应用实例(教学视频:36分钟) 第3篇 数据库、进程和动态链接库 第11章 数据库技术应用实例(教学视频:131分钟) 第12章 进程和线程应用实例(教学视频:107分钟) 第13章 动态链接库(教学视频:48分钟) 第14章 ActiveX控件和COM组件(教学视频:33分钟) 第4篇 网络技术及其他特殊操作技巧 第15章 网络开发技术应用实例(教学视频:107分钟) 第16章 操作XML、HTML、Word与Excel文件(教学视频:128分钟) 第17章 VC 6.0其他编程实例(教学视频:144分钟)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值