gpt4 book ai didi

c# - Windows服务屏幕捕获返回黑屏

转载 作者:行者123 更新时间:2023-11-30 15:32:32 24 4
gpt4 key购买 nike

我正在尝试创建 Windows 服务应用程序来捕获屏幕。以前我有problem 启动服务。无论如何我能够解决它,现在我遇到了另一个问题。现在图像正在保存,但保存为黑屏。为此,在 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 运行 task manager

最佳答案

服务在 session 0 中运行, session 0 具有与其他 session 不同的 Window Station 和桌面分配,在其他 session 中用户通过其可见的桌面与系统交互。

您可能希望将您的服务切换到事件用户的 session 以建立到他们可见桌面的链接,以便创建它的快照 - 您的屏幕截图代码按原样工作,但正在拍摄快照它自己的桌面(什么都不是)。

This可能会帮助您澄清一些事情。

关于c# - Windows服务屏幕捕获返回黑屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18891819/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com