SHGetInstanceExplorer()が失敗してしまいます

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
THEREMIN
記事: 36
登録日時: 2007年2月11日(日) 01:52
お住まい: HYOGO pref.

SHGetInstanceExplorer()が失敗してしまいます

#1 投稿記事 by THEREMIN »

以下のフォーラムの投稿を読んで、SHGetInstanceExplorerを使ってみたのですが、どうしても 80004005(Unspecified error)が出てしまいます。
http://forums.belution.com/ja/vc/000/089/87.shtml

コード: 全て選択

Declare Function SHGetInstanceExplorer Lib "shell32.dll" (ByRef ppunk As *IUnknown) As Long
'--------------------------------------------------------------------------------
Dim hr As Long
Dim piu As *IUnknown
Dim pMalloc As *IMalloc
hr = CoInitialize(0)
hr = CoGetMalloc(1, pMalloc)
hr =SHGetInstanceExplorer(piu)
debug
pMalloc->Release()
CoUninitialize()
Declare Function SHGetInstanceExplorer Lib "shell32.dll" (ppunk As **IUnknown) As Long
hr =SHGetInstanceExplorer(VarPtr(piu))
にしてもやっぱり同じエラーです。

MSDN2を参照してみると、
SHGetInstanceExplorer succeeds only if it is called from within an Explorer.exe or Iexplorer.exe process.
http://msdn2.microsoft.com/en-us/ms647769.aspx
と書いてあるので、ExplorerかIEの内部から呼ぶ必要がある?のだと思うのですが、そのやり方がさっぱり分かりません。
それ以前に、この考え方が正しいのかどうかもわかりません。MSDN2には
SHGetInstanceExplorer fails if the component is running in the default Explorer.exe process.
とも書いてあるんですが・・・
trio

#2 投稿記事 by trio »

英文を全く読む気がないので無視してもらって構いません(二週間も前の記事だしね…)

本当にExplorerかIEの内部からしか呼べないのであれば
自分でIEやExplorerのプロセスを起動するか
既存のスレッドにフックを仕掛けるかのどちらかしかないと思います

フックに関してはSetWindowsHookExで検索すればどこかしら引っかかる筈です
自前でプロセス起動するよりも数段面倒くさいですが
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

#3 投稿記事 by イグトランス »

この関数はシェル拡張などでexplorer/iexploreのプロセス内で動くコンポーネントを対象としているようです。フックでプロセスに入って使うものではないと思います。
THEREMIN
記事: 36
登録日時: 2007年2月11日(日) 01:52
お住まい: HYOGO pref.

まさか返事が来るとは思ってなかった

#4 投稿記事 by THEREMIN »

シェル拡張ですか。
普通のプログラムからは使えない関数だと認識しておきます。
返信する