인기 게시물

에디터의 선택 - 2020

MQL4 : 권고 자의 컴퓨터 관리

때로는 타사 응용 프로그램에서 단추를 프로그래밍 방식으로 누르고 특정 구성 요소에서 텍스트를 읽고 다른 터미널이나 다른 프로그램을 시작하고 텍스트 파일을 열고 특정 시간에 컴퓨터를 끄고 다른 작업을 수행해야 할 수도 있습니다. shell32.dll 라이브러리와 WinUser32.mqh 라이브러리에있는 WinAPI 함수 ShellExecute가 여기에 도움이됩니다. 이 전체 프로세스를 자동화하는 방법-우리는 외환 로봇 프로그래밍에 대한 새로운 교훈에서 배웁니다. 주제는 드문 일이며 프로그래머로서의 기술을 크게 확장시킬 것입니다.

ShellExecute에 대한 자세한 내용은 MSDN 도움말을 참조하십시오. 여기에서 WinUser32.mqh 라이브러리에서 사용 가능한 모든 기능에 대한 자세한 정보를 얻을 수 있습니다. 각각에 대해 간단히 설명하겠습니다.

  • 셸 실행 -지정된 파일로 작업을 수행합니다.
  • 메시지 보내기 -응답을 기다리는 동안 지정된 메시지를 창으로 보냅니다.
  • SendNotifyMessage -동일하지만 답변을 기다리지 않습니다.
  • 메시지 -응답을 기다리지 않고 메시지를 스트림에 넣습니다.
  • keybd_event -키보드에서 주어진 키를 누르는 것을 합성합니다.
  • mouse_event -마우스 움직임과 버튼 누름을 합성합니다.
  • 창 찾기 -최상위 창에 대한 핸들을 검색합니다.
  • SetWindowText -텍스트를 창 제목에 배치합니다.
  • GetWindowText -창 이름에서 텍스트를 읽습니다.
  • GetWindowTextLength -창 제목의 문자 수를 읽습니다.
  • 겟 윈도우 -지정된 창과 관련된 창 핸들을 검색합니다.
  • Getparent -지정된 또는 부모 창의 핸들을 검색합니다.
  • 업데이트 창 -프로그램 창을 업데이트합니다.
  • 창 활성화 -지정된 창 또는 컨트롤에 키보드 및 마우스 입력을 활성화 또는 비활성화합니다.
  • DestroyWindow -창을 비활성화하거나 창에서 키보드 포커스를 제거합니다.
  • 쇼 윈도우 -지정된 창의 표시 상태를 설정합니다.
  • SetActiveWindow -창을 활성화합니다.
  • 애니메이션 창 -창을 표시하거나 숨길 때 특수 효과를 만들 수 있습니다.
  • 플래시 윈도우 -지정된 창을 한 번 깜박입니다.
  • 창 닫기 -지정된 창을 최소화하지만 닫지는 않습니다.
  • 이동창 -지정된 창의 위치와 크기를 변경합니다.
  • SetWindowPos -자식, 팝업 또는 최상위 창의 크기와 위치를 변경합니다.
  • IsWindowVisible -지정된 창의 가시성 상태를 결정합니다.
  • 이시 콘 -지정된 창이 최소화되었는지 확인합니다.
  • 확대 -창이 최대화되었는지 확인합니다.
  • 초점 -키보드 포커스를 지정된 창으로 설정합니다.
  • 초점 -키보드 포커스가있는 창 핸들을 검색합니다.
  • GetActiveWindow -활성 창의 핸들을 가져옵니다.
  • IsWindowEnabled -키보드 및 마우스 입력을 위해 지정된 창이 활성화되어 있는지 확인합니다.
  • 메시지 박스 -시스템 아이콘, 버튼 세트 및 상태 또는 오류 정보와 같은 특정 응용 프로그램에 대한 짧은 메시지가 포함 된 모달 대화 상자를 표시합니다.
  • MessageBeep -시스템 스피커를 사용하여 사운드를 재생합니다.
  • GetSystemMetrics -지정된 시스템 메트릭 또는 시스템 구성 매개 변수를 검색합니다.
  • 출구 창 -대화식 사용자 로그 아웃, 시스템 종료 또는 시스템 종료 및 재부팅
  • 스왑 마우스 버튼 -왼쪽 및 오른쪽 마우스 버튼의 값을 변경하거나 복원합니다.

오늘 우리는 무엇을 할 것인가?

우리는 목록에서 각 기능을 고려하지 않을 것입니다-많은 시간이 걸리고, 게다가 독자적인 연구 가능성을 없애고 싶지 않습니다. 따라서 다음과 같은 몇 가지 간단한 문제를 간단히 해결합니다.

  • 컴퓨터 종료 또는 재시작;
  • 터미널에서 다른 프로그램을 시작 (예 : Google 크롬);
  • 프로그램 창의 이름을 바꿉니다.

