Popularni Postovi

Izbor Urednika - 2019

MQL4: Upravljanje računalom od savjetnika

Ponekad je potrebno programski pritisnuti gumb u aplikaciji treće strane, pročitati tekst s određene komponente, pokrenuti drugi terminal, bilo koji drugi program, otvoriti tekstualnu datoteku, isključiti računalo u određeno vrijeme i izvršiti neke druge operacije. Ovdje će nam pomoći WinAPI funkcija ShellExecute koja se nalazi u biblioteci shell32.dll i knjižnici WinUser32.mqh. Kako automatizirati cijeli ovaj postupak - učimo iz naše nove lekcije o programiranju forex robota. Tema je neobična, uvelike će proširiti vaše vještine kao programer.

Za više informacija o ShellExecute, pogledajte MSDN pomoć. Tamo možete dobiti detaljne informacije o svim funkcijama dostupnim u knjižnici WinUser32.mqh. Dat ću kratak opis svakog od njih:

  • ShellExecute - izvodi operaciju s navedenom datotekom;
  • SendMessage - Šalje navedenu poruku prozoru ili prozorima, čekajući odgovor;
  • SendNotifyMessage - isto, ali ne čeka odgovora;
  • postMessage - stavlja poruku u tok ne čekajući odgovor;
  • keybd_event - sintetizira pritiskanje određene tipke na tipkovnici;
  • mouse_event - Sintetizira kretanje miša i pritiskanje tipki;
  • FindWindow - dohvaća ručku do prozora najviše razine;
  • SetWindowText - smješta tekst u naslov prozora;
  • GetWindowText - čitanje teksta s naziva prozora;
  • GetWindowTextLength - čita broj znakova u naslovu prozora;
  • GetWindow - dohvaća kvaku prozora koja je povezana s navedenim prozorom;
  • GetParent - dohvaća ručku navedenog ili roditeljskog prozora;
  • UpdateWindow - ažurira prozor programa;
  • EnableWindow - omogućava ili onemogućuje unos tipkovnice i miša u navedeni prozor ili kontrolu;
  • DestroyWindow - deaktivira prozor ili uklanja fokus s tipkovnice;
  • ShowWindow - postavlja stanje prikaza određenog prozora;
  • SetActiveWindow - aktivira prozor;
  • AnimateWindow - omogućuje vam stvaranje posebnih efekata pri prikazivanju ili skrivanju prozora;
  • FlashWindow - jedanput čini da navedeni prozor bljesne;
  • CloseWindow - minimizira (ali ne zatvara) navedeni prozor;
  • MoveWindow - mijenja položaj i veličinu navedenog prozora;
  • SetWindowPos - mijenja veličinu i položaj djeteta, skočni prozor ili prozor najviše razine;
  • IsWindowVisible - određuje stanje vidljivosti navedenog prozora;
  • IsIconic - određuje je li navedeni prozor minimiziran;
  • IsZoomed - određuje je li prozor maksimiziran;
  • SetFocus - postavlja fokus tipkovnice na određeni prozor;
  • GetFocus - dohvaća ručku prozora s fokusom na tipkovnici;
  • GetActiveWindow - dobiva dršku aktivnog prozora;
  • IsWindowEnabled - određuje je li omogućen određeni prozor za unos tipkovnice i miša;
  • porukom - prikazuje modalni dijaloški okvir koji sadrži ikonu sustava, skup gumba i kratku poruku za određenu aplikaciju, poput statusa ili podataka o pogrešci;
  • MessageBeep - reproducira zvuk pomoću zvučnika sustava;
  • GetSystemMetrics - dohvaća zadani sistemski metrički ili konfiguracijski parametar sustava;
  • Izađite iz prozora - odjava interaktivnog korisnika, isključivanje sustava ili isključivanje i ponovno pokretanje sustava;
  • SwapMouseButton - mijenja ili vraća vrijednost lijevog i desnog gumba miša.

Što ćemo danas učiniti?

Nećemo razmatrati svaku funkciju s popisa - trebalo bi puno vremena, a osim toga ne želim vam oduzeti mogućnost neovisnog studija. Stoga jednostavno rješavamo nekoliko jednostavnih problema kao što su:

  • isključivanje ili ponovno pokretanje računala;
  • pokretanje drugog programa s terminala (na primjer, google chrome);
  • zamijenivši naziv prozora programa.

