如何检测是另一个最小化或最大化过程的窗口?

时间:2015-03-29 08:56:07

标签: c# wpf

目前我正在制作一个用WPF制作的小工具。它根据另一个窗口的状态显示和隐藏。

所以,让我说出另一个窗口是A.当A显示或最大化时,我的小工具显示。当A最小化时,我的小工具会隐藏。

那么,如何检测不在.NET中的另一个进程的窗口状态的变化?对不起我的英语不好:P

2 个答案:

答案 0 :(得分:5)

这只是解决方案的一部分。如果您知道其他窗口的标题:

Process process = Process.GetProcesses().Where(p => p.MainWindowTitle == "Title of window").SingleOrDefault();
if (process != null) {
      IntPtr wHnd = process.MainWindowHandle;
      Console.WriteLine("Minimized: "  + IsIconic(wHnd));
}

    [DllImport("user32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    static extern bool IsIconic(IntPtr hWnd);

答案 1 :(得分:0)

您希望从您想要覆盖的流程中获取HWND。

How to get main window handle from process id?

它需要在您的C#WPF应用程序中加载win32库,如下所示。

How can I use EnumWindows to find windows with a specific caption/title?

获得HWND后,您可以通过WS_VISIBLE和WS_MAXIMIZE属性的组合来检查应用程序的可见性。

How can I check if a window has WS_VISIBLE to set? (or if is visible)