예, 이는 매우 간단한 작업이지만 해당 솔루션은 라이브러리의 기능을 보여주고 이러한 예제를 기반으로보다 복잡한 알고리즘을 구축하는 좋은 예가 될 수 있습니다.

응용 프로그램 시작

가장 먼저 할 일은 ShellExecuteW 함수를 선언하는 것입니다.

//-외부 DLL에서 함수 가져 오기
#import "shell32.dll"
int ShellExecuteW (int hwnd, 문자열 lpOperation, 문자열 lpFile, 문자열 lpParameters, 문자열 lpDirectory, int nShowCmd);
#import

그런 다음 onStart () 메소드에서 원하는 프로그램을 실행하십시오.

ShellExecuteW (NULL, NULL, "C : 프로그램 파일 (x86) GoogleChromeApplicationchrome.exe", NULL, NULL, 1);

차트에 스크립트를 놓으면 지정된 프로그램이 열립니다.
이제 스크립트에 WinUser32.mqh 터미널 라이브러리를 포함시킬 것입니다 :

#include

이제 실행중인 프로그램의 창 핸들을 찾아야합니다. 이것은 WinApi 함수 인 FindWindowW를 사용하여 수행 할 수 있습니다.
터미널 라이브러리에서 기능은 다음과 같이 설명됩니다.

int FindWindowW (문자열 lpClassName, 문자열 lpWindowName);

즉, lpClassName 문자열에 응용 프로그램의 클래스 이름을 입력해야하며 lpWindowName 매개 변수 대신 프로그램 창의 이름은 "새 탭"입니다. 응용 프로그램 클래스의 이름은 Spy ++, WinSight, WinInspector 등과 같은 유틸리티를 사용하여 찾을 수 있습니다. Spy ++ 프로그램을 다운로드하여 설치하십시오.

이 유틸리티는 사용하기 매우 쉽습니다. 프로그램을 시작하고 쌍안경으로 버튼을 누르고 시력을 필요한 창으로 드래그하면 이름, 클래스 및 기타 정보가 즉시 표시됩니다. FindWindowW 함수에서 클래스 이름과 창 이름 (또는 개별)을 모두 지정할 수 있습니다. 창 이름 만 지정하면 충분합니다.

int handle = FindWindowW (NULL, "새 탭-Google 크롬");

찾은 창의 핸들이있는 정보가 화면에 표시됩니다. 핸들이 0이면 창을 찾을 수 없습니다. 기본 창의 핸들을 받으면 응용 프로그램으로 원하는 모든 작업을 수행 할 수 있습니다. 필요한 자식 창을 찾고, 텍스트를 읽고 보내고, 버튼을 프로그래밍 방식으로 누르는 등의 작업을 수행합니다.

코드에 간단한 또 ​​다른 SetWindowTextW 함수를 추가하십시오. 창의 텍스트를 다른 텍스트로 변경합니다.

SetWindowTextW (핸들, "My Chromchik");

컴퓨터를 끄려면 디스크에서 shutdown.exe 프로그램을 찾으십시오. 그리고 앞의 경우와 마찬가지로 필요한 매개 변수를 사용하여 프로그램 주소를 함수에 씁니다.

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

컴퓨터를 끄려면 다음 줄을 입력하십시오.

shutdown.exe -s -t 00

컴퓨터를 다시 시작하려면 다음 줄을 입력하십시오.

shutdown.exe -r -t 00

다른 버전의 Windows에 대한 옵션을 보려면이 링크를 따르십시오.

결론

또한 WinUser32.mqh 라이브러리에서 MQL4로 작성된 어드바이저에서 직접 써드 파티 프로그램을 관리 할 수있는 많은 흥미로운 기능을 찾을 수 있습니다. WinApi 기능의 전체 목록은 MSDN에서 찾을 수 있습니다.

따라서 mql 스크립트에서 컴퓨터를 완벽하게 제어하고 거래 준비, 즉 거래 로그 열기, 터미널을 열 때 뉴스 사이트 등 모든 준비를 자동화 할 수 있습니다.

자동 거래를 지원하지 않는 다른 거래 터미널, 예를 들어 바이너리 옵션의 브라우저 응용 프로그램 또는 주식 거래 플랫폼에서 거래 할 고문을 작성할 수도 있습니다. 이것은 데이터를 수신하고 처리하고 다른 소프트웨어를 조작하기 위해 다양한 프로그램을 사용할 수있는 다양한 기회를 제공합니다.

비디오 시청: Robot Building Tutorials #6 - Intro to MQL4 (이월 2020).

귀하의 코멘트를 남겨