Как узнать, что окно QUIK вынесено?

Опубликовано в QLua

В терминале QUIK можно вынести окно скрипта за пределы главного окна терминала. Делается это мышкой при зажатой клавише Ctrl. Поведение таких окон отличается от поведения обычных, например в вопросе определения их координат.


Чтобы узнать, что окно вынесено, можно использовать такую библиотечную С++ функцию:

static int b4s_IsWindowDetached(lua_State* L)
{
   HWND hwnd = (HWND) luaL_checkinteger(L, 1);

   LONG style = GetWindowLong(hwnd, GWL_STYLE);

   lua_pushboolean(L, (style & WS_CHILD) == 0);
   return 1;
}

 

Она получает на входе хендл окна и анализирует его стиль. Если маска WS_CHILD установлена, значит, окно не вынесено и наоборот.

Узнать хэндл окна можно поиском окна по его имени посредством WinAPI метода FindWindowEx

Архив QLua