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