2010-12-08 16 views
1

私はwin 2003サーバーを使用しています。IEのスクリーンショットC#Windowsサービスのスクリーンショット

私はWindowsサービスをC#で作成しました。それは、定義済みのURLで5分ごとにIEを開き、スクリーンショットを取得してデータベースに保存します。それは単純なアプリケーションのようです。しかし、私の問題は、マシンがロック(ウィンドウキー+ l)またはマシンがログオフされると、IEプロセスが開始されますが、スクリーンショットを取ることはできません。

IEをログイン画面で実行するオプションはありますか?またはこの問題の回避策がありますか?

答えて

0

Generate WebPage Thumbmail Screenshot Imageに掲載されているように、サービスでWebブラウザーコントロールを使用してスクリーンショットを生成できます。

+0

ありがとうCodeCanvas。 しかし、IEスクリーンショット全体が必要です。あなたのソリューションの言及は、Webページのみのスクリーンショットをキャプチャしています。IEスクリーンショット全体が必要です。 これに関する解決策はありますか? – Ankit

+0

@Ankit:申し訳ありませんが、ロックされたウィンドウセッション内で実行されているアプリケーションのスクリーンショットを取得するために使用する方法については気付きません。 –

0

「デスクトップと対話する」チェックボックスをオンにしてサービスを実行する必要があります。スクリーンショットが取られ、他のウィンドウと重なっていないとき、ウィンドウはZオーダーの最上部に位置する必要があります。私が見つけたように、このアプローチはかなり誤りがちです。コード使用して、デスクトップと対話するように

0

は、あなたがサービスを開始する直前にこれを入れてください。

String sYourServiceName = @"MyService" //Change this to r service name 
ConnectionOptions co = new ConnectionOptions(); 
co.Impersonation = ImpersonationLevel.Impersonate; 
ManagementScope mgmtScope = new System.Management.ManagementScope(@"root\CIMV2", co); 
mgmtScope.Connect(); 
ManagementObject wmiService; 
wmiService = new ManagementObject("Win32_Service.Name='" + sYourServiceName + "'"); 
ManagementBaseObject InParam = wmiService.GetMethodParameters("Change"); 
InParam["DesktopInteract"] = true; 
ManagementBaseObject OutParam = wmiService.InvokeMethod("Change", InParam, null); 

または

ログオンページからシステムアカウントとしてiexplore「インターネットエクスプローラ」を実行してみます。 WindowsサービスからProcess.Start("Iexplore.exe")を実行するだけで正常に動作するはずですが、iexploreをシステムレベルのアカウントとして実行できるかどうかはわかりません。

そうしないと、あなたはデスクトップとの対話を可能にすることによって、これを行うことができ、基本的なキーグラバーやMENU+Lロックアウトをブロックするキーロガーを書き込むことによって、ロックアウト画面を阻止しようとすることができます。私は、サービスに行き、あなたのサービスをクリックすることによって、より簡単にするか、手動で行うためのコードを投稿しました。そこに、テキストinteract with desktopのチェックボックスが表示されます。

// M

関連する問題