有没有办法检查表格是否有表格边框? (通过句柄)

时间:2012-07-16 21:19:42

标签: c# winforms handle formborderstyle

我想通过其句柄检查表单是否具有表单边框。 并且,句柄来自另一个应用程序。

我该如何处理? 请帮帮我..谢谢!

2 个答案:

答案 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

来自MSDN for Control.Handle

  

获取控件绑定的窗口句柄。

如果您查看Control的反编译来源,您会看到:

internal IntPtr HandleInternal
{
  get
  {
    return this.window.Handle;
  }
}

修改

我上面所说的完全不正确。我是为了历史而离开它。

通过在Button上加Form并查看IntPtr Handle值,可以非常轻松地证明这一点。他们是不同的。