2016-10-07 5 views
-2

私は1つのタイマーが動作しているWindowsアプリケーションを作成しました。PCがロックされているときにWindowsアプリケーションでタイマーを実行するには?

enter image description here

どのように私はこれを解決するのです。私のPCは、タイマーが作動し、エラーを与えていないロックされているとき、私のPCは、ロックされていない場合は、このタイマーは正常に動作しますか?

コード:::

private void GetDesktopWindow() 
     { 
      try 
      { 
       //Creating a new Bitmap object 
       using (captureBitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format16bppRgb555)) 
       { 
        //Creating a New Graphics Object 
        using (captureGraphics = Graphics.FromImage(captureBitmap)) 
        { 
         //Copying Image from The Screen 
         captureGraphics.CopyFromScreen(Screen.AllScreens[0].Bounds.Left, Screen.AllScreens[0].Bounds.Top, 0, 0, Screen.AllScreens[0].Bounds.Size); 

         //Setting Resolution to image 
         captureBitmap.SetResolution(72, 72); 

         //setting Image size 
         Size Size = new Size(); 
         Size.Height = 800; 
         Size.Width = 800; 

         Image Image = ResizeImage((Image)captureBitmap, Size); 

         ImageModel ImageModel = new ImageModel(); 
         ImageModel.ByteImage = ImageToByte(Image); 
         ImageModel.ImageName = DateTime.Now.ToString("yyyyMMddHHmmss"); 
         ImageModel.KeyStockCount = 1; 
         ImageModel.ClickCount = 1; 
         ImageModel.ScreenCaptureDate = DateTime.Now; 
         ImageModel.Userid = UsrId; 

         byte[] t = SerializeToByteArray(ImageModel); 

         //Check Directory Exist or not if not then create directory 
         if (!Directory.Exists(LocalStorageFolder + "\\" + UsrId + "\\" + ImageModel.ScreenCaptureDate.ToString("yyyyMMdd") + "\\")) 
         { 
          Directory.CreateDirectory(LocalStorageFolder + "\\" + UsrId + "\\" + ImageModel.ScreenCaptureDate.ToString("yyyyMMdd") + "\\"); 
         } 
         File.WriteAllBytes(LocalStorageFolder + "\\" + UsrId + "\\" + ImageModel.ScreenCaptureDate.ToString("yyyyMMdd") + "\\" + ImageModel.ImageName + ".bat", t); 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
      finally 
      { 
       GC.Collect(); 
       GC.WaitForPendingFinalizers(); 
      } 
     } 

StackTrace :::

at System.Drawing.Graphics.CopyFromScreen(Int32 sourceX, Int32 sourceY, Int32 destinationX, Int32 destinationY, Size blockRegionSize, CopyPixelOperation copyPixelOperation) 
    at System.Drawing.Graphics.CopyFromScreen(Int32 sourceX, Int32 sourceY, Int32 destinationX, Int32 destinationY, Size blockRegionSize) 
    at CaptureScreen.CaptureScreen.GetDesktopWindow() in D:\Ankit.J.Bhanderi\RND\CaptureScreen\CaptureScreen\CaptureScreen\CaptureScreen.cs:line 251 
+0

あなたのコンピュータがロックされないようにすることができます(google c-sharp disable screensaver)。タスクスケジューラを使用して昇格された権限で実行できる可能性があります。コードを表示し、コードとの関連でエラーを具体的に記述すると、より効果的に対応できる場合があります。 –

+2

例外とスタックトレースを記録/出力します。 –

+0

時間は正しく実行されていますが、GetDesktopWindowでエラーが表示されます。 – baj9032

答えて

0

それは情報の不足に把握するのは難しいです。

あなたがスクリーンキャプチャにアクセスしようとしていますが、あなたのPCがロックされているので、それは不可能です。このような場合は、キャプチャする前に画面がロックされているかどうかを確認する必要があります。

try/catchを試して削除し、例外がどこで発生するのか正確に把握してください。たぶんスタックトレースを提供しますので、少しお手伝いできます。

関連する問題