社本@元ネオニート Blog

社本@元ネオニート (元々ワック) のいたずら書き (for Programmers)

AILight Banner
AILight Blog

プロフィール

社本@元ネオニート Blog
働いたら負けかなと思っていたのですが。。とうとう働き始めました。アメリカのシアトル・エリアにある企業向けのバックアップソフトを開発している会社です。日本人は私だけ。なんとか。。やっていけてるようです。

目次

Blog 利用状況

記事分類

過去の記事

タグ

保護モード (Protected Mode) API のラッパ関数 - Windows Vista/Internet Explorer 7

IE7の保護モード (Protected Mode) API を、動的に呼び出すラッパ関数です。
この保護モードは、UACの機構を使っているため、Vistaのみの機能となります。

---
 static HRESULT Probe_IECancelSaveFile(HANDLE hState)
 {
  CModule module;

  HINSTANCE hInst = module.LoadLibrary(_T("ieframe.dll"));
  if (hInst == NULL)
  {
   return E_NOTIMPL; 
  }

  typedef HRESULT (WINAPI *FUNC_IECANCELSAVEFILE) (HANDLE);
  CString strFuncName = _T("IECancelSaveFile");
  FUNC_IECANCELSAVEFILE func = (FUNC_IECANCELSAVEFILE)module.GetProcAddress(strFuncName);
  if (func == NULL)
  {
   return E_NOTIMPL; 
  }

  return (*func)(hState);
 }
 static HRESULT Probe_IEGetWriteableFolderPath(GUID Guid,  LPWSTR* lppwstrPath)
 {
  CModule module;

  HINSTANCE hInst = module.LoadLibrary(_T("ieframe.dll"));
  if (hInst == NULL)
  {
   return E_NOTIMPL; 
  }

  typedef HRESULT (WINAPI *FUNC_IEGETWRITEABLEFOLDERPATH) (GUID, LPWSTR*);
  CString strFuncName = _T("IEGetWriteableFolderPath");
  FUNC_IEGETWRITEABLEFOLDERPATH func = (FUNC_IEGETWRITEABLEFOLDERPATH)module.GetProcAddress(strFuncName);
  if (func == NULL)
  {
   return E_NOTIMPL; 
  }

  return (*func)(Guid, lppwstrPath);
 }
 static HRESULT Probe_IEGetWriteableHKCU(HKEY* phKey)
 {
  CModule module;

  HINSTANCE hInst = module.LoadLibrary(_T("ieframe.dll"));
  if (hInst == NULL)
  {
   return E_NOTIMPL; 
  }

  typedef HRESULT (WINAPI *FUNC_IEGETWRITEABLEHKCU) (HKEY*);
  CString strFuncName = _T("IEGetWriteableHKCU");
  FUNC_IEGETWRITEABLEHKCU func = (FUNC_IEGETWRITEABLEHKCU)module.GetProcAddress(strFuncName);
  if (func == NULL)
  {
   return E_NOTIMPL; 
  }

  return (*func)(phKey);
 }
 static HRESULT Probe_IEIsProtectedModeProcess(BOOL* pbResult)
 {
  CModule module;

  HINSTANCE hInst = module.LoadLibrary(_T("ieframe.dll"));
  if (hInst == NULL)
  {
   return E_NOTIMPL; 
  }

  typedef HRESULT (WINAPI *FUNC_IEISPROTECTDMODEPROCESS) (BOOL*);
  CString strFuncName = _T("IEIsProtectedModeProcess");
  FUNC_IEISPROTECTDMODEPROCESS func = (FUNC_IEISPROTECTDMODEPROCESS)module.GetProcAddress(strFuncName);
  if (func == NULL)
  {
   return E_NOTIMPL; 
  }

  return (*func)(pbResult);
 }
 static HRESULT Probe_IEIsProtectedModeURL(LPWSTR* pszUrl)
 {
  CModule module;

  HINSTANCE hInst = module.LoadLibrary(_T("ieframe.dll"));
  if (hInst == NULL)
  {
   return E_NOTIMPL; 
  }

  typedef HRESULT (WINAPI *FUNC_IEISPROTECTEDMODEURL) (LPWSTR*);
  CString strFuncName = _T("IEIsProtectedModeURL");
  FUNC_IEISPROTECTEDMODEURL func = (FUNC_IEISPROTECTEDMODEURL)module.GetProcAddress(strFuncName);
  if (func == NULL)
  {
   return E_NOTIMPL; 
  }

  return (*func)(pszUrl);
 }
 static HRESULT Probe_IELaunchURL(LPCWSTR pszUrl, LPPROCESS_INFORMATION pProcInfo, LPVOID lpInfo)
 {
  CModule module;

  HINSTANCE hInst = module.LoadLibrary(_T("ieframe.dll"));
  if (hInst == NULL)
  {
   return E_NOTIMPL; 
  }

  typedef HRESULT (WINAPI *FUNC_IELAUNCHURL) (LPCWSTR, LPPROCESS_INFORMATION, LPVOID);
  CString strFuncName = _T("IELaunchURL");
  FUNC_IELAUNCHURL func = (FUNC_IELAUNCHURL)module.GetProcAddress(strFuncName);
  if (func == NULL)
  {
   return E_NOTIMPL; 
  }

  return (*func)(pszUrl, pProcInfo, lpInfo);
 }
 static HRESULT Probe_IESaveFile(HANDLE hState, LPWSTR lpwstrSourceFile)
 {
  CModule module;

  HINSTANCE hInst = module.LoadLibrary(_T("ieframe.dll"));
  if (hInst == NULL)
  {
   return E_NOTIMPL; 
  }

  typedef HRESULT (WINAPI *FUNC_IESAVEFILE) (HANDLE, LPWSTR);
  CString strFuncName = _T("IESaveFile");
  FUNC_IESAVEFILE func = (FUNC_IESAVEFILE)module.GetProcAddress(strFuncName);
  if (func == NULL)
  {
   return E_NOTIMPL; 
  }

  return (*func)(hState, lpwstrSourceFile);
 }
 static HRESULT Probe_IEShowSaveFileDialog(
  HWND hwnd, 
  LPWSTR lpwstrInitialFileName, 
  LPWSTR lpwstrInitialDir, 
  LPCWSTR lpwstrFilter,
  LPCWSTR lpwstrDefExt,
  DWORD dwFilterIndex,
  DWORD dwFlags,
  LPWSTR *lppwstrDestinationFilePath,
  HANDLE *phState)
 {
  CModule module;

  HINSTANCE hInst = module.LoadLibrary(_T("ieframe.dll"));
  if (hInst == NULL)
  {
   return E_NOTIMPL; 
  }

  typedef HRESULT (WINAPI *FUNC_IESAVEFILEDIALOG)(HWND, LPWSTR, LPWSTR, LPCWSTR, LPCWSTR, DWORD, DWORD, LPWSTR*, HANDLE*);
  CString strFuncName = _T("IEShowSaveFileDialog");
  FUNC_IESAVEFILEDIALOG func = (FUNC_IESAVEFILEDIALOG)module.GetProcAddress(strFuncName);
  if (func == NULL)
  {
   return E_NOTIMPL; 
  }

  return (*func)(hwnd, lpwstrInitialFileName, lpwstrInitialDir, lpwstrFilter, lpwstrDefExt, dwFilterIndex, dwFlags, lppwstrDestinationFilePath, phState);
 }
---

■DLLを扱うクラス (CModule) - for Programmers
http://www.wac-jp.com/programmers/win32/Module.html

投稿日時 : 2007年1月18日 17:16


コメントを追加

#  IEの起動 - Windows Vista/Internet Explorer 7 2007年1月30日 16:46 社本@ワック Blog

IEの起動 - Windows Vista/Internet Explorer 7
タイトル
名前
URL
コメント