我正在尝试创建 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();
}
}
在这里,我遵循了Here和Here中提到的代码。但它对我不起作用。
我正在使用 Windows 7 电脑。我看到提到的几个答案,the session 0 isolation feature
但我无法从他们那里得到正确的解决方案。
在这里编辑
此服务运行为session 0