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

1.将网址添加到收藏夹

 void CAddFavotieDlg::OnAdd()
{
 CoInitialize(NULL);
 IShellUIHelper *pShell=NULL;
 HRESULT hr = CoCreateInstance(CLSID_ShellUIHelper,NULL,CLSCTX_INPROC_SERVER,
         IID_IShellUIHelper,(LPVOID*)&pShell);
 if(SUCCEEDED(hr))
 {
  COleVariant vtTitle("网易");
  pShell->AddFavorite(OLESTR("
http://www.163.com"),&vtTitle);
   pShell->Release();
 }
 CoUninitialize();
}

2.启用与禁用光驱的自动播放功能

void CAutoPlayDlg::OnProhibit()
{
 // TODO: Add your control notification handler code here
 HKEY hKey;
 DWORD Value = 0;  

 LPCTSTR StrKey="System\\CurrentControlSet\\Services\\CDRom";
 long ret = (::RegOpenKeyEx(HKEY_LOCAL_MACHINE,StrKey,
    NULL, KEY_ALL_ACCESS,&hKey));
 if (ERROR_SUCCESS != ret)
 {
  MessageBox("错误:无法打开相关的HKEY");
  return;
 }
  ret = (::RegSetValueEx(hKey,"AUTORUN",
       0,REG_DWORD,(BYTE *)&Value,sizeof(Value)));
 if(ERROR_SUCCESS != ret)
 {
  MessageBox("错误:无法设置相关的注册表项");
  return;
 }
 if(MessageBox("需重启计算机,设置才会生效","信息提示",MB_OKCANCEL) == IDOK)
 {
  HANDLE hToken;
  TOKEN_PRIVILEGES tkp;
  OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES |  TOKEN_QUERY,&hToken);
  LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);
  tkp.PrivilegeCount = 1;  
  tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

  AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,  (PTOKEN_PRIVILEGES)NULL, 0);
  ExitWindowsEx(EWX_REBOOT,NULL);
 }
 ::RegCloseKey(hKey);
}

void CAutoPlayDlg::OnEnable()
{

 HKEY hKey;
 DWORD Value = 1; 
 
 LPCTSTR StrKey="System\\CurrentControlSet\\Services\\CDRom";
 long ret = (::RegOpenKeyEx(HKEY_LOCAL_MACHINE,StrKey,NULL, KEY_ALL_ACCESS,&hKey));
 if (ERROR_SUCCESS != ret)
 {
  MessageBox("错误:无法打开相关的HKEY");
  return;
 }
  ret = (::RegSetValueEx(hKey,"AUTORUN",0,REG_DWORD,(BYTE *)&Value,sizeof(Value)));
  if(ERROR_SUCCESS != ret)
  {
   MessageBox("错误:无法设置相关的注册表项");
   return;
  }
   if(MessageBox("需重启计算机,设置才会生效","信息提示",MB_OKCANCEL) == IDOK)
   {
  HANDLE hToken;
  TOKEN_PRIVILEGES tkp;
  OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES |  TOKEN_QUERY,&hToken);
  LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);
  tkp.PrivilegeCount = 1;  
  tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
 
  AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,  (PTOKEN_PRIVILEGES)NULL, 0);
  ExitWindowsEx(EWX_REBOOT,NULL);
   }
  ::RegCloseKey(hKey);
}

3.控制光驱的弹开与关闭

void CCDAutomInOrOutDlg::OnOut()
{
 // TODO: Add your control notification handler code here
 long ret = ::mciSendString("set cdaudio door open",NULL,0,0);
 if(0 == ret)
 {
  m_out.EnableWindow( false );
  m_in.EnableWindow( true );
 }
 else
 {
  MessageBox("错误:命令执行失败!");
  return;
 }
}

void CCDAutomInOrOutDlg::OnIn()
{
 // TODO: Add your control notification handler code here
 long ret = ::mciSendString("set cdaudio door closed",NULL,0,0);
 if( 0 == ret )
 {
  m_out.EnableWindow( true );
  m_in.EnableWindow( false );
 }
 else
 {
  MessageBox("错误:命令执行失败!");
  return;
 }
}

4.清空IE临时文件夹

void CClearCacheDlg::OnClear()
{
 BOOL bResult = FALSE;
 BOOL bDone = FALSE;
 LPINTERNET_CACHE_ENTRY_INFO lpCacheEntry = NULL; 

 DWORD  dwTrySize, dwEntrySize = 4096;
 HANDLE hCacheDir = NULL;
 DWORD  dwError = ERROR_INSUFFICIENT_BUFFER;
 do
 {
  switch (dwError)
  {
   case ERROR_INSUFFICIENT_BUFFER:
    delete [] lpCacheEntry;
    lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize];
    lpCacheEntry->dwStructSize = dwEntrySize;
    dwTrySize = dwEntrySize;
    BOOL bSuccess;
    if (hCacheDir == NULL)
    {
     hCacheDir = FindFirstUrlCacheEntry(NULL, lpCacheEntry,&dwTrySize);
     bSuccess = ( hCacheDir != NULL );
    }
    else
    {
     bSuccess = FindNextUrlCacheEntry(hCacheDir, lpCacheEntry, &dwTrySize);
    }

    if (bSuccess)
    {
     dwError = ERROR_SUCCESS;
    }
    else
    {
     dwError = GetLastError();
     dwEntrySize = dwTrySize;
    }
    break;

   case ERROR_NO_MORE_ITEMS:
    bDone = TRUE;
    bResult = TRUE;
    break;

   case ERROR_SUCCESS: 
    //if (!(lpCacheEntry->CacheEntryType & COOKIE_CACHE_ENTRY))
    {
     DeleteUrlCacheEntry(lpCacheEntry->lpszSourceUrlName);
    }
    dwTrySize = dwEntrySize;
    if (FindNextUrlCacheEntry(hCacheDir, lpCacheEntry, &dwTrySize))
    {
     dwError = ERROR_SUCCESS;
    }
    else
    {
     dwError = GetLastError();
     dwEntrySize = dwTrySize;
    } 
    break;

   default:
    bDone = TRUE;
    break;
  }
  if (bDone)
  {
   delete [] lpCacheEntry;
   if (hCacheDir)
   {
    FindCloseUrlCache(hCacheDir);
   }
  }
 } while (!bDone);
 MessageBox("清除成功");
}

 

5.清空IE历史记录

void CClearDistoryDlg::OnClear()
{
 ::CoInitialize(NULL);
 HRESULT hr;
 IUrlHistoryStg2* pUrlHistoryStg2 = NULL;
 hr = CoCreateInstance(CLSID_CUrlHistory, NULL, CLSCTX_INPROC_SERVER,
                              IID_IUrlHistoryStg2, (void**)&pUrlHistoryStg2);
 if (SUCCEEDED(hr))
 {
  hr = pUrlHistoryStg2->ClearHistory();
  pUrlHistoryStg2->Release();
  MessageBox("IE历史记录清空成功");
 }
 ::CoUninitialize();
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
此资源是《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、付费专栏及课程。

余额充值