草庐IT

windows - 什么时候使用 DwmExtendFrameIntoClientArea?

正如我们所知,一些现代应用程序(IE9、Firefox4、Chrome、Paint.NET等)使用DwmExtendFrameIntoClientArea来实现Aero玻璃效果。不过,您真正应该将它用于什么类型的应用程序?对于浏览器,我可以理解尽可能减少多余的空间,但实际上,有什么意义?为什么不创建没有框架的窗口(就像谷歌浏览器在DWM不存在时所做的那样)?我只是在寻找一些关于什么类型的应用程序应该使用这种效果以及何时使用的粗略指南。 最佳答案 好吧,由于这纯粹是一种视觉上的视觉享受,所以您更多地是在征求主观意见,而不是其他任何事情

.net - 视觉基础 : restarting Desktop Windows Manager (DWM)

如何重新启动桌面Windows管理器?我已经试过了:ForEachProcAsProcessInProcess.GetProcessesByName("DWM")Proc.Kill()Next但是它给了我一个错误:System.dll中出现“System.ComponentModel.Win32Exception”类型的未处理异常附加信息:无权限如果我在记事本上使用它:ForEachProcAsProcessInProcess.GetProcessesByName("NOTEPAD")Proc.Kill()Next效果不错有人知道怎么做吗? 最佳答案

windows - 如何在 Windows 8 中扭曲/操纵 dwm 实时缩略图,或以任何其他方式访问窗口纹理?

我找到了这个:https://github.com/steeve/dwmaxx2它应该是这样工作的:https://www.youtube.com/watch?v=Fpvh16VjrRE但这似乎在Windows8/8.1中不起作用,或者我做错了什么。它已加载,它获得了要渲染的窗口的有效HWND句柄,但无法获得窗口纹理。有什么方法可以访问窗口纹理,并能够将其映射到某些3d对象(如立方体)? 最佳答案 DWM使用未记录的私有(private)DXGICOM接口(interface)。当您想要访问windows纹理时,可以Hook私有(p

windows - 如何对 live windows 7 窗口内容进行 3d 操作?

这基本上是一个范围界定问题,我应该在哪里寻找将窗口内容渲染到3d表面并对其进行操作的工具?我的意思是我可以有一个像shell一样的程序,它可以像VistaDWM's3dTaskSwitcher那样以3d形式合成实时窗口吗?并且可以将UI交互转换回每个窗口的2d交互?我在网络上到处都看到过DWM扩展​​的提及,但找不到任何关于它如何工作的资源。还有通过关联两个窗口的HWND来实现DWM缩略图的指南,但这不允许我在窗口上进行任意转换并且仅显示(您不能单击缩略图中的内容。)有什么想法吗? 最佳答案 没有用于操作DWM的3D视觉效果的界面。

windows - 应用全屏时的预期 DWM 行为

Q1:DWM在多显示器设置(扩展)中的预期行为是什么?的监视器被全屏(D3D11)应用程序覆盖(不是最大化的无边框窗口)?1.所有剩余的屏幕应该是空白的2.应主动刷新所有剩余屏幕3.?Q2:应用程序在全屏时是否应该/可以设置DWM的行为(我的意思是:强制它执行1/2/3)?我读过DXGI:BestPractices但它并没有真正考虑DWM在多显示器设置中与全屏应用共存。附加信息:我可以看到DWM在这种情况下表现不同,具体取决于特定的应用程序(我的或第3方),机器应用程序运行在同一台机器上,甚至同一应用程序的特定运行。谷歌搜索显示我不是唯一遇到这些不一致的人,例如:一)gaming.st

.net - 在 Windows Vista/7 中重定向应用程序的图形输出(使用 DWM)

我想创建一个桌面管理器,它获取所有正在运行的应用程序的信息,包括状态和屏幕截图,以在我的虚拟空间(可能是3D)中显示和操作它们。它可以被视为Windows本身之上的另一层抽象。因为许多WindowsVista/7的原生功能,如翻转3D和实时缩略图,都能够实时显示每个窗口的事件,例如视频一直在任务栏的缩略图中播放,我认为DWM允许应用程序将其输出重定向到其他地方,或者某些特殊进程能够收集其他应用程序的图形输出(可能仅限于子进程)。Microsoft是否为此发布了一组公共(public)API?如果不能,技术上可行吗?如果我将我的范围限制为仅使用WPF的.NET应用程序,会不会更容易一些?

windows - 在 Windows 7 下使用 DWM 扭曲窗口

Windows7中的DWM功能可以扭曲窗口。我正在寻找有关如何使用这些函数(未记录)来扭曲任何窗口的信息。预先感谢您的帮助,问候, 最佳答案 没有支持的方法来执行此操作。我什至不知道这样做不受支持的方式。(如果您设法找到一个,请向您的客户明确表示您的程序正在执行不受支持的事情,这些事情可能随时停止工作。) 关于windows-在Windows7下使用DWM扭曲窗口,我们在StackOverflow上找到一个类似的问题: https://stackoverflo

c++ - 来自另一个窗口的 HCURSOR,可能吗?

我正在寻找在我的窗口中绘制HCURSOR。光标必须是来自另一个窗口(HWND)的真实光标。这是我的代码:GetCursorPos(&pos);ScreenToClient(hwnd,&pos);DrawIcon(hdcMemDC,pos.x,pos.y,GetCursor());它在我的窗口上绘制了一个光标,但它不是“真正的”Windows光标。例如,当我在另一个窗口上看到手形鼠标图标时,我的图标没有改变。所以我想知道是否可以从指定窗口(HWND)处理“真实”光标并绘制它。像GetCursorOf(hwnd,&myCursorInfo)这样的东西会很酷。 最

windows - Hook Win32 API 事件以在桌面完全加载时收到通知

想象一个场景,当用户登录并且没有注销切换到另一个用户时。然后切换回来。当切换回来时(因为我们从未退出),Windows将首先显示黑色桌面,然后进行一些窗口闪烁(尤其是有2个显示器),最后将所有内容重新安排到我们离开的状态。闪烁和重新排列需要一些时间(大约1秒)。获取有关桌面已完全加载的通知的最有效方法是什么?我需要这个,因为我想在桌面完全加载时调用我的特定功能。一个选项是Hook到WM_PAINT,但我使用了Spy++,我在桌面上得到了12个WM_PAINT事件,所以这并不可靠。有人知道另一种方法吗? 最佳答案 找到了一个简单得多的

windows - 使用全屏 OpenGL 应用程序时是否可以保持 Windows 的合成器正常工作?

在Windows下,当DWM组合处于事件状态时,全屏OpenGL应用程序有某种“特殊路径”阻止所有其他子窗口(弹出窗口、菜单、工具提示)正确地分层在全屏OpenGL窗口。虽然这对于游戏等很有用,但对于其他全屏OpenGL应用程序(CAD、3d编辑器等)来说完全是一种痛苦。这个问题给Qt用户带来了无穷无尽的麻烦,见here,here,或here.有没有办法告诉Windows不要为给定的应用程序/全屏窗口启用特殊路径?无论是在list中还是通过DWMAPI,我都不在乎。 最佳答案 是的,这可以通过欺骗Windows认为Window应该与