Как управлять сторонним приложением из программы на MQL4 |
Handle — это уникальный идентификатор, который представляет собой целое 32-х битное (4-х байтное) число. Handle позволяет обращаться к чему-либо в системе не по имени (или еще чему там можно придумать), а по соответствующему уникальному идентификатору. Например каждый элемент окна имеет свой handle. Все значения идентификаторов разные, т.е. уникальные. Если есть два одинаковых окна, то элементы этих окон все равно будут иметь разные идентификаторы. Понятие handle используется не только для идентификации элементов окна, но и например для файлов, процессов, потоков (threads) и т.д. На самом деле ОС работает с файлами, процессами, потоками (threads) не по их имени, а по их идентификатору.
#include <WinUser32.mqh>
int FindWindowW(string lpClassName,string lpWindowName);
Spy++ (SPYXX.EXE) — это служебная программа на основе Win32, предоставляющее графическое представление системных процессов, потоков, окон и сообщений окон.
int h=FindWindowW(NULL,"Калькулятор");
//+------------------------------------------------------------------+
//| WinApi.mq4 |
//| Copyright 2015, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property strict
#include <WinUser32.mqh>
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
int h=FindWindowW(NULL,"Калькулятор");
Comment("\n Handle: ",h);
}
//+------------------------------------------------------------------+
SetWindowTextW(h,"Бульбулятор");
//+------------------------------------------------------------------+
//| WinApi.mq4 |
//| Copyright 2015, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property strict
#include <WinUser32.mqh>
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
string s;
int h=FindWindowW(NULL,"Калькулятор");
SetWindowTextW(h,"Бульбулятор");
Comment("\n Handle: ",h);
}
//+------------------------------------------------------------------+
16 сентября 2015
|
12 октября 2015
|
Комментарии (4)
11 pilot Сообщений: 410
а пока только
Alert(Ask," ",Bid);
12 Enot-pipsun Сообщений: 292
привязав его к кнопке индикатора выводимой в окно, на график?
11 preasto Сообщений: 445
8 Voland-Z Сообщений: 259 - Ищук Александр
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий