Windows Vista IE 7保护模式开发者生存指南
2008-08-22 17:24:11 来源:WEB开发网下面示例代码中首先调用IEShowSaveFileDialog()提示用户输入文件路径:
void CBandDialog::OnSaveLog(UINT uCode, int nID, HWND hwndCtrl)
{
HRESULT hr;
HANDLE hState;
LPWSTR pwszSelectedFilename = NULL;
const DWORD dwSaveFlags =
OFN_ENABLESIZING | OFN_HIDEREADONLY | OFN_PATHMUSTEXIST |
OFN_OVERWRITEPROMPT;
// Get a filename from the user.
hr = IEShowSaveFileDialog (
m_hWnd, L"Saved log.txt", NULL,
L"Text files|*.txt|All files|*.*|",
L"txt", 1, dwSaveFlags, &pwszSelectedFilename,
&hState );
if ( S_OK != hr )
return;
接下来,调用IEGetWriteableFolderPath()获取可写的缓存目录路径:
LPWSTR pwszCacheDir = NULL;
TCHAR szTempFile[MAX_PATH] = {0};
// 获取IE缓存目录路径,其为保护模式下可写的目录
hr = IEGetWriteableFolderPath ( FOLDERID_InternetCache, &pwszCacheDir );
if ( SUCCEEDED(hr) )
{
// 得到目录中的一个临时文件名
GetTempFileName ( CW2CT(pwszCacheDir), _T("bob"), 0, szTempFile );
CoTaskMemFree ( pwszCacheDir );
// 把数据写到临时文件中
hr = WriteLogFile ( szTempFile );
}
如果一切正常,接着会调用IESaveFile(),IESaveFile()接受IEShowSaveFileDialog()返回的状态句柄及临时文件路径作为参数,要注意的是,这个HANDLE不是标准的句柄,其无需关闭,在调用完IESaveFile()之后,HANDLE会自动释放。
更多精彩
赞助商链接