【问题标题】:Changing how windows displays using Win API?使用 Win API 更改窗口的显示方式?
【发布时间】:2013-04-06 21:15:33
【问题描述】:

虽然我对 WinAPI 有一些经验,但我没有很多经验,所以我有一个问题想问那些在这方面有很多经验的人。我的问题是关于我们权力的极限是什么。我们能否从根本上改变窗口的显示方式?

例如,我是否可以让窗口呈现比显示器更大的屏幕尺寸并在其上平移,有点像工作区但没有分隔?我可以在屏幕的顶部和底部应用失真吗?如果不可能出现失真,我可以有一个应用程序镜像窗口显示的延迟很少吗?

我遇到的最大问题是第一个问题,因为如果我可以让窗口呈现虚拟工作区并在它们之间无缝平移,那么我认为可以制作一个单独的应用程序来处理桌面镜像图像上的失真。再次为这些模糊的问题道歉,但我真的很想知道我们是否能够做到这一点,至少在理论上,然后再深入学习更多关于 API 的知识。如果 WinAPI 不允许,是否有另一种方法可以在 Windows 中执行此类操作?

编辑:一些澄清。我想要做的基本上是将桌面扩展到一个非常大的尺寸(还不确定确切的尺寸),无论是垂直还是水平。将大型桌面划分为特定大小的工作区,这些工作区可以无缝转换,窗口也可以移动。它将基于头部跟踪设备和/或鼠标移动转换工作空间。请注意,当我说工作区时,这可以通过放大然后平移缩放来实现。我还需要能够扭曲屏幕,例如弯曲边缘,并渲染屏幕两次。这是我想做的最起码的事情。

【问题讨论】:

  • 这是stackexchange的stackoverflow部分。它正好适合编程问题。但是,您的问题很笼统,很难回答。您想在没有 Windows 的情况下接管屏幕并显示您自己的内容吗?没问题。还是要显示正常的 Windows 桌面并进行控制?那要复杂得多。因此,您的问题将受益于更具体。
  • 已编辑帖子,其中包含我正在尝试做的具体示例。希望这会有所帮助。
  • 所以我认为您想显示普通的 Windows 桌面而不是您自己的内容,但您希望能够控制它的显示方式?对吗?
  • 总是会做一些讨厌的事情,比如检测外壳然后注入它来接管它如何绘制桌面。
  • 听起来有点像多个桌面,例如kde,提供它。嗯,一个总是可以通过钩子钩住几个窗口过程调用,例如,这里codeproject.com/Articles/1037/Hooks-and-DLLssecurityxploded.com/dll-injection-and-hooking.phpAFAIK,有很多可能性,可以用钩子来实现,但是如果你需要的一切都是可能的,你大多必须检查自己。桌面窗口也只不过是一个带有回调等的窗口。您应该尝试挂钩它的回调并尝试更改 WM_PAINT

标签: winapi


【解决方案1】:

是的,你可以。我想出的最可行的方法是使用虚拟图形驱动程序(就像Windows Remote Desktop 所做的那样,它创建了一个虚拟图形卡和一个虚拟显示器)。遗憾的是,您将无法运行一些需要高级图形 API 的程序(例如 3D 游戏、3D 建模工具等)。

有一些例子:

http://virtualmonitor.github.io/

https://superuser.com/questions/62051/is-there-a-way-to-fake-a-dual-second-monitor

请记住,Windows 对显示分辨率有限制(对于每个和全部)。我不记得确切的数字,但应该小于 32768*32768。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 2018-06-22
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多