有没有办法检测和存储所有打开的窗口的位置和大小,以及它们的状态(最小化,最大化等)
我从未开发出以这种方式从实际操作系统获取信息的任何东西。是否需要调用Windows API并涉及非托管代码?
如果不清楚,请发表评论,我会尽力详细说明。
答案 0 :(得分:9)
调用EnumWindows循环浏览所有窗口,然后调用GetWindowPlacement以获取信息。它需要PInvoke到Windows API,但它并不困难,只需在PInvoke站点找到所有信息。
顺便说一句,这是一篇codeproject文章,用于查找特定窗口并获取/设置它的显示状态,可能是一个很好的起点(代码在VB.Net中,但你可能只使用一个如果您不了解VB.Net,请将在线VB.Net转换为C#转换器
答案 1 :(得分:1)
是的,您将从EnumWindows开始: http://msdn.microsoft.com/en-us/library/ms633497.aspx
有关获取所需信息的方法,请参阅“窗口函数”列表: http://msdn.microsoft.com/en-us/library/ff468919.aspx
答案 2 :(得分:1)
System.Diagnostics.Process类为您提供所需的大部分信息。你可以试试。
Process[] currentProcesses = Process.GetProcesses();
Console.WriteLine("MainWindowTitle: {0}",currentProcesses[0].MainWindowTitle);
Console.WriteLine(currentProcesses[0].StartInfo.WindowStyle);
我不确定它是否能满足您的所有需求。但Process类能够提供有关当前正在运行的进程的大量信息。 在转移到API之前,最好先看一下Process类。