버튼 및 마우스 클릭을 가로채는 자동화. - 페이지 5

 
xeon >> :

터미널이 좋았어요 :-)))

우리 각자에게는 그러한 터미널이 있습니다. 그리고 어떤 의미에서 빨간 버튼이 있습니다.

클럽에서만 자신의 머리를 두드려야합니다. :))

 

Ilnur , 버튼의 텍스트도 어떻게든 읽을 수 있습니다. Spy++ 프로그램이 읽습니다.



저것들. 버튼이 "중지"로 설정되어 있는 동안 추가 작업을 수행하기 위해 대기합니다.

버튼의 텍스트를 올바르게 추출하는 User32.dll의 프롬프트 기능.



GetDlgItemText 함수

설명:
함수 GetDlgItemText(Dlg: HWnd; IDDlgItem: 정수; Str: PChar; MaxCount: 정수): 정수;
컨트롤의 텍스트를 읽습니다.
매개변수:
Dlg: 대화 상자의 식별자입니다.
IDDlgItem: 항목 ID입니다.
Str: 텍스트를 수신할 버퍼입니다.
MaxCount: 버퍼 크기입니다.
반환 값:
복사된 실제 문자 수입니다.


# "user32.dll" 가져오기

문자열 GetDlgItemText(int hWnd, int IDDlgItem, 문자열 PChar, int MaxCount);

#수입


기능을 올바르게 연결하고 있습니까?


그런 다음 터미널에서 로그를 제공합니다.

2008.11.15 21:03:41 테스터 EURUSD,H1: dll 'user32.dll'에서 'GetDlgItemText' 함수를 호출할 수 없습니다(오류 127).

 
xeon >> :

터미널이 좋았어요 :-)))

Xeon, 당신이 모든 것을 시작했습니다 ....

나 자신은이 대초원에 오르지 않을 것입니다 ... 그래서 필요가 없습니다 ....

 
HIDDEN >> :

. . .

# "user32.dll" 가져오기

문자열 GetDlgItemText(int hWnd, int IDDlgItem, 문자열 PChar, int MaxCount);

#수입


기능을 올바르게 연결하고 있습니까?


그런 다음 터미널에서 로그를 제공합니다.

2008.11.15 21:03:41 테스터 EURUSD,H1: dll 'user32.dll'에서 'GetDlgItemText' 함수를 호출할 수 없습니다(오류 127).

더 정확하게 그렇습니다. . .
 #import "user32.dll"
   int GetDlgItemTextA ( int hWnd , int IDDlgItem , string PChar , int MaxCount ) ;
#import
 
Ilnur >> :
더 정확하게 그렇습니다. . .

결국 이것은 정수를 반환하지만 버튼의 텍스트가 필요합니다.

 
HIDDEN >> :

결국 이것은 정수를 반환하지만 버튼의 텍스트가 필요합니다.

텍스트는 PChar 문자열 버퍼에 반환됩니다.

함수 자체는 읽은 실제 문자 수를 반환합니다.

 
HIDDEN >> :

Ilnur , 버튼의 텍스트도 어떻게든 읽을 수 있습니다. Spy++ 프로그램이 읽습니다.


다음은 전략 테스터를 시작하고 완료될 때까지 기다리는 스크립트의 예입니다. 버튼 텍스트는 GetWindowTextA() 함수를 사용하여 읽습니다.

흥미롭게도 테스터 창은 표시될 필요가 없습니다.


 #include <WinUser32.mqh>

#import "user32.dll"
   int GetAncestor ( int hWnd , int gaFlags ) ;
   int GetDlgItem ( int hDlg , int nIDDlgItem ) ;
#import

void start ( )
{
   int hMetaTrader , hTerminal , hTester , hButtonStart ;
      
   hMetaTrader = GetAncestor ( WindowHandle ( Symbol ( ) , Period ( ) ) , 2 ) ; //дескриптор основного окна терминала
	
   hTerminal = GetDlgItem ( hMetaTrader , 0xE81E ) ;
   hTester = GetDlgItem ( hTerminal , 0x53 ) ;
   hButtonStart = GetDlgItem ( GetDlgItem ( hTester , 0x81BF ) , 0x40A ) ;  //дескриптор кнопки "Старт"
	
   PostMessageA ( GetDlgItem ( hTester , 0x81BF ) , WM_COMMAND , 0x40A , hButtonStart ) ; //нажимаем кнопку старт
   
   Print ( "Запуск тестера стратегий" ) ;
   string sButtonStartName = "" ;
   while ( ! IsStopped ( ) ) 
   {
      Sleep ( 3000 ) ;
      GetWindowTextA ( hButtonStart , sButtonStartName , 6 ) ; //считываем текст кнопки запуска тестера
      if ( sButtonStartName = = "Старт" )                    
      {
         Print ( "Работа тестера завершена" ) ;
         break ;
      }
   }
}
 
Ilnur >> :

다음은 전략 테스터를 시작하고 완료될 때까지 기다리는 스크립트의 예입니다. 버튼 텍스트는 GetWindowTextA() 함수를 사용하여 읽습니다.

흥미롭게도 테스터 창은 표시될 필요가 없습니다.


정말 감사합니다. 이러한 모든 기능에 대해 최소한 합리적으로 읽을 수 있는 경우 사용 예를 고려하십시오. 인터넷 여기저기 샅샅이 뒤져보지만 별 의미가 없다. Win API에 대한 좋은 책이 있을까요? 함수가 무엇을 하는지에 대한 단순한 설명이 여전히 충분하지 않은 것처럼.

 
HIDDEN >> :

정말 감사합니다. 이러한 모든 기능에 대해 최소한 합리적으로 읽을 수 있는 경우 사용 예를 고려하십시오. 인터넷 여기저기 샅샅이 뒤져보지만 별 의미가 없다. Win API에 대한 좋은 책이 있을까요? 함수가 무엇을 하는지에 대한 단순한 설명이 여전히 충분하지 않은 것처럼.

MSDN에서 WinAPI 기능에 대한 모든 정보를 얻습니다. 너무 익숙해. . .

PS 불행히도 나는 WinAPI에 대한 좋은 책을 본 적이 없습니다.

 
Ilnur >> :

MSDN에서 WinAPI 기능에 대한 모든 정보를 얻습니다. 너무 익숙해. . .


PS 불행히도 나는 WinAPI에 대한 좋은 책을 본 적이 없습니다.

그리고 마우스 오른쪽 버튼에서 열리는 메뉴를 가로채는 방법. 터미널에서 다른 프로그램으로 전환하면 메뉴가 사라지고 단순히 감지되지 않습니다. 어떻게든 프로그램을 중지해야 합니까?

사유: