5

私はWCF web servicesその自動化を作成していますinternet explorer。の同じインスタンスにアクセスする必要がある複数の Web サービス呼び出しがありますInternet Explorer。ただし、WCFサービスはホストされIISているため、Web サービスへのすべての呼び出しはセッション 0 で実行されます。同じインスタンスにアクセスするには、インスタンスのウィンドウ ハンドルを返すプロパティInternet Explorerを使用します。以下のコードでは、ウィンドウ ハンドルでサービスとして実行されると、セッション 0 の分離により常に 0 が返されます。また、同じインスタンスにフックバックしたり、開いているすべてのウィンドウをループしたりすることもできません。プロセス リストを列挙し、セッション 0 で開いている各ウィンドウのプロセス ID を見つけることはできますが、オブジェクトにキャストすることはできません。SHDocVw.InternetExplorer.HWNDInternet ExplorerWCFIIS 7IEIEIESystem.Diagnostics.ProcessSHDocVw.InternetExplorer

以下は私のコードです:

public int GetWhd()
{
    InternetExplorer ie = new InternetExplorer();
    ie.Visible = true;
    return ie.HWND;
}

public int SetWhd(string whd)
{
    int wh = Int32.Parse(whd);
    InternetExplorer ie = null;
    ShellWindows s = new ShellWindows();
    foreach (SHDocVw.InternetExplorer ie1 in s)
    {
    try
    {
            if (ie1.HWND == wh)
            {
                    ie = ie1;
                    break;
            }
    }
    catch { return 2; }
    }
    if (ie != null) { ie.Navigate("www.google.com"); return 1; }
    return 0;
}

どんな助けでも大歓迎です。

4

1 に答える 1

2

IIS7 で分離を完全に回避することは困難ですが、同様のシナリオで私が行ったことを次に示します。IIS で、アプリケーション プールの [詳細設定] に移動し、Windows ユーザーとして実行するように設定します。そのユーザーで少なくとも 1 回はログインしていることを確認してください (.net により、文書化されていないフォルダーがいくつか作成されます)。[ユーザー プロファイルの読み込み] を [True] に設定します

私の場合、MS Office を自動化していたので、次の 2 つの追加手順が必要でした (最初の手順が該当する可能性があります): C:\Windows\System32\config\systemprofile デスクトップ フォルダーを作成し、書き込み権限を与えます\systemprofile\AppData\Roaming\Microsoft\Templates は、Normal.dotm がそこにあり、書き込み権限があることを確認します

次に、DCOM オブジェクトの設定を変更します Start -> run -> comexp.msc

開いComponent Services -> Computers -> My Computer -> DCOM Config て、Internet Explorer のエントリを探します。Right-click -> Properties -> Identity Tab -> select The interactive user

または、ユース ケースが許せば、WPF アプリケーション内で WCF アプリケーションをホストし、必要に応じて、アプリ内で Internet Explorer ウィンドウをホストすることもできます。これにより、より詳細な制御が可能になります。ブラウザー コントロール API は、適切な型にキャストするまで、最初は (インテリ感覚で) 制限されているように見えます。必要に応じてこれを投稿できます。

編集: http://support.microsoft.com/kb/555134もご覧ください。

于 2014-01-15T18:11:07.237 に答える