2009/09/18(Fri) 00:05:30 編集(投稿者)
■No41333 (RT さん) に返信
> しかし、別のフォームで、webBrowser1のようなコントロール名を使うとエラーが出ます。
実行時エラー(例外)ですか? コンパイルエラーですか?
そのエラーとは、具体的にはどのような内容ですか?
「webBrowser1のような」コントロール名を使うとは、
具体的にはどのようなコードになっているのでしょうか?
> また、findTextの第一引数には、
findText の各引数の意味について。
http://msdn.microsoft.com/en-us/library/aa741525.aspx
http://msdn.microsoft.com/ja-jp/library/cc428095.aspx
> SelectedTextのような、プロパティが、ウェブブラウザにはないようです。
本題からは外れるのですが、そもそもこれらは WebBrowser 自体の機能ではありません。
WebBrowser に表示された HTML に対する DOM の機能です。
WebBrowser に何を表示させるかによって、使用可能な機能も操作方法も異なります。
たとえば、HTML ではなくフォルダを表示させれば、HTML 用の操作手順は使えず、
フォルダ用の操作手順が必要になります。Excel ブックを表示させれば、Excel に対する
操作手順が必要になります。
// フォルダを表示させた場合の操作例
private void Form1_Load(object sender, EventArgs e)
{
button2.Enabled = false;
}
private void button1_Click(object sender, EventArgs e)
{
const int ssfDESKTOP = 0;
const int ssfSTARTMENU = 11;
const int ssfWINDOWS = 36;
object wb = webBrowser1.ActiveXInstance;
wb.GetType().InvokeMember("Navigate2",
System.Reflection.BindingFlags.InvokeMethod,
null, wb, new object[] { ssfDESKTOP });
button2.Enabled = true;
}
private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show(webBrowser1.DocumentTitle);
MessageBox.Show(webBrowser1.Url.ToString());
object wb = webBrowser1.ActiveXInstance;
object doc = wb.GetType().InvokeMember("Document",
System.Reflection.BindingFlags.GetProperty,
null, wb, new object[0]);
object folderItem = doc.GetType().InvokeMember("FocusedItem",
System.Reflection.BindingFlags.GetProperty,
null, doc, new object[0]);
if (folderItem == null)
{
MessageBox.Show("フォーカス無し");
}
else
{
object name = folderItem.GetType().InvokeMember("Name",
System.Reflection.BindingFlags.GetProperty,
null, folderItem, new object[0]);
MessageBox.Show(((string)name) + "にフォーカスがあります。");
}
object folderItems = doc.GetType().InvokeMember("SelectedItems",
System.Reflection.BindingFlags.InvokeMethod,
null, doc, new object[0]);
int count = (int)folderItems.GetType().InvokeMember("Count",
System.Reflection.BindingFlags.GetProperty,
null, folderItems, new object[0]);
MessageBox.Show(count + "個のフォルダ/ファイルが選択されています。");
}