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),但即使有了它,我怀疑你能否以实用的方式用它做你想做的事
我对开始能够以编程方式操作 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),但即使有了它,我怀疑你能否以实用的方式用它做你想做的事