Lemmik Postitused

Toimetaja Valik - 2020

MQL4: arvutihaldus nõustajalt

Mõnikord on vaja kolmanda osapoole rakenduses programmiliselt vajutada nuppu, lugeda konkreetsest komponendist pärit teksti, käivitada mõni muu terminal, mõni muu programm, avada tekstifail, teatud ajal arvuti välja lülitada ja teha muid toiminguid. Siin aitab meid WinAPI funktsioon ShellExecute, mis asub shell32.dll teegis ja WinUser32.mqh teegis. Kuidas kogu seda protsessi automatiseerida - me õpime oma uuest õppetunnist Forex-robotite programmeerimise kohta. Teema on ebatavaline, see laiendab oluliselt teie oskusi programmeerijana.

Lisateavet ShellExecute'i kohta leiate MSDN-i spikrist. Siit saate üksikasjalikku teavet kõigi funktsioonide kohta, mis on saadaval WinUser32.mqh teegis. Kirjeldan lühidalt neist kõiki:

  • Shellexecute - teostab määratud failiga toimingu;
  • Saada teade - saadab määratud teate aknale või akendesse, oodates vastust;
  • SaadaNotifyMessage - sama, kuid ei oota vastust;
  • Postikiri - paneb sõnumi voosse vastust ootamata;
  • keybd_event - sünteesib vastava klahvi vajutamise klaviatuuril;
  • hiire sündmus - sünteesib hiire liikumist ja nupuvajutusi;
  • Otsiaken - tõmbab käepideme ülataseme aknale;
  • SetWindowText - paigutab teksti akna pealkirja;
  • GetWindowText - loeb teksti akna nimest;
  • GetWindowTextLength - loeb tähemärkide arvu akna pealkirjas;
  • Hangi aken - hangib akna käepideme, mis on seotud määratud aknaga;
  • Läbipaistvaks - hangib määratud või vanemakna käepideme;
  • Uuendusaken - värskendab programmi akent;
  • Luba aken - lubab või keelab klaviatuuri ja hiire sisestamise määratud aknasse või juhtelementi;
  • DestroyWindow - deaktiveerib akna või eemaldab sellest klaviatuuri fookuse;
  • Näituseaken - seab määratud akna kuvaoleku;
  • SetActiveWindow - aktiveerib akna;
  • Aken aknas - võimaldab teil luua eriefekte akende kuvamisel või peitmisel;
  • Välklamp - paneb määratud akna üks kord vilkuma;
  • Sule aken - minimeerib (kuid ei sulge) määratud akent;
  • Teisalda akent - muudab määratud akna asukohta ja suurust;
  • SetWindowPos - muudab lapse, hüpikakna või ülataseme akna suurust ja asukohta;
  • IsWindowVisible - määrab kindlaksmääratud akna nähtavuse oleku;
  • Isicon - määrab, kas määratud aken on viidud miinimumini;
  • IsZoomed - määrab, kas aken on maksimeeritud;
  • Setfookus - seab klaviatuuri fookuse määratud aknasse;
  • Getfookus - hangib klaviatuuri fookusega akna käepideme;
  • GetActiveWindow - saab aktiivse akna käepideme;
  • IsWindowEnabled - määrab, kas klaviatuuri ja hiire sisestamiseks määratud aken on lubatud;
  • Sõnumikast - kuvab modaalse dialoogiboksi, mis sisaldab süsteemi ikooni, nuppude komplekti ja konkreetse rakenduse lühisõnumit, näiteks oleku või tõrke teave;
  • MessageBeep - taasesitab heli süsteemi kõlari abil;
  • GetSystemMetrics - hangib määratud süsteemimõõdiku või süsteemi konfiguratsiooniparameetri;
  • Akendest väljumine - interaktiivse kasutaja väljalogimine, süsteemi väljalülitamine või süsteemi väljalülitamine ja taaskäivitamine;
  • Hiirenupp - muudab või taastab hiire vasaku ja parema nupu väärtuse.

Mida me täna teeme?

