我想通过其句柄检查表单是否具有表单边框。 并且,句柄来自另一个应用程序。
我该如何处理? 请帮帮我..谢谢!
答案 0 :(得分:2)
[DllImport("user32.dll")]
extern static int GetWindowLong(IntPtr hWnd, int nIndex);
const int GWL_STYLE = -16;
const int WS_BORDER = 0x00800000; // thin border
const int WS_THICKFRAME = 0x00040000; // sizing (thick) border
public static bool NativeWindowHasBorder(IntPtr hWnd)
{
return (GetWindowLong(hWnd, GWL_STYLE) & (WS_BORDER | WS_THICKFRAME)) != 0;
}
答案 1 :(得分:0)
Control
他们自己实际上没有手柄。 Control.Handle
实际上返回了它的父窗口.Handle
。
获取控件绑定的窗口句柄。
如果您查看Control
的反编译来源,您会看到:
internal IntPtr HandleInternal
{
get
{
return this.window.Handle;
}
}
修改强>
我上面所说的完全不正确。我是为了历史而离开它。
通过在Button
上加Form
并查看IntPtr Handle
值,可以非常轻松地证明这一点。他们是不同的。