Windows 8 和 C#:以编程方式移动 windows 需要什么技术,即使是在 z 方向?

Windows 8 and C#: what technology is needed to move windows programatically, even in the z direction?

我对开始能够以编程方式操作 windows 很感兴趣。也许通过单击 window 使其获得焦点,然后通过使用一些组合键,我可以移动 windows。另外,我想在 z 方向上移动 windows,这意味着当它深入屏幕时它看起来会变小,而当它向我移动时会变大。

我希望这适用于任何现有的 window,作为文本编辑器 window、浏览器 window,甚至是计算器程序 window。

问题是我不知道需要什么技术来实现。

有什么想法吗?

您需要使用 Win32 API(使用 P/Invoke)。

"Manipulating" 一个 window 需要几个不同的 API 函数,这取决于你想做什么...这些是一些:

  • FindWindow (pinvoke.net link) 将允许您找到 window 句柄,以便将其提供给其他函数(有更多方法可以找到 window根据您的需要处理,但这是迄今为止最简单的)
  • MoveWindow(pinvoke.net link) 允许您设置位置和大小
  • SetWindowPos (pinvoke.net link) 设置顶层的 z 顺序 windows

等等

特别使用 http://pinvoke.net to find out how to call Win32 API functions from c#, and use the MSDN (this link: http://msdn.microsoft.com/en-us/library/windows/desktop/ff468919(v=vs.85).aspx) 作为处理 Windows.

的所有函数的参考

更新

重新阅读您的问题,您似乎想要 "simulate" 在您的 windows 中实现类似 3D 的效果。这不在 API 中,据我所知,没有标准化的方法来做到这一点(现代加速 DWM 做到了,但我认为你不能通过它的 [=52 访问任何函数来做到这一点=]).

您可以研究将 window 内容捕获到位图,然后将该位图缩放到您自己的 window 中。这并非不可能,但也不是很容易,而且 WAY 太长了,无法在此处解释如何执行此操作。

更新 2

实际上有一个 DWM API (link to MSDN),但即使有了它,我怀疑你能否以实用的方式用它做你想做的事