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

时间:2015-01-16 07:25:49

标签: c# windows-8

我有兴趣开始以编程方式操作Windows。也许通过点击窗口使其具有焦点,然后通过使用一些组合键,我可以移动窗口。另外,我想在z方向上移动窗口,这意味着它会越来越小,因为它越来越深入到屏幕中,当它向我移动时越来越大。

我希望这适用于任何现有窗口,文本编辑器窗口,浏览器窗口,甚至计算器程序窗口。

问题在于我不知道要实现这一目标需要什么技术。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

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

"操纵"一个窗口需要几个不同的API函数,具体取决于你想要做什么......这些是一些:

  • FindWindowpinvoke.net link)将允许您找到窗口句柄,以便将其提供给其他功能(根据您的需要,有更多方法可以找到窗口句柄,但这个是到目前为止最容易的)
  • MoveWindowpinvoke.net link)允许您设置位置和大小
  • SetWindowPospinvoke.net link)设置顶级窗口的z顺序

使用http://pinvoke.net了解如何从c#调用Win32 API函数,并使用MSDN(特别是此链接:http://msdn.microsoft.com/en-us/library/windows/desktop/ff468919(v=vs.85).aspx)来获取处理Windows的所有函数的参考。

更新

重新阅读您的问题,看起来您想要"模拟"在你的窗户中像3D一样的效果。这不在API中,据我所知,目前还没有标准化的方法(现代加速DWM可以做到这一点,但我认为你不能通过它的API访问任何功能) )。

您可以研究将窗口内容捕获到位图,并将该位图缩放到您自己的窗口中。这并非不可能,但这并不容易,并且 WAY 太长,无法解释如何在这里解决这个问题。

更新2

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