如何获取桌面应用程序的窗口属性

时间:2014-06-29 09:22:44

标签: c# automation

所以,我有一个应用程序,它可以自动与另一个应用程序一起运行 例如:

  1. 打开应用程序A,启动应用程序B
  2. 单击按钮1并单击输入文本
  3. 问题是应用程序B不是我的,我想在那里自动点击按钮。我知道按钮1距离右下角20px,但我不知道应用程序B的窗口的高度和宽度。是否可以在C#中获取该窗口的宽度和高度?

1 个答案:

答案 0 :(得分:1)

确实如此。您可以使用Windows API获取其句柄,然后从那里获取其窗口属性。

导入API。

[StructLayout(LayoutKind.Sequential)]
private struct RECT
{
    public int Left;
    public int Top;
    public int Right;
    public int Bottom;
}

[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

[DllImport("user32.dll")]
public static extern IntPtr GetWindowRect(IntPtr hWnd,ref RECT rect);

然后在你的功能中你可以:

IntPtr hWnd;
hWnd = GetWindows.FindWindow(null, "Application Title");
User32.RECT windowRect = new User32.RECT();

User32.GetWindowRect(hWnd,ref windowRect);
int width = windowRect.right - windowRect.left;
int height = windowRect.bottom - windowRect.top;