私は現在、現在のタブの内容を取得して操作できるはずの C# で IE ツールバー ボタンを開発しています。ただし、ボタンがクリックされるたびに、 IObjectWithSite.SetSite 関数が呼び出され (私のコードは最後に投稿されます)、次のエラーが返されます。
タイプ 'System.__ComObject' の COM オブジェクトをインターフェイス タイプ SHDocVw.IWebBrowser2' にキャストできません。IID のインターフェイスに対する COM コンポーネントでの QueryInterface 呼び出しが原因で、この操作は失敗しました '
この関数は、サイトが読み込まれると正しく機能しますが、ツールバーのボタンがクリックされたときにのみこのエラーがスローされます。前に述べたように、SetSite 関数が呼び出され、次に IOleCommandTarget.Exec 関数が呼び出されます。
私の質問は、SetSite 関数に渡されるオブジェクトをキャストして、Internet Explorer が現在開いているタブのドキュメントにアクセスできるようにするにはどうすればよいかということだと思います。
これらの 2 つの関数に関連する現在のコードは次のとおりです。
int IObjectWithSite.SetSite(object site)
{
String display = "";
try { browser = (IWebBrowser2)site;}
catch (Exception e) { display += e.Message + "\r\n"; }
System.Windows.Forms.MessageBox.Show(display);
return 0;
}
int IOleCommandTarget.Exec(IntPtr pguidCmdGroup, uint nCmdID, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut)
{
if (form == null)
{
form = new SomeForm();
form.InputText = "";
}
form.ShowDialog();
return 0;
}
前もって感謝します。