Da, to su vrlo jednostavni zadaci, ali njihovo rješenje može poslužiti kao dobar primjer za prikazivanje sposobnosti knjižnica i izgradnju složenijih algoritama na temelju ovih primjera.

Pokretanje aplikacije

Prvo što trebate učiniti je proglasiti ShellExecuteW funkciju:

// - uvoz funkcije iz vanjskog DLL-a
#import "shell32.dll"
int ShellExecuteW (int hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, int nShowCmd);
#import

Zatim pomoću metode onStart () pokrenite željeni program:

ShellExecuteW (NULL, NULL, "C: programske datoteke (x86) GoogleChromeApplicationchrome.exe", NULL, NULL, 1);

Spustimo skriptu na bilo koji grafikon i otvorit ćemo navedeni program.
Sada ćemo u našu skriptu uključiti terminalnu biblioteku WinUser32.mqh:

#include

Sada moramo pronaći ručku prozora tekućeg programa. To se može učiniti pomoću WinApi funkcije - FindWindowW.
U terminalnoj biblioteci funkcija je opisana kako slijedi:

int FindWindowW (string lpClassName, string lpWindowName);

To znači da morate unijeti naziv klase naše aplikacije u nizu parametra lpClassName, a umjesto parametra niza lpWindowName, naziv programskog prozora je "Nova kartica". Naziv klase aplikacija može se pronaći pomoću alata kao što su: Spy ++, WinSight, WinInspector i drugi. Preuzmite i instalirajte program Spy ++.

Program je vrlo jednostavan za korištenje. Dovoljno je pokrenuti program, pritisnuti gumb dvogledom i povući nišan prema prozoru koji nam je potreban, a odmah ćemo vidjeti njegovo ime, klasu i ostale podatke. U funkciji FindWindowW možete odrediti i naziv klase i naziv prozora (ili pojedinačno). Bit će dovoljno da odredimo samo naziv prozora:

int handle = FindWindowW (NULL, "Nova kartica - Google Chrome");

Informacije o ručici pronađenog prozora prikazuju se na zaslonu. Ako je kvaka 0, tada prozor nije pronađen. Nakon što primite ručku glavnog prozora, možete učiniti što god želite s aplikacijom: potražite dječji prozor koji nam je potreban, čitati i slati tekst, programski pritiskati tipke i tako dalje.

U našu šifru dodajte još jednu jednostavnu funkciju SetWindowTextW. Tekst prozora promijenit će u bilo koji drugi:

SetWindowTextW (ručka, "Moj Chromchik");

Da bismo isključili računalo, na disku nalazimo program shutdown.exe. I baš kao u prethodnom slučaju, u funkciju upišemo adresu programa s potrebnim parametrima:

ShellExecuteW (NULL, NULL, "C: WindowsSystem32shutdown.exe", "- s -t 00", NULL, 1);

Da biste isključili računalo, unesite sljedeći redak:

shutdown.exe -s -t 00

Za ponovno pokretanje računala unesite sljedeći redak:

shutdown.exe -r -t 00

Da biste vidjeli mogućnosti za različite verzije sustava Windows, slijedite ovu vezu.

Zaključak

Također možete pronaći mnoge druge zanimljive funkcije u biblioteci WinUser32.mqh koje će vam omogućiti upravljanje programom treće strane izravno od savjetnika napisanog u MQL4. Potpuni popis WinApi značajki može se naći na MSDN-u.

Na taj način možete u potpunosti kontrolirati svoje računalo putem mql skripte, automatizirati sve svoje pripreme za trgovanje: otvaranje dnevnika transakcija, vijesti s novostima prilikom otvaranja terminala i slično.

Također možete napisati savjetnika koji će trgovati na drugom trgovačkom terminalu koji ne podržava automatizirano trgovanje, na primjer, u pregledniku za binarne opcije ili na platformi za trgovanje dionicama. To otvara doista velike mogućnosti za rad i mnogo različitih zanimljivih načina za korištenje velikog broja programa za primanje, obradu podataka i manipuliranje drugim softverom.

Pogledajte video: Robot Building Tutorials #6 - Intro to MQL4 (Listopad 2019).

Ostavite Komentar