51

Re: Вызов WinAPI функций в Lua

Добрый день!
Подскажите, пожалуйста, есть возможность сделать окно таблицы робота поверх всех окон?
Пытался посылать Alt_T   Quik-у, но ничего не происходит.
Плиз, хелп.

52

Re: Вызов WinAPI функций в Lua

Michael1976, речь про таблицу, созданную из скрипта Lua, я верно понял ваш вопрос?

53

Re: Вызов WinAPI функций в Lua

Да. Спасибо!

54

Re: Вызов WinAPI функций в Lua

Подобрал )

-- скрипт при запуске переключает режим для окна "поверх всех" (вкл/выкл)
local w32 = require ("w32")

local WM_SYSCOMMAND = 0x0112

hWndQUIK = w32.FindWindowEx(0, 0, "InfoClass", "")
hMdi = w32.FindWindowEx(hWndQUIK, 0, "MDIClient", "")
hWndLua = w32.FindWindowEx(hMdi, 0, "", "Заголовок окна, созданного скриптом")
w32.PostMessage(hWndLua, WM_SYSCOMMAND, 0x0EFFF, 0)

Вместо строки "Заголовок окна, созданного скриптом" вписать верный заголовок окна, которое создаёт ваш скрипт, чтобы оно было найдено.
Убедиться, что окно найдено - проверить, что hWndLua не равно 0. Если равно 0 - смотреть, где ошибка, почему окно не определяется. Проверить предыдущие hWndQUIK и hMdi, проверить корректность указанного заголовка.

У меня точно работает этот скрипт.

55 (2019-02-11 19:33:20 отредактировано Michael1976)

Re: Вызов WinAPI функций в Lua

Огромное Вам спасибо!!! 
Работает. 


У меня было 2 ошибки:

1. Не знал про контейнер MDIClient 
Пытался искать напрямую в окне Quik-а. Естественно, не находил.

2. Вместо local WM_SYSCOMMAND = 0x0112   использовал
    local WM_COMMAND = 0x0111
    -- нажимаем кнопку
    -- 84 - код Alt_T
    w32.PostMessage(hWnd, WM_COMMAND, 84, 0)


Подскажите, пожалуйста, а 0x0EFFF - это что за команда?
w32.PostMessage(hWndLua, WM_SYSCOMMAND, 0x0EFFF, 0)
Как до нее можно додуматься/где почитать?

56

Re: Вызов WinAPI функций в Lua

Смотреть какие окна и в какой иерархии созданы процессами и какие сообщения к ним прилетают помогает утилита Spy++ от Microsoft. Она идёт в составе любой Visual Studio, но и отдельно наверняка её не сложно сыскать.
Я просто посмотрел какие сообщению идут окну при нажатии Alt+T. Не с первого подхода - но нашел подходящее.
Расшифровать 0x0EFFF не берусь, было просто подсмотрено через Spy.

57

Re: Вызов WinAPI функций в Lua

Еще раз большое Вам спасибо, что так доходчиво все объяснили!

58

Re: Вызов WinAPI функций в Lua

можно прямую ссылку на аналог w32.dll для 8 Квика скинуть. что-то туплю...