【发布时间】:2013-04-02 19:49:31
【问题描述】:
是否可以在 C# 中(使用 Win32 API 或其他)以编程方式排列所有打开的应用程序窗口?
例如,在 Windows 7 中,如果您右键单击任务栏,则会有一个名为“显示堆叠的窗口”和“并排显示窗口”的选项。
这正是我试图通过代码复制的内容。
为了进一步解释,我想遍历所有打开的应用程序,显示主窗口,然后将其与所有其他打开的应用程序窗口一起排列在桌面/显示器上。
【问题讨论】:
是否可以在 C# 中(使用 Win32 API 或其他)以编程方式排列所有打开的应用程序窗口?
例如,在 Windows 7 中,如果您右键单击任务栏,则会有一个名为“显示堆叠的窗口”和“并排显示窗口”的选项。
这正是我试图通过代码复制的内容。
为了进一步解释,我想遍历所有打开的应用程序,显示主窗口,然后将其与所有其他打开的应用程序窗口一起排列在桌面/显示器上。
【问题讨论】:
您要查找的函数是TileWindows。一些例子:
TileWindows(NULL, MDITILE_HORIZONTAL, NULL, 0, NULL); // "Show windows stacked"
TileWindows(NULL, MDITILE_VERTICAL, NULL, 0, NULL); // "Show windows side-by-side"
如果你想级联窗口,你可以使用CascadeWindows:
CascadeWindows(NULL, MDITILE_ZORDER, NULL, 0, NULL); // "Cascade windows"
【讨论】:
是的,您可以使用 windows API 来完成,看看这个链接,它解释了如何使用一些功能,包括让您枚举所有打开的窗口的功能
http://www.c-sharpcorner.com/UploadFile/shrijeetnair/win32api12062005005528AM/win32api.aspx
这里有让你调整窗口大小和移动窗口的功能
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633534(v=vs.85).aspx
【讨论】: