■26218 / inTopicNo.1) |
生成したスレッドからのIE操作でエラーが発生してしまいます。 |
□投稿者/ 次郎 (1回)-(2008/10/04(Sat) 00:32:19)
|
分類:[C#]
開発言語 C# (Visual Studio2005)
はじめまして、次郎と申します。
現在、起動済みのIEを取得して
ページの移動後にスクロールする
プログラムを作成しております。
そこら中を漁って下記のコードまでは行き着いたのですが
ページが表示されるまで待たないように処理をスレッド化した所
指定されたキャストは有効ではありません
となってしまいます。
原因もさっぱりわからず参っています。。。
どなたか対策をご教授頂けないでしょうか。
宜しくお願い致します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
//参照設定
//Microsoft Internet Controls [バージョン:1.1.0.0]
//Microsoft.mshtml [バージョン:7.0.3300.0 (ランタイムのバージョンv1.0.3705)]
namespace WindowsApplication1
{
public partial class Form1 : Form
{
private static SHDocVw.InternetExplorer m_IE;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
this.getIE();
this.myNavigate("http://www.yahoo.co.jp/");
//スレッドを生成せずに呼ぶと成功する。
//safeNavi("http://www.yahoo.co.jp/");
}
//起動されているIEを取得する
private void getIE()
{
string objName;
SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindowsClass();
foreach (SHDocVw.InternetExplorer ie in shellWindows)
{
objName = System.IO.Path.GetFileNameWithoutExtension(ie.FullName).ToLower();
if (objName.Equals("iexplore"))
{
m_IE = ie;
}
}
}
//スレッドを生成して safeNaviメソッドを呼ぶだけ
public void myNavigate(string url)
{
System.Threading.Thread navigateWaitThread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(Form1.safeNavi));
navigateWaitThread.Start(url);
return;
}
//移動後、スクロールまで実施する
private static void safeNavi(object url)
{
object dummy = System.Type.Missing;
mshtml.DispHTMLDocument myDocument = null;
mshtml.DispHTMLWindow2 myWindow = null;
lock (m_IE)
{
m_IE.Navigate((string)url, ref dummy, ref dummy, ref dummy, ref dummy);
m_IE.Visible = true;
}
while (m_IE.Busy)
{
System.Threading.Thread.Sleep(500);
}
myDocument = (mshtml.DispHTMLDocument)m_IE.Document;
myWindow = (mshtml.DispHTMLWindow2)myDocument.parentWindow; //<-{"指定されたキャストは有効ではありません。"}
//スクロールを実施
myWindow.scrollTo(0, 100);
return;
}
}
}
|
|