我在form1
的顶部尝试了这个[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr FindWindow(string strClassName, string strWindowName);
[DllImport("user32.dll")]
public static extern bool GetWindowRect(IntPtr hwnd, ref Rect1 rectangle);
public struct Rect1
{
public int Left { get; set; }
public int Top { get; set; }
public int Right { get; set; }
public int Bottom { get; set; }
}
然后在构造函数
中Process[] processes1 = Process.GetProcessesByName("mspaint");
Process lol = processes1[0];
IntPtr ptr = lol.MainWindowHandle;
Rect1 mspaintRect = new Rect1();
GetWindowRect(ptr, ref mspaintRect);
但我认为结果很奇怪。
在使用断点的mspainRect
中,我看到了
Bottom = -31972
Left = -32000
Right = -31840
Top = -32000
答案 0 :(得分:1)
当窗口最小化时,窗口的位置为sort
。因此,在您的示例中,{X=-32000,Y=-32000}
的窗口最小化。
这种奇怪坐标背后的原因是因为与某些旧版Windows的向后兼容性。
Where did windows minimize to before the taskbar was invented?
Windows NT坚持-32000坐标并没有拿起 兼容性修复由于某种原因。我猜他们认为是的 时间Windows NT开始流行,所有那些破碎的程序都会有 已经修好了。