1

Тема: Как активировать окно графика?

Подскажите пожалуйста как активировать окно графика
Нашел его вот так
Wind = w32.FindWindowEx(hQuik,0, "MDIClient", "") 
Wind2 = w32.FindWindowEx(Wind,0, "HostWindow", "SiZ0 График цены и объёма #9 - [60 минут]")
нужно чтобы по условию оно показалось по такому же принципу как в менеджере окон, то есть активировалось

2

Re: Как активировать окно графика?

iforts пишет:

Подскажите пожалуйста как активировать окно графика
Нашел его вот так
Wind = w32.FindWindowEx(hQuik,0, "MDIClient", "") 
Wind2 = w32.FindWindowEx(Wind,0, "HostWindow", "SiZ0 График цены и объёма #9 - [60 минут]")
нужно чтобы по условию оно показалось по такому же принципу как в менеджере окон, то есть активировалось

Вот нашел что то попробую:
$KEYDOWN = 0x0100  //WM_KEYDOWN message
$KEYUP = 0x0101  //WM_KEYUP message
$w = 0x57   // Virtual-Key Code  клавиши W

POSTMESSAGE ($HWND, $KEYDOWN , $w , 0 ) //нажал
POSTMESSAGE ($HWND, $KEYUP , $w , 0 ) //отпустил

3

Re: Как активировать окно графика?

все что нашел
local WM_SYSCOMMAND = 0x0112
local SC_MAXIMIZE = 0xF030
local SC_MINIMIZE = 0xF020
local SC_RESTORE = 0xF120
w32.PostMessage(Wind2, WM_SYSCOMMAND, SC_MAXIMIZE, 0)--++ на весь экран квика
w32.PostMessage(Wind2, WM_SYSCOMMAND, SC_RESTORE, 0)--++ восстановление если свернуто в размер до сворачивания
w32.PostMessage(Wind2, WM_SYSCOMMAND, SC_MINIMIZE, 0) -- свернуть

Вопрос к профессионалам, как найти и показать окно если оно на другой вкладке? То есть также как в менеджере окон. Открыть вкладку и активировать окно

4 (2020-12-08 21:13:54 отредактировано swerg)

Re: Как активировать окно графика?

Попробую поизображать профессионала smile

Найти окна с других вкладок - это обычным образом. Он найдётся, т.к. они есть - просто скрыты.
А вот информацию о привязке окон ко вкладкам вы не вытащите из терминала. QUIK при переключении вкладок просто скрывает / показывает те или иные окна.
Правда он делает это как-то несколько хитро.
Я попробовал активировать окно с другой вкладки через w32.ShowWindow() (временно добавил её в библиотеку), окно отображается, конечно, но:
- как бы на текущей вкладке (хотя если вкладки попереключать - то оно пропадёт и отобразится только на нужной вкладке, конечно)
- что совсем плохо - у активированного таким образом окна нет системного меню, что уже вообще странно; видимо QUIK их не просто скрывает, а еще и скрытых окон отрезает какую-то часть функционала, чтобы "не мешались".

Так что про активирование окон с других вкладок предлагаю забыть. Активировать можно, например, вынесенные за пределы основного окна окошки.

Возможно можно всё это попробовать как-то решить и поподбирать такие команды, которые все эти проблемы решат, хоть я и не уверен в успехе, но, по-моему, не стоит оно того.

5

Re: Как активировать окно графика?

Да в общем я согласен с вами. Спасибо что уделили время этому вопросу. Тоже сидел весь  день сегодня с этим вопросом и понял что привязки графика к вкладке не добыть нормально, хотя в меню вкладки они отображаются, но добраться до этого не получится.
Все что мне удалось это вот это
w32.PostMessage(Wind2, WM_SYSCOMMAND, SC_MAXIMIZE, 0)--++
w32.PostMessage(Wind2, WM_SYSCOMMAND, SC_RESTORE, 0)--++ восстановление
w32.PostMessage(Wind, WM_MDIACTIVATE,Wind2,0)--++ активация окна графика если активно окно квик
если только все окна запулить на одну вкладку и свернуть, а потом разворачивать из скрипта или макимизировать

6

Re: Как активировать окно графика?

Или вот еще можно все вкладки обозвать кодами инструментов и размещать графики только там для каждого и при условии открывать вкладку с этим инструментом, может так даже лучше, какой то порядок соблюдать придется

7

Re: Как активировать окно графика?

iforts пишет:

хотя в меню вкладки они отображаются, но добраться до этого не получится.

Причем при отображении контекстного меню вкладка становится активной. (Что, вообще говоря, есть явная кривость поведения, по-моему). А значит, даже если захотеть получать список окон из контекстных меню вкладок (в скрипте) - придётся вкладки эти "перещёлкивать", что приведёт к морганию окон, что некрасиво, конечно.

iforts пишет:

w32.PostMessage(Wind, WM_MDIACTIVATE,Wind2,0)--++ активация окна графика если активно окно квик

А системное меню этого окна (на иконке в левом верхнем углу) после такой активизации работает?

8

Re: Как активировать окно графика?

Да работает проверил

9

Re: Как активировать окно графика?

В общем немного модифицировал ваш код со вкладками, буду открывать вкладку по коду инструмента по которому сигнал, так даже лучше будет, так как там будет сразу несколько графиков, что в общем то и требовалось, то есть по сигналу открывается вкладка и все там все есть))

10

Re: Как активировать окно графика?

на форуме квик предложил им сделать поиск графика через идентификатор графика, но думаю что это займет пару сотен лет

11

Re: Как активировать окно графика?

iforts пишет:

Да работает проверил

По левой клавише мышки

12

Re: Как активировать окно графика?

Причем при отображении контекстного меню вкладка становится активной. (Что, вообще говоря, есть явная кривость поведения, по-моему). А значит, даже если захотеть получать список окон из контекстных меню вкладок (в скрипте) - придётся вкладки эти "перещёлкивать", что приведёт к морганию окон, что некрасиво, конечно.

-----------------------
видимо у них у самих с этим проблемы)) поэтому и сделали сразу активацию мышкой

13

Re: Как активировать окно графика?

Думаю все таки можно добраться до грфика через таблицу менеджер окон с помощью lua_multilist https://quik2dde.ru/viewtopic.php?id=284 и нажать строку дажды