3

画面をキャプチャする 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 タスクマネージャー

4

1 に答える 1

5

サービスはセッション 0 で実行されます。セッション 0 には、ユーザーが表示されているデスクトップを介してシステムと対話する他のセッションへの別の Window Station とデスクトップの割り当てがあります。

スナップショットを作成するために、サービスをアクティブなユーザーのセッションに切り替えて、表示されているデスクトップへのリンクを確立することをお勧めします。スクリーンショット コードはそのまま機能しますが、独自のデスクトップのスナップショットを作成しています。 (これは何もありません)。

これは、物事を明確にするのに役立つ場合があります。

于 2013-09-19T11:34:14.770 に答える