【问题标题】:Session 0 capture screen会话 0 捕获屏幕
【发布时间】:2015-11-02 13:36:26
【问题描述】:

尝试https://stackoverflow.com/a/30138664/533237 并能够捕获屏幕。

但我想从会话 0 中运行的应用程序或其他用户捕获屏幕。在捕获并切换到另一个用户之前引入了 10 秒的睡眠。 还尝试了 PsExec.exe -h -s E:\sc.exe。两者都抛出错误

C:\Users\unity\Documents\Visual Studio 2015\Projects\ConsoleApplication2\Debug>sc.exe
FAILURE 0x8876086C (-2005530516)
    line: 60 file: 'c:\users\unity\documents\visual studio 2015\projects\consoleapplication2\consoleapplication2\consoleapplication2.cpp'
    expr: 'd3d->GetAdapterDisplayMode(adapter, &mode)'

C:\Users\unity\Documents\Visual Studio 2015\Projects\ConsoleApplication2\Debug>PsExec.exe -h -s  E:\sc.exe -w E:\
PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com


FAILURE 0x8876086C (-2005530516)
    line: 60 file: 'c:\users\unity\documents\visual studio 2015\projects\consoleapplication2\consoleapplication2\consoleapplication2.cpp'
    expr: 'd3d->GetAdapterDisplayMode(adapter, &mode)'

注释掉 GetAdapterDisplayMode 和硬编码的高度和宽度,但 CreateDevice 失败

FAILURE 0x8876086A (-2005530518)
    line: 76 file: 'c:\users\unity\documents\visual studio 2015\projects\consoleapplication2\consoleapplication2\consoleapplication2.cpp'
    expr: 'd3d->CreateDevice(adapter, D3DDEVTYPE_HAL, NULL, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &parameters, &device)'

编辑: 想法是让一个应用程序在后台运行并捕获任何显示的内容,而不管用户是否登录或即使没有人登录(锁定/登录屏幕)

【问题讨论】:

    标签: c++ windows directx


    【解决方案1】:

    这有两个层面的问题。

    在一个层面上,虽然很多 GDI 都可以工作,但会话 0 没有链接到功能显示设备,当然不是具有 D3D 能力的显示设备。

    在另一个层面上,虽然已经引入了 DWM 之类的东西,但 Windows API 始终提供一种显示模型,其中根本不存在不可见的屏幕像素。整个窗口显示模型是围绕让窗口协作绘制到共享显示表面而构建的,并且桌面合成系统根据需要重新绘制窗口的任何未覆盖部分。

    这意味着,从根本上讲,您无法从会话 0 中截取任何内容,因为要这样做,会话 0 必须附加到活动显示设备。

    【讨论】:

    • 这并不完全正确 - 从 Win8 / Server 2012 开始,您可以使用 D3D in session 0,包括显示适配器相关的 API,但是 output 和 window i> 相关的 API 仍然无效,因此那里没有什么可以“捕获”。
    猜你喜欢
    • 2011-07-09
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多