ShDocvw.InternetExplorerの代わりに__comObjectとしてInternetExplorerが設定されています

StackOverflow https://stackoverflow.com/questions/6019250

質問

shdocvw.dllのInternetExplorerに問題があります。私は参照しています(グーグルの中に、私はmshtml.dllが参照されるべきではありませんが、これは Microsoft Visual Studio Express で行うことができませんでした。 tがどのくらい真実であるかを知っています)。これは私のためにうまくいかない最も基本的な形で1つの小さな機能です:

public static HtmlElement GetDocumentControlByID(
    ref SHDocVw.InternetExplorer IEObj, 
    string ControlID)
{
    HtmlElement ReturnElement = IEObj.Document.GetElementById(ControlID);
    return ReturnElement;
}
.

問題は、IEOBJインスタンスを作成するとき、それはSystem.__ComObjectの代わりにSHDocVw.InternetExplorerと見なされ、すべてのサブパートもSystem.__ComObject型でもあります。次のステートメントを試すと...

Document WebDoc = IEObj.Document;
HtmlElement ReturnElement = IEObj.Document.GetElementById(ControlID);
.

...同じエラーメッセージを取得し続けます:

は、型「システム.__ comobject」と「system.windows.forms.htmlelement」に暗黙的に変換することはできません。 (明らかに、変換 - typeはIEObj.Documentでは異なります)。

私はC#(VBAから来るので、プログラミングに慣れているので)に新たなものですが、VBAでは、あらゆる方法でそれを変換する必要なしに完全に動作します。

私が間違っていることは何かですか?それがオブジェクトの作成である場合、次のことは(おおよそ)関数のテストに使用したコードを(おおよそ)されています:

public static void Main(String [] args)
{
    SHDocVw.InternetExplorer IEObj = new SHDocVw.InternetExplorer();
    IEObj.Navigate("http://sports.ladbrokes.com/");
    while (IEObj.ReadyState != 4)
    {

    }

    // There is a textbox that definitely exists

    HtmlElement NetControl = GetDocumentControlByID(ref IEObj, "username");

    // I was goint to manipulate it after this, but it crashes in the above function.

}
.

私は本当に私が様々な要素へのラッチで、テキストボックスにテキストを入力することができ、ボタンなどをクリックすることができるように、私は文書変数も使用できるようにする必要があるでしょう( Document.body)。 innerhtml など)。プロジェクト全体は、他のプロジェクトによって参照されるDLLに含まれる機能の束です。

役に立ちましたか?

解決

Winforms HtmlElementクラスを使用しようとしている comオブジェクトではありません。
Native InternetExplorer ComオブジェクトをWinFormsで管理されているクラスとミックスできません。

代わりにWinFormsクラス(WebBrowserコントロール)を使用する必要があります。
ほとんどの場合、あなたはまったくcomは必要ありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top