Me ei võta igat funktsiooni loendist arvesse - see võtaks palju aega ja lisaks ei taha ma sinult iseseisva õppimise võimalust ära võtta. Seetõttu lahendame lihtsalt mõned lihtsad probleemid, näiteks:

  • arvuti väljalülitamine või taaskäivitamine;
  • teise programmi käivitamine terminalist (näiteks google chrome);
  • programmi akna nime asendamine.

Jah, need on väga lihtsad ülesanded, kuid nende lahendus võib olla heaks näiteks raamatukogude võimaluste demonstreerimiseks ja nende näidete põhjal keerukamate algoritmide loomiseks.

Rakenduse käivitamine

Esimese asjana tuleb kuulutada funktsioon ShellExecuteW:

// - funktsiooni importimine välisest DLL-ist
#import "shell32.dll"
int ShellExecuteW (int hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, int nShowCmd);
#import

Seejärel käivitage onStart () meetodil soovitud programm:

ShellExecuteW (NULL, NULL, "C: Program Files (x86) GoogleChromeApplicationchrome.exe", NULL, NULL, 1);

Lasime skripti suvalisele diagrammile ja avame määratud programmi.
Nüüd lisame oma skripti WinUser32.mqh terminali teegi:

# kaasata

Nüüd peame leidma töötava programmi akna käepideme. Seda saab teha WinApi funktsiooni - FindWindowW abil.
Terminali raamatukogus kirjeldatakse funktsiooni järgmiselt:

int FindWindowW (string lpClassName, string lpWindowName);

See tähendab, et peate sisestama stringi lpClassName parameetri meie rakenduse klassi nime ja stringi lpWindowName parameetri asemel on programmi akna nimi “Uus vahekaart”. Rakendusklassi nime leiate selliste utiliitide abil nagu Spy ++, WinSight, WinInspector ja teised. Laadige alla ja installige programm Spy ++.

Utiliiti on väga lihtne kasutada. Piisab programmi käivitamisest, vajutage binokliga nuppu ja lohistage vaatepilt vajalikku akent ning näeme kohe selle nime, klassi ja muud teavet. Funktsioonis FindWindowW saate määratleda nii klassi kui ka akna nime (või eraldi). Piisab, kui täpsustame ainult akna nime:

int käepide = FindWindowW (NULL, "Uus vahekaart - Google Chrome");

Ekraanil kuvatakse teave leitud akna käepidemega. Kui käepide on 0, siis akent ei leitud. Olles saanud peaakna käepideme, saate rakendusega teha kõike, mis teile meeldib: otsige meile vajalikku alaaknat, lugege ja saatke teksti, vajutage nuppe programmiliselt ja nii edasi.

Lisage meie koodile veel üks lihtne funktsioon SetWindowTextW. See muudab akna teksti muuks:

SetWindowTextW (käepide, "Minu Chromchik");

Arvuti väljalülitamiseks leiame kettalt programmi shutdown.exe. Ja nagu ka eelmisel juhul, kirjutame funktsiooni programmi aadressi vajalike parameetritega:

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

Arvuti väljalülitamiseks sisestage järgmine rida:

shutdown.exe -s -t 00

Arvuti taaskäivitamiseks sisestage järgmine rida:

shutdown.exe -r -t 00

Windowsi eri versioonide valikute nägemiseks järgige seda linki.

Järeldus

WinUser32.mqh teegist leiate ka palju muid huvitavaid funktsioone, mis võimaldavad teil hallata kolmanda osapoole programmi otse MQL4-s kirjutatud nõustajalt. WinApi funktsioonide täieliku loetelu leiate MSDN-ist.

Nii saate oma arvutit täielikult juhtida mql-skripti abil, automatiseerida kõiki kauplemiseks vajalikke ettevalmistusi: avatud tehingupäevikuid, uudiste saite terminali avamisel jne.

Võite kirjutada ka nõustaja, kes kaupleks mõnes teises kauplemisterminalis, mis ei toeta automatiseeritud kauplemist, näiteks brauserirakenduses binaarsete optsioonide jaoks või platvormil aktsiatega kauplemiseks. See avab tõesti suurepäraseid töövõimalusi ja paljusid erinevaid huvitavaid viise, kuidas kasutada mitmesuguseid programme andmete vastuvõtmiseks, töötlemiseks ja muu tarkvaraga manipuleerimiseks.

Jäta Oma Kommentaar