jjzjj

CreateDesktop

全部标签

c++ - 使用 CreateDesktop/SwitchDesktop 在新桌面中创建表单

我需要为实用程序创建一个系统模式表单,该表单应阻止整个窗口,直到输入特定值。所以我正在尝试创建桌面和切换。到目前为止,创建桌面切换到它并返回对我来说效果很好。但是,当我尝试从一个新线程中创建一个表单时,该表单没有显示,但应用程序保留在新创建的空白桌面中,因此在我注销之前永远阻塞屏幕。我是根据此处找到的代码制作的:http://developex.com/blog/system-modal-back///ScreenLocker.h#pragmaonceusingnamespaceSystem;usingnamespaceSystem::Windows::Forms;namespaceD

windows - win32 : destroy a deskstop created with CreateDesktop

CreateDesktop()的反义词是什么?CloseDesktop()似乎只是关闭新桌面的句柄,而不是删除它。 最佳答案 IIRC,桌面是引用计数的,所以当没有人再使用它们时它们就会被销毁(并且有一个未关闭的句柄包含在“正在使用”中)。 关于windows-win32:destroyadeskstopcreatedwithCreateDesktop,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/

windows - 无法在使用 CreateDesktop Windows 10 创建的新桌面上启动新进程

我正在尝试在Windows10的新桌面上启动新进程“calc.exe”。当我尝试切换桌面时,屏幕变黑(看起来是一个没有背景的新桌面)。然后它按预期切换回主桌面,我看到在那里启动了calc.exe。下面是代码片段。我正在使用VisualStudio2015进行开发。为什么calc.exe不在第二个桌面上启动?HDESKoriginalDesktop;HDESKsecondaryDesktop;originalDesktop=GetThreadDesktop(GetCurrentThreadId());LPWSTRsecondaryDesktopName=L"Mysecondary";se

windows - 没有 Aero 合成就没有 vsync;无法在 CreateDesktop() 制作的桌面上打开 Aero

我正在使用OpenGL进行渲染。我的东西是沙盒的,所以我使用CreateDesktop()来防止粉碎攻击。但是,无论出于何种原因创建新桌面时都没有Aero组合(尽管默认桌面有)并且尝试使用DwmEnableComposition()启用它失败。我不知道为什么,也不知道如何解决这个问题。DwmEnableComposition()在默认桌面上运行良好。有没有办法让vsvsync在没有组合的情况下工作?即使从nvidia的驱动程序控制面板强制执行,我也无法这样做。这里的解决方案是什么?我使用的是Windows7。在Windows8中,他们说不能禁用合成,所以我想知道这个问题是否不会再出现了

windows - 截取使用 createdesktop api 创建的桌面的屏幕截图

我正在使用createdesktopapi创建桌面,我想在不向用户显示桌面的情况下截取屏幕截图或发送输入鼠标/键盘。关​​于如何实现这个的任何想法??? 最佳答案 我找到的简短答案是你不能。您无法截取非事件桌面的屏幕截图,因为没有绘制调用,因为没有要重绘的可见窗口。您可以执行SwitchDesktop()调用、屏幕截图,然后返回SwitchDesktop()。用户不会注意到它,但您可能不会在屏幕截图中看到太多内容,因为在这么短的时间内窗口没有时间重绘。另一件事是,您必须创建一个新线程来调用SetThreadDesktop()。如果您

CreateDesktop() 与 vista 和 UAC on (C, windows)

我在CreateDesktop()withVistaUAC(CWindows)中问过这个我设置了赏金,但在试图否决唯一的答案时,错误地按下了“接受”(我已经醒了超过48小时)。所以我再问一遍。我正在使用CreateDesktop()创建一个临时桌面,应用程序将在其中运行、执行清理操作(同时保持不受影响)并终止。一旦应用程序消失,我将关闭该桌面。使用WindowsXP甚至Vista时一切都很好。当您启用(烦人的)UAC时会出现问题。创建桌面时一切正常,但是当您调用CreateProcess()在该桌面上打开程序时,它会导致打开的应用程序崩溃,并出现User32.dll异常。我已经阅读了很