代码之家  ›  专栏  ›  技术社区  ›  Serhat Ozgel

无法捕获屏幕

  •  2
  • Serhat Ozgel  · 技术社区  · 15 年前

    我在客户机上运行了一个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;
    

    原因可能是什么?我如何解决?

    1 回复  |  直到 14 年前
        1
  •  5
  •   Shay Erlichmen    15 年前

    服务在会话0中运行(从Vista开始),而应用程序的其余部分则不运行。

    您需要在登录后在用户会话中运行屏幕捕获应用程序,使用(例如) Run 注册表项。