我有以下代码:
System.Drawing.Rectangle desktop_Rectangle = System.Windows.Forms.Screen.PrimaryScreen.Bounds
它给了我桌面的界限。
我现在想要使用窗口的标题来获取特定窗口的边界。
我是否必须使用Interop才能实现这一目标?
非常感谢任何示例代码。
谢谢
答案 0 :(得分:4)
namespace NativeInterop {
using System.Runtime.InteropServices;
public static partial class User32 {
private const string DLL_NAME = "user32.dll";
[StructLayout(LayoutKind.Sequential)]
private struct RECT {
int left, top, right, bottom;
public Rectangle ToRectangle() {
return new Rectangle(left, top, right - left, bottom - top);
}
}
[DllImport(DLL_NAME, SetLastError = true)]
public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, String className, String windowTitle);
[DllImport(DLL_NAME)]
private static extern bool GetClientRect(IntPtr hWnd, out RECT lpRect);
public static Rectangle GetClientRect(IntPtr hWnd) {
var nativeRect = new RECT();
GetClientRect(hWnd, out nativeRect);
return nativeRect.ToRectangle();
}
}
}
用法:
var handle = User32.FindWindowEx(IntPtr.Zero, IntPtr.Zero, String.Empty, "My Caption");
var rect = User32.GetClientRect(handle);
答案 1 :(得分:0)
您需要FindWindow和GetWindowRect(或者GetClientRect)。