2009-10-20 69 views
2

我在客戶機上運行了Windows服務。我需要捕獲客戶端的屏幕並通過遠程將其發送到服務器。當我運行exe文件時,它可以捕獲屏幕並將其發送給服務器。但是,當我將其作爲服務運行時,它會記錄以下錯誤:無法捕獲屏幕

「句柄無效。」

該服務的「與桌面交互」複選框被選中。我用於截圖的代碼是:

Image bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb); 
Graphics gfxScreenshot = Graphics.FromImage(bmpScreenshot); 
gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy); 
return bmpScreenshot; 

可能是什麼原因以及如何解決此問題?

回答

5

服務運行在會話0(截至Vista),而其他應用程序不運行。

您需要在使用(例如)Run註冊表項登錄後,在用戶會話中運行屏幕捕獲應用程序。

+1

你現在正式成爲我們公司當天的英雄。 – 2009-10-20 16:34:13

+0

我不確定這是如何回答這個問題的。決議是什麼? – 2009-12-30 05:36:08

+0

@Michael我爲這個問題增加了一個可能的解決方案。 – 2009-12-30 06:29:57