Как узнать имя действующего эксперта с помощью функций WinApi?

 

Как известно, в MQL4 предусмотрена функция WindowExpertName() для определения имени действующего в активном окне эксперта.

Как определить имя эксперта подобно этой функции средствами WinApi? Например, с помощью SendMessage.

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

 
dokpiknik:

Как известно, в MQL4 предусмотрена функция WindowExpertName() для определения имени действующего в активном окне эксперта.

Вовсе нет, прочитайте внимательней описание функции в справке. Функция возврщает имя эксперта, скрипта, индикатора из которого она вызвана.

 
dokpiknik, извините за нескромный вопрос, с чего это вы вдруг в девочку превартились?
 
Integer:

Вовсе нет, прочитайте внимательней описание функции в справке. Функция возврщает имя эксперта, скрипта, индикатора из которого она вызвана.


Понятно. Имелось ввиду, что вызов функции WindowExpertName() осуществлялся из самого эксперта.

А как то же самое сделать с помощью функций WinApi?

 
dokpiknik:


Понятно. Имелось ввиду, что вызов функции WindowExpertName() осуществлялся из саиого эксперта.

А как то же самое сделать с помощью функций WinApi?


Откуда вызывается эта функция WinApi? Если из самого советника, то можно пользоваться WindowExpertName(), если из DLL вызываемой из советника, то ей можно передать значение WindowExpertName(). Скорее всего какая-то совсем левая программа. Не знаю, можно попробовать в советнике сделать WindowSetText() SetWindowText(), а программе найти активное окно терминала и посмотреть текст окна.

 
Integer:
dokpiknik, извините за нескромный вопрос, с чего это вы вдруг в девочку превартились?

Всё просто, я использую готовый ник мужа. А сам он охладел к этим делам.
 
Integer:

Откуда вызывается эта функция WinApi? Если из самого советника, то можно пользоваться WindowExpertName(), если из DLL вызываемой из советника, то ей можно передать значение WindowExpertName(). Скорее всего какая-то совсем левая программа. Не знаю, можно попробовать в советнике сделать WindowSetText(), а программе найти активное окно терминала и посмотреть текст окна.

Что это за функция WindowSetText? Что-то мне не удаётся её найти... А вызов должен быть из dll. Ну, так получается. Может быть, есть что-нибудь типа Post/SendMessageA(hwnd,WM_COMMAND,33...,0)?
 
dokpiknik:

Что это за функция WindowSetText? Что-то мне не удаётся её найти... А вызов должен быть из dll. Ну, так получается. Может быть, есть что-нибудь типа PostMessageA(hwnd,WM_COMMAND,33...,0)?

Уже исправил - SetWindowText(). Вызов из dll, а dll откуда вызывается?
 
Integer:

Уже исправил - SetWindowText(). Вызов из dll, а dll откуда вызывается?

GetWindowText() даёт только заголовок окна, к сожалению, а имя советника находится где-то внутри.

А вызывается dll из самого эксперта, но передавать его оттуда в dll в моей задаче нет смысла, т.к. используется этот фрагмент для тестирования правильности имени.

 
dokpiknik:

SetWindowText() даёт только заголовок окна, к сожалению, а имя советника находится где-то внутри.

А вызывается dll из самого эксперта, но передавать его оттуда в dll в моей задаче нет смысла, т.к. используется этот фрагмент для тестирования правильности имени.

 SetWindowText() ничего не дает, она устанавливает. Установить из эксперта, а потом считать функцией GetWindowText(), но тоже нет смысла при поставленой задаче.

 

https://www.mql5.com/ru/forum/110207

Здесь есть перечень полезных функций, но, к сожалению нет того, что требуется... Между тем, большое спасибо Вам, Integer, за дискуссию.

Может быть, всё-таки это решаемая задача...? Помогите, пожалуйста...

Причина обращения: