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

 
xeon >>:

Хороший был терминал : -)))

У нас у каждого такой терминал. И красная кнопка в нем есть в определенном смысле.

Только дубинкой приходится стучать по собственной голове. :))

 

Ilnur, текст кнопки тоже можно как-то прочитать. Программа же Spy++ читает.



т.е. логика пока кнопка имеет значение "Стоп" ждем для выполнения дальнейших действий.

Подскажи функцию из User32.dll которая корректно вытаскивает текст кнопки.



Функция GetDlgItemText

Описание:
function GetDlgItemText(Dlg: HWnd; IDDlgItem: Integer; Str: PChar; MaxCount: Integer): Integer;
Считывает текст оpгана упpавления.
Паpаметpы:
Dlg: Идентификатоp блока диалога.
IDDlgItem: Идентификатоp элемента.
Str: Буфеp для пpиема текста.
MaxCount: Размеp буфеpа.
Возвpащаемое значение:
Фактическое число скопиpованных символов.


#import "user32.dll"

string GetDlgItemText (int hWnd, int IDDlgItem, string PChar, int MaxCount);

#import


Правильно ли я подключаю функцию.


А то мне терминал в логах выдаёт

2008.11.15 21:03:41 tester EURUSD,H1: cannot call function 'GetDlgItemText' from dll 'user32.dll' (error 127)

 
xeon >>:

Хороший был терминал : -)))

Xeon, вот ты ведь все начал....

Сам бы я не полез в эту степь... так нет нужда....

 
HIDDEN >>:

. . .

#import "user32.dll"

string GetDlgItemText (int hWnd, int IDDlgItem, string PChar, int MaxCount);

#import


Правильно ли я подключаю функцию.


А то мне терминал в логах выдаёт

2008.11.15 21:03:41 tester EURUSD,H1: cannot call function 'GetDlgItemText' from dll 'user32.dll' (error 127)

Правильнее так . . .
#import "user32.dll"
   int GetDlgItemTextA(int hWnd, int IDDlgItem, string PChar, int MaxCount);
#import
 
Ilnur >>:
Правильнее так . . .

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

 
HIDDEN >>:

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

Текст возвращается в строковом буфере PChar.

Сама функция возвращает фактическое число считанных символов.

 
HIDDEN >>:

Ilnur, текст кнопки тоже можно как-то прочитать. Программа же Spy++ читает.


Вот пример скрипта, который запускает тестер стратегий и ожидает его завершение. Текст кнопки считывается с помощью функции GetWindowTextA().

Интересно, что при этом окно тестера необязательно должно быть видимым.


#include <WinUser32.mqh>

#import "user32.dll"
   int GetAncestor(int hWnd, int gaFlags);
   int GetDlgItem(int hDlg, int nIDDlgItem);
#import

void start()
{
   int hMetaTrader, hTerminal, hTester, hButtonStart;
      
   hMetaTrader = GetAncestor(WindowHandle(Symbol(),Period()),2); //дескриптор основного окна терминала
	
   hTerminal = GetDlgItem(hMetaTrader,0xE81E);
   hTester = GetDlgItem(hTerminal,0x53);
   hButtonStart = GetDlgItem(GetDlgItem(hTester,0x81BF),0x40A);  //дескриптор кнопки "Старт"
	
   PostMessageA(GetDlgItem(hTester,0x81BF),WM_COMMAND,0x40A,hButtonStart); //нажимаем кнопку старт
   
   Print("Запуск тестера стратегий");
   string sButtonStartName = "";
   while(!IsStopped()) 
   {
      Sleep(3000);
      GetWindowTextA(hButtonStart,sButtonStartName,6); //считываем текст кнопки запуска тестера
      if(sButtonStartName=="Старт")                    
      {
         Print("Работа тестера завершена");
         break;
      }
   }
}
 
Ilnur >>:

Вот пример скрипта, который запускает тестер стратегий и ожидает его завершение. Текст кнопки считывается с помощью функции GetWindowTextA().

Интересно, что при этом окно тестера необязательно должно быть видимым.


Вот спасибо так спасибо. Где хоть про все эти функции толково можно почитать, рассмотреть примеры использования. Тычусь по всему инету в поисках, а толку не очень много. Может книга еть хорошая по Win API? Как бы голое описание что делает функция всетаки маловато.

 
HIDDEN >>:

Вот спасибо так спасибо. Где хоть про все эти функции толково можно почитать, рассмотреть примеры использования. Тычусь по всему инету в поисках, а толку не очень много. Может книга еть хорошая по Win API? Как бы голое описание что делает функция всетаки маловато.

Всю информацию по WinAPI функциям получаю из MSDN. Мне так привычнее . . . 

P.S. Хорошей книги по WinAPI, к сожалению, никогда не встречал.

 
Ilnur >>:

Всю информацию по WinAPI функциям получаю из MSDN. Мне так привычнее . . .


P.S. Хорошей книги по WinAPI, к сожалению, никогда не встречал.

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

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