Автоматизация с перехватом нажатия кнопок и мыши. - страница 2

 
Avals >>:

Должны помочь функции "int GetLastKeyLP()" и "int GetLastMouseLP()" имеющиеся в этой же библиотеке. А результат использовать в функциях int SendMessageA (int hWnd, int Msg, int wParam, int lParam); int PostMessageA (int hWnd, int Msg, int wParam, int lParam);

Что-то у меня терминал падает постоянно при вызове.


int hwnd = WindowHandle(Symbol(),Period());
SendMessageA(hwnd, WM_COMMAND, 514, 0);


и


int hwnd = WindowHandle(Symbol(),Period());
PostMessageA(hwnd, WM_COMMAND, 514, 0);


Хотя скрипт запущенный выводит вот этот код при нажатии на кнопку тестера стратегий в понели инструментов


2008.11.14 15:26:58 shablon EURUSD,Weekly: Êîä ìûøè=513 èç îêíà EURUSD,Weekly

 

514 что это?

#import "user32.dll"
   int GetParent (int hWnd);
   int PostMessageA (int hWnd, int Msg, int wParam, int lParam);
#import
//+------------------------------------------------------------------+

   int hwnd = WindowHandle(Symbol(), NULL);

   while (!IsStopped())   {
     hwnd = GetParent(hwnd);
     if (hwnd==0) break;
     int hwnd_parent = hwnd;   }

   PostMessageA(hwnd_parent,WM_COMMAND,33315,0)


что то типо этого попробуй

 
sabluk >>:

514 что это?


Код возвращаемый скриптом shablon.

Продолжая тему, как теперь нажать кнопку старт.

Только если можно не кодом конкретно как нажать подскажите, а хочется узнать сам принцип как вытаскивается это значение.

 

я ссылку давал там список команд

самому можно ловить программой типа Winspector Spy

 
HIDDEN >>:

Код возвращаемый скриптом shablon.

Продолжая тему, как теперь нажать кнопку старт.

Только если можно не кодом конкретно как нажать подскажите, а хочется узнать сам принцип как вытаскивается это значение.

Рекомендую утилиту Spy++, которая входит в состав дистрибутива Visual Studio.

 
Ilnur >>:

Рекомендую утилиту Spy++, которая входит в состав дистрибутива Visual Studio.

Прогу поставил, потыкался в ней и не понял нифига. Проверял уже на кнопках у которых код известен, программа его не выводит.

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


например вот эти коды как с помощью программы вытащить


33018 - переключение на представление "бары"
33019 - переключение на представление "свечи"
33022 - переключение на представление "линия"

 

исправил скрипт вот так работает

#import "user32.dll"
   int GetParent (int hWnd);
   int PostMessageA (int hWnd, int Msg, int wParam, int lParam);
#import
#define WM_COMMAND       0x0111
//+------------------------------------------------------------------+
int start()
{
   int hwnd = WindowHandle(Symbol(), NULL);

   while (!IsStopped())   {
     hwnd = GetParent(hwnd);
     if (hwnd==0) break;
     int hwnd_parent = hwnd;   }

   PostMessageA(hwnd_parent,WM_COMMAND,33315,0);
   return(0);
}
//+------------------------------------------------------------------+
 
пробуй вместо 33315 другие коды из списка в той ветке
 
sabluk >>:
пробуй вместо 33315 другие коды из списка в той ветке

Меня не проверка кодов интересует, а как эти коды узнать. Мне нужно вызвать тестер и нажать кнопку Старт у тестера и в последствии дальше кнопки нажимать. А что-бы все это нажимать, нужно понять как эти коды узнавать.


а код что Вы дали я подправил сам сразу.

 

просто из той ветки мне еще не совсем ясно как на окно тестера переключиться. т.е. узнать Handle окна а потом прогнать цыкл. Но проблема в том что такой подход не очень хороший, терминал часто падает.