151

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

Спу++ показывает по панели:
Класс - TPanel
Родитель - главное окно,
предыдущий - кнопка, которая на главном окне,
из детей он нашел следующюю панель с надписью "0".
Ткнул в TCSpinEdit на этой панели, из предков у него никого нет, увидел только следующий TCSpinEdit - у меня их там несколько.
FindWindowEx проверил на тестовой программе, написанной на Билдере, она тоже не нашла кнопок на панели.
Про Community Edition почитал, они вроде ключ дают на год бесплатный - так что если что пойдет не так, могут и не дать. Кутя мне не понравилась, тыкался как то в Visual Studio, вот про нее и думаю... Так что с 6 билдера меня еще выкорчевывать надо. smile

152

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

потому, что кнопки на SpinEdit - не окна, эти кнопки нарисованы. это все сильно зависит от типа контрола, который вы используете, чем он более "модный", тем больше вероятность, что отдельных составляющих в виде самостоятельных окон вы не найдете.

153

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

Угу, - сталкивался с таким, уж очень хотелось подружиться с одной программой, на Дельфях написанной, а там автор добавил для красивости платный компонент деффки кажется, и ни в какую они не отзывались. Пришлось лезть с черного хода...

154

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

Alex пишет:

Угу, - сталкивался с таким, уж очень хотелось подружиться с одной программой, на Дельфях написанной, а там автор добавил для красивости платный компонент деффки кажется, и ни в какую они не отзывались. Пришлось лезть с черного хода...

Но ведь изначально было сказано:

Alex пишет:

Я посадил кнопки и едит на красивую синенькую панель. Красотища же, е-мое. В результате и в тестовой программе, и в квике - 0!
Перетащил все прямо на форму - все нашлось!

Теперь выясняется, что конкретный контрол принципиально обнаружить нельзя.
Что-то ту не сходится. Или по ходу пьессы при переносе на панельку и сам контрол поменялся?

155 (2021-07-21 06:02:38 отредактировано Alex)

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

На панельке FindWindowEx кнопок не нашел - это факт. Ни из Квика, ни из тестовой проги. Нашел когда перенес кнопки на главную форму. Названия кнопок не менялись, класс тоже. Чьи это глюки - винды или буилдера, мне не захотелось разбираться, зачем?

156

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

Alex пишет:

зачем?

Ok, вам виднее wink
Если надобность отпала - то и хорошо.

157

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

Если кому интересно еще, отчитаюсь:
Кнопка->visible = false - не находит.
Спрятал кнопки под панель - изменил Z - не находит.
Итог, видит только то, что видимо на форме.
Извините, если поздно отвечаю, у меня не один проект, прыгаю с одного на другое...

158

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

Нет. Если вы на пустую форму поместите tbutton и зададите ей visible = false, то все равно эта кнопка будет находиться spy, psexplorer и прочими подобными утилитами.

159

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

Добрый день!
Использовал стандартную версию 1.0 скрипта для автологина в терминал Квик 7.х
Установил обновления до версии Квик 8.2.х и обновил библиотеку x64-Lua51
Скрипт запускается но авторизация не проходит т.к. имя и пароль передаются в одно и тоже окно для ввода логина и судя по всему не нажимается кнопка входа.
Подскажите как заставить скрипт писать в правильное окно пароль и нажать кнопку Вход?

160

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

hks-msk пишет:

Добрый день!
Использовал стандартную версию 1.0 скрипта для автологина в терминал Квик 7.х
Установил обновления до версии Квик 8.2.х и обновил библиотеку x64-Lua51
Скрипт запускается но авторизация не проходит т.к. имя и пароль передаются в одно и тоже окно для ввода логина и судя по всему не нажимается кнопка входа.
Подскажите как заставить скрипт писать в правильное окно пароль и нажать кнопку Вход?

Нашел ответ в параллельной теме.

161

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

Как можно достучаться до списка загруженных Lua-скриптов?
Сам контрол нахожу, а вот его список получить не удается. Что интересно этот контрол имеет класс "Button"

162

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

hsh пишет:

Как можно достучаться до списка загруженных Lua-скриптов?
Сам контрол нахожу, а вот его список получить не удается. Что интересно этот контрол имеет класс "Button"

Никак.
Это какой-то самописный контрол QUIK, который общается с внешним миром не через сообщения Windows, API его закрыт.

163

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

Если это multilist, то можно при помощи моей библиотеки.

164 (2022-09-03 16:02:17 отредактировано igor)

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

Здравствуйте.
У меня такой вопрос. Можно ли из lua-скрипта определить инструмент окна графика, которое активно на данный момент?
Мне кажется, что с помощью API-функций это сделать можно. Например, получить текст заголовка активного окна (а в нём присутствует и название инструмента).
Но пока не могу понять как это можно сделать имеющимися средствами..

165

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

Igor,
Как найти окно здесь много есть примеров.
А далеше GetWindowText для получения заголовка.

166

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

swerg, спасибо.
Да, действительно решение тут есть. У меня получилось следующее:

      hQUIKWnd = w32.FindWindowEx(0, 0, "InfoClass", "")
      hMDI = w32.FindWindowEx(hQUIKWnd, 0, "MDIClient", "")
      hActWnd = w32.FindWindowEx(hMDI, 0, "", "") --Активное окно (дескриптор)

Я не очень большой специалист по api-функциям. Мне казалось, что здесь не обойтись без функции GetForegroundWindow или GetActiveWindow. Но оказалось, что хватило имеющегося функционала.

167

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

Я только не уверен, что FindWindowEx первым всегда будет возвращать активное окно. Так что может указанные вами функции и будут полезны.

168

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

Если верить описанию к FindWindowEx , то поиск начинается со следующего дочернего окна в Z - последовательности. Так что и теоретически должно работать. Возможно в некоторых ситуациях не будет работать. Но пока нареканий нет - FindWindowEx возвращает первым именно активное окно.
Функции GetForegroundWindow и GetActiveWindow отсутствуют в w32 (SetForegroundWindow есть). Может имеет смысл добавить их туда?

169

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

А можно ли получить идентификатор графика, зная дескриптор его окна?

170

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

igor, нет, нельзя.

171 (2022-10-25 17:17:18 отредактировано dima.v.blank)

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

QUIK 7.25.1.3 полет отличный! Благодарю!
на 9 позже проверю

-- скрипт при запуске переключает режим для окна "поверх всех" (вкл/выкл)
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)

172

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

Здравствуйте, подскажите пожалуйста, как получить активную строчку из таблицы текущих торгов при щелчке мыши или стрелок вверх/вниз?
Хочу получить информацию из файла по текущему инструменту используя код инструмента этой таблицы. Сейчас это реализовал так в lua: после щелчка в таблице получаю бары с графика (getCandlesByIndex) и поиском в таблице "securities" по легенде из бара (функцией getItem) нахожу нужный код.
Думаю, что есть функция в w32.dll или другой dll, которая может вернуть или текущую строчку или текст, по которому щелкнул в этой таблице.

173

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

dimaslider, нет такой возможности, увы.