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

来源:互联网 发布:小米直播软件下载 编辑:程序博客网 时间:2024/05/29 04:45

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

原创粉丝点击