目前我正在制作一个用WPF制作的小工具。它根据另一个窗口的状态显示和隐藏。
所以,让我说出另一个窗口是A.当A显示或最大化时,我的小工具显示。当A最小化时,我的小工具会隐藏。
那么,如何检测不在.NET中的另一个进程的窗口状态的变化?对不起我的英语不好:P
答案 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)