Есть ли способ проверить, имеет ли форма Границу формы? (ручкой)

Я хочу проверить, имеет ли форма Границу формы по ее дескриптору. И ручка из другого приложения.

Как я могу справиться с этим? Пожалуйста, помогите мне.. Спасибо!

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;
}

ControlСами на самом деле не имеют ручки. Control.Handle на самом деле возвращает родительское окно .Handle,

Из MSDN дляControl.Handle:

Получает дескриптор окна, с которым связан элемент управления.

Если вы посмотрите на декомпилированный источник для Control, вот увидишь:

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

редактировать

То, что я сказал выше, совершенно неверно. Я оставляю это ради истории.

Это можно легко доказать, поставив Button на Formи глядя на IntPtr Handle ценность для них. Они разные.

Другие вопросы по тегам