버튼 및 마우스 클릭을 가로채는 자동화. - 페이지 9 123456789101112 새 코멘트 Nefedov Kirill 2009.05.04 04:55 #81 YuraZ >> : SP2 XPPRO 소프트웨어가 지속적으로 컴퓨터에 많이 설치되어 있으면 무엇이든 될 수 있습니다. AXIS가 대상인 경우 - 안정적이고 입증된 소규모 작업 세트가 회전하는 경우 즉, 많은 프로그램의 가치가 없으며 무언가가 지속적으로 철거되고 많은 것이 거기에 배치되지 않습니다. 일반적으로 문제가 없습니다 내 라이브러리는 훨씬 작습니다. 교체해 보니 1회선에서 전문가 교체가 가능한지 봤는데 단말기가 넘어져 버렸습니다. 다시 실행되어 더 이상 작동하지 않습니다. 출력 -1, 즉 명령이 잘못되었습니다. 무엇이 잘못되었는지는 분명하지 않지만, 왜냐하면. 1 번 작동했습니다. 다른 운영 체제의 가상 머신에서 플레이하기로 결정했습니다. Ilnur Iksanov 2009.05.04 04:59 #82 HIDDEN >> : 컴퓨터와 네트워크에서 user32.dll 라이브러리 파일을 살펴보니 다양한 크기의 파일이 많이 있습니다. 아마도 내 문제는 라이브러리 자체가 곡선이라는 것입니다. Ilnur, 어렵지 않다면 여기에 라이브러리 버전을 게시해 주시면 테스트해 보겠습니다. Yuraz, 그리고 당신은 Ilnur의 코드에 따라 함수의 이름을 찾아서 대체했습니다. 어렵지 않다면 라이브러리도 배치하십시오. XP Pro SP3가 있습니다. 도서관을 붙였습니다. 파일: user32_1.zip 305 kb Nefedov Kirill 2009.05.04 10:20 #83 게시된 라이브러리를 시도했는데 스크립트가 실행될 때 터미널이 계속 충돌합니다. 맨손으로 깨끗한 윈도우에 똑같은 쓰레기를 놓고 모니터를 이마로 두드려도 스위치가 작동하지 않습니다. 나는 무엇을해야할지 모르겠다. 완전한 교착 상태에서 더 나은 시간이 될 때까지 구현 시도를 다시 연기합니다 ..... Yuriy Zaytsev 2009.05.08 06:20 #84 // Зайцев Ю. В. YURAZ // // программируем на API // передать данные в SysDateTimePick32 можно через ХУК , но хуки не люблю // потому проколотим дату кнопками ввода // // #define GW_HWNDNEXT 2 #define WM_ACTIVATE 0x0006 #define WM_ENABLE 0x000A #define WM_SETFOCUS 0x0007 #define WM_KEYDOWN 0x0100 #define WM_KEYUP 0x0101 #define VK_TAB 0x09 #define VK_RIGHT 0x27 #define GW_CHILD 5 // ID #define _ID_TESTER 0x053 // дескриптор ТЕСТЕРА #define _ID_TW 0x81BF // дескриптор окна TESTERA #define _ID_TERMINAL 0xE81E #define _ID_NAV 0xE81B // навигатор #import "user32.dll" int SendMessageA ( int hWnd , int Msg , int wParam , string lParam ) ; int PostMessageA ( int hWnd , int Msg , int wParam , int lParam ) ; int GetWindowTextA ( int hWnd , string lpString , int nMaxCount ) ; int GetDlgItem ( int hDlg , int nIDDlgItem ) ; int GetAncestor ( int hWnd , int gaFlags ) ; int GetWindow ( int hWnd , int uCmd ) ; #import void start ( ) { int hMetaTrader = GetAncestor ( WindowHandle ( Symbol ( ) , Period ( ) ) , 2 ) ; // Дескриптор основного окна терминала Print ( "hMetaTrader = " , hMetaTrader , " || " , DecToHex ( hMetaTrader ) ) ; int hTerminal = GetDlgItem ( hMetaTrader , _ID_TERMINAL ) ; // Дескриптор окна валютной пары Print ( "hTerminal = " , hTerminal , " || " , DecToHex ( hTerminal ) ) ; int hTester = GetDlgItem ( hTerminal , _ID_TESTER ) ; // Дескриптор окна тестера стратегий Print ( "hTester = " , hTester , " || " , DecToHex ( hTester ) ) ; // хитро вычисляем окошко объекта int hOt = GetWindow ( FindHendlKey ( GetDlgItem ( hTester , _ID_TW ) , "От:" ) , GW_HWNDNEXT ) ; Print ( "hOt = " , hOt , " || " , DecToHex ( hOt ) ) ; // для отладки покажем HENDL окна ввода даты // // тупо нажимаем дату 2001.03.27 // SendMessageA ( hOt , WM_ACTIVATE , 1 , 0 ) ; // Активизируем SendMessageA ( hOt , WM_ENABLE , 1 , 0 ) ; SendMessageA ( hOt , WM_SETFOCUS , 1 , 0 ) ; PostMessageA ( hOt , WM_KEYDOWN , 0x032 , 1 ) ; // 0x32 код '2' Sleep ( 1000 ) ; PostMessageA ( hOt , WM_KEYDOWN , 0x030 , 1 ) ; // Sleep ( 1000 ) ; PostMessageA ( hOt , WM_KEYDOWN , 0x030 , 1 ) ; // Sleep ( 1000 ) ; PostMessageA ( hOt , WM_KEYDOWN , 0x031 , 1 ) ; // 2001 Sleep ( 1000 ) ; PostMessageA ( hOt , WM_KEYDOWN , VK_RIGHT , 1 ) ; // . Sleep ( 1000 ) ; PostMessageA ( hOt , WM_KEYDOWN , 0x030 , 1 ) ; // 12 Sleep ( 1000 ) ; PostMessageA ( hOt , WM_KEYDOWN , 0x033 , 1 ) ; // 03 Sleep ( 1000 ) ; PostMessageA ( hOt , WM_KEYDOWN , VK_RIGHT , 1 ) ; // . Sleep ( 1000 ) ; PostMessageA ( hOt , WM_KEYDOWN , 0x032 , 1 ) ; // 27 Sleep ( 1000 ) ; PostMessageA ( hOt , WM_KEYDOWN , 0x037 , 1 ) ; // Sleep ( 1000 ) ; SendMessageA ( hOt , WM_KEYDOWN , VK_TAB , 0 ) ; Sleep ( 1000 ) ; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ string DecToHex ( int n ) { string s = "" , c ; while ( n ! = 0 ) { if ( n % 16 < 10 ) c = CharToStr ( n % 16 + '0' ) ; else c = CharToStr ( n % 16 + 'A' - 10 ) ; s = c + s ; n = n / 16 ; } return ( s ) ; } //+------------------------------------------------------------------+ // // прощелкать объекты // ищем объект по имени // //+------------------------------------------------------------------+ int FindHendlKey ( int Current , string findname ) { string p1 = "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234" ; int temp = GetWindow ( Current , GW_CHILD ) ; // ищем while ( temp ! = NULL ) { GetWindowTextA ( temp , p1 , StringLen ( findname ) + 1 ) ; if ( p1 = = findname ) { // проверим а не тот ли это объект return ( temp ) ; // это то что мы ищем } int r = FindHendlKey ( temp , findname ) ; // не значит не она , обойдем ее дочерние объекты if ( r ! = NULL ) { return ( r ) ; // опс нашли дочку } temp = GetWindow ( temp , GW_HWNDNEXT ) ; // проверяем следующий объект, дочерний } return ( 0 ) ; } 숨겨진 04.05.2009 14:20 추가로 ... 필요한 키보드 코드의 형성이라는 의미에서 입력 날짜에 Nefedov Kirill 2009.08.04 17:04 #85 아마도 LVN_ COLUNCLICK 기능이 적합하지만 무언가가 작동하지 않을 수 있습니다. Alexandr Gavrilin 2011.08.23 09:57 #86 F9(주문)로 호출되는 창을 잡는 방법을 알려주세요. 텍스트는 검색되지 않습니다. 지금까지 다음과 같이 잡았습니다. int hwnd=GetAncestor(WindowHandle(name, Period ()), 2 ); //main terminal handle string s= "" ; hdlg=GetLastActivePopup(hwnd); //FindWindowA(0,s); if (hdlg!=hwnd){ GetWindowTextA(hdlg,s,GetWindowTextLengthA(hdlg)+ 1 ); //работает, надо s="" Print (s); } --- 2011.08.23 10:46 #87 //------------------------------------------------------------------ F9 void F9() { int h= WindowHandle ( Symbol (), Period ()); // хэндл графика int hMetaTrader=GetAncestor(h, 2 ); // хэндл МТ PostMessageA(h, WM_COMMAND, 35458 , 0 ); // открываем F9 } 러시아어 MT로 창 핸들 주문 int h=FindWindowA ( "#32770" , "Ордер"); -------- Spy++를 사용하여 Windows에서 리소스 ID 찾기 Alexandr Gavrilin 2011.08.23 10:53 #88 이것은 터미널에서 러시아어가 선택된 경우에만 작동하지만 예를 들어 클라이언트의 터미널에 중국어가 있는 경우에는? 중국어로 검색하려면?) 다른 방법이 필요합니다. 내가 지정한 옵션이 작동하는 동안. --- 2011.08.23 13:04 #89 DKeN : 내가 지정한 옵션이 작동하는 동안. 축하합니다, 그럼 무엇을 원하시나요? 이 F9에만 있는 고유한 리소스를 창에서 볼 수 있습니다. Alexey Navoykov 2011.08.23 16:14 #90 FindWindowA 이후에는 찾은 창의 스레드/프로세스 ID도 확인해야 합니다(GetWindowThreadProcessId 함수). 발견된 주문 창은 메타 트레이더의 다른 사본에 속할 수 있습니다. 123456789101112 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
SP2 XPPRO
소프트웨어가 지속적으로 컴퓨터에 많이 설치되어 있으면 무엇이든 될 수 있습니다.
AXIS가 대상인 경우 - 안정적이고 입증된 소규모 작업 세트가 회전하는 경우
즉, 많은 프로그램의 가치가 없으며 무언가가 지속적으로 철거되고 많은 것이 거기에 배치되지 않습니다.
일반적으로 문제가 없습니다
내 라이브러리는 훨씬 작습니다. 교체해 보니 1회선에서 전문가 교체가 가능한지 봤는데 단말기가 넘어져 버렸습니다. 다시 실행되어 더 이상 작동하지 않습니다. 출력 -1, 즉 명령이 잘못되었습니다. 무엇이 잘못되었는지는 분명하지 않지만, 왜냐하면. 1 번 작동했습니다.
다른 운영 체제의 가상 머신에서 플레이하기로 결정했습니다.
컴퓨터와 네트워크에서 user32.dll 라이브러리 파일을 살펴보니 다양한 크기의 파일이 많이 있습니다.
아마도 내 문제는 라이브러리 자체가 곡선이라는 것입니다.
Ilnur, 어렵지 않다면 여기에 라이브러리 버전을 게시해 주시면 테스트해 보겠습니다.
Yuraz, 그리고 당신은 Ilnur의 코드에 따라 함수의 이름을 찾아서 대체했습니다. 어렵지 않다면 라이브러리도 배치하십시오.
XP Pro SP3가 있습니다.
도서관을 붙였습니다.
게시된 라이브러리를 시도했는데 스크립트가 실행될 때 터미널이 계속 충돌합니다.
맨손으로 깨끗한 윈도우에 똑같은 쓰레기를 놓고 모니터를 이마로 두드려도 스위치가 작동하지 않습니다.
나는 무엇을해야할지 모르겠다. 완전한 교착 상태에서 더 나은 시간이 될 때까지 구현 시도를 다시 연기합니다 .....
숨겨진 04.05.2009 14:20
추가로 ... 필요한 키보드 코드의 형성이라는 의미에서 입력 날짜에
아마도 LVN_ COLUNCLICK 기능이 적합하지만 무언가가 작동하지 않을 수 있습니다.
F9(주문)로 호출되는 창을 잡는 방법을 알려주세요.
텍스트는 검색되지 않습니다.
지금까지 다음과 같이 잡았습니다.
러시아어 MT로 창 핸들 주문
--------
Spy++를 사용하여 Windows에서 리소스 ID 찾기
이것은 터미널에서 러시아어가 선택된 경우에만 작동하지만 예를 들어 클라이언트의 터미널에 중국어가 있는 경우에는?
중국어로 검색하려면?) 다른 방법이 필요합니다.
내가 지정한 옵션이 작동하는 동안.
DKeN :
내가 지정한 옵션이 작동하는 동안.
축하합니다, 그럼 무엇을 원하시나요?
이 F9에만 있는 고유한 리소스를 창에서 볼 수 있습니다.
FindWindowA 이후에는 찾은 창의 스레드/프로세스 ID도 확인해야 합니다(GetWindowThreadProcessId 함수). 발견된 주문 창은 메타 트레이더의 다른 사본에 속할 수 있습니다.