Доступ ко множеству счетов - страница 2

 
Talex >>:

Киррил, подскажите, как получены дескрипторы элементов и еще :

HIDDEN писал(а) >>

Дескриптор окна ввода номера счета 0х3E9 - Шестнадцатеричная система

Дескриптор окна ввода пароля 0x4C4 - Шестнадцатеричная система

Дескриптор окна ввода сервера 0х3E9 - Шестнадцатеричная система

Развеселил ты меня сутра.... как только имя не писали моё, но ты первый так. одна "р" и "лл" на конце.

Давайте уж лучше я буду HIDDEN.


Использую 2 программы:

1. Microsoft Spy++

2. InqSoft Window Scanner (Это монстр по управлению окнами и кнопками).


Перепроверил Дескрипторы через Spy++, выдаёт один и тот же код. Значит нужно найти надписи "Логин", "Пароль", "Сервер", потом получить дескриптов следующего элемента и уже с ним работать.

 

Извини, не хотел обидеть.

Сейчас сделаю скриншоты и покажу.

 
Talex >>:

Вот скрипт написал, но НЕ получается определить идентификатор элемента меню "Логин", выдает -1.

Подскажите, что я сделал не так?

PostMessageA(hwnd_parent, WM_COMMAND, 35429,0);
 


скрин1


скрин2


скрин3

 

getch огромное спасибо. А как Вы нашли посылаемый в сообщении код ?

P.S. все разобрался сам. Надо лишь внимательно почитать Messages посылаемые окну.

 
 

Вот рабочий вариант скрипта, который вводит Ваши данные в поля окна и нажимает кнопку Логин.

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

#property copyright "Copyright © 2009, Talex"
#property link      "talex.kaliningrad@gmail.com"
#include <WinUser32.mqh>
#define BM_CLICK   0x00F5 
#define PAUSE      500
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
void start() {
  int hwnd=WindowHandle(Symbol(),Period());
  int hwl,hlogin,hpass,hserv,hbutton;
  string login="111111",
         password="111111",
         server="111.111.111.111:443";
//--------------------------------------------------- 
   hwnd=GetAncestor(hwnd,2);                          // нашли главное окно
   if (hwnd!=0) {   
      PostMessageA(hwnd,WM_COMMAND,35429,0);          // открыли окно ввода Логина и Пароля.
      Sleep(PAUSE);
      hwl=GetLastActivePopup(hwnd);                   // нашли хэндл окна ввода Логина и Пароля 
      hlogin=GetDlgItem(GetDlgItem(hwl,0x49D),0x3E9); // нашли хэндл поля ввода Логин
      SendMessageA(hlogin,WM_CLEAR,0,0);              // послали сообщение очистить поле Логин
      //Sleep(PAUSE);
      SetWindowTextA(hlogin,login);                   // послали сообщение заполнить поле Логин
      hpass=GetDlgItem(hwl,0x4C4);                    // нашли хэндл поля ввода Пароль
      SendMessageA(hpass,WM_CLEAR,0,0);               // послали сообщение очистить поле Пароль
      //Sleep(PAUSE);
      SetWindowTextA(hpass,password);                 // послали сообщение заполнить поле Пароль
      hserv=GetDlgItem(GetDlgItem(hwl,0x50D),0x3E9);  // нашли хэндл поля ввода Сервер
      SendMessageA(hserv,WM_CLEAR,0,0);               // послали сообщение очистить поле Сервер
      //Sleep(PAUSE);
      SetWindowTextA(hserv,server);                   // послали сообщение заполнить поле Сервер
      hbutton=GetDlgItem(hwl,0x1);                    // нашли хэндл кнопки ЛОГИН
      Sleep(PAUSE*5);
      SendMessageA(hbutton,BM_CLICK,0,0);             // нажали кнопку ЛОГИН
   }
   else Print("Error: ",GetLastError());
   return;
}
//+------------------------------------------------------------------+
Причина обращения: