-1

フォームにハンドルで Form Border があるかどうかを確認したい。そして、ハンドルは別のアプリケーションからのものです。

どうすればこれを処理できますか? 私を助けてください..ありがとう!

4

2 に答える 2

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;
}
于 2012-07-16T22:20:31.857 に答える
0

Controls 自体には実際にはハンドルがありません。Control.Handle実際には親ウィンドウの.Handle.

MSDNControl.Handleから:

コントロールがバインドされているウィンドウ ハンドルを取得します。

の逆コンパイルされたソースを見ると、次のように表示されControlます。

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

編集

私が上で述べたことは完全に間違っています。歴史的な理由で残しておきます。

Buttonこれは、 aに a を付けて、それらの値をForm調べることで非常に簡単に証明できます。IntPtr Handleそれらは違う。

于 2012-07-16T21:23:04.020 に答える