ShDocvw.InternetExplorerの代わりに__comObjectとしてInternetExplorerが設定されています
-
14-11-2019 - |
質問
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は必要ありません。