画面をキャプチャする Windows サービス アプリケーションを作成しようとしています。以前は、サービスの開始に問題がありました。とにかく私はそれを解決することができましたが、今は別の問題を抱えています。画像は保存されますが、黒い画面として保存されます。これについても、SOF で多くの質問が寄せられていますが、私は自分の問題を解決できませんでした。
ここで私がこれまでに試したこと:
public partial class ScreenCaptureService : ServiceBase
{
private static Bitmap bmpScreenshot;
//private static Graphics gfxScreenshot;
System.Timers.Timer timer = new System.Timers.Timer();
public ScreenCaptureService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
TraceService();
timer.Elapsed += new ElapsedEventHandler(OnElapsedTime);
timer.Interval = 60000;
timer.Enabled = true;
}
protected override void OnStop()
{
timer.Enabled = false;
TraceService();
}
private void TraceService()
{
Desktop userDesk = new Desktop();
userDesk.BeginInteraction();
string path = @"D:\Screen\";
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
string fileName = string.Format("SCR-{0:yyyy-MM-dd_hh-mm-ss-tt}.png", DateTime.Now);
string filePath = path + fileName;
bmpScreenshot = CaptureScreen.GetDesktopImage();
bmpScreenshot.Save(filePath, ImageFormat.Png);
userDesk.EndInteraction();
}
private void OnElapsedTime(object source, ElapsedEventArgs e)
{
TraceService();
}
}
ここでは、こことここで言及されているコードに従いました。しかし、それは私にはうまくいきません。
ウィンドウズ7パソコンを使用しています。言及されているいくつかの回答を見ましたthe session 0 isolation feature
が、それらから適切な解決策を得ることができませんでした。
ここで編集
このサービスは次のように実行されますsession 0