판별 방법: 자동 스크롤 버튼이 눌렸는지 눌렸는지 확인하고 눌렸으면 손을 뗍니다!? - 페이지 5

 

정수 최대 = SendMessage( hwndTaskbar, TB_BUTTONCOUNT, 0, 0);

제발 내게 말해줘. TB_BUTTONCOUNT, TB_ISBUTTONPRESSED와 같은 상수의 모든 값을 볼 수 있는 곳 ?!

버튼과 그 상태를 정의하고 싶습니다!

 
MSDN에서 볼 수 있습니다.
 

도구 모음에서 단추를 정렬하고 올바른 명령을 찾을 수 있는 명령은 무엇입니까?

누군가가 해본 것이 아닐까요?

그래픽 창 핸들 발견:

#property copyright "Copyright © 2012 ЛЕО"
#import "user32.dll" 
      int      GetWindow            (int, int);
      int      FindWindowExA        (int, int, string, string);
      int      GetParent            (int hWnd); 
      bool     GetCursorPos         (int& Pos[2]);
      bool     GetWindowRect        (int hWnd,int& Pos[4]);
      int      GetKeyState          (int button); 
      void     mouse_event          (int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
      int      GetAncestor          (int hWnd, int gaFlags);
      int      GetWindowTextLengthA (int);
      int      GetWindowTextA       (int, string, int);
#import
#import "gdi32.dll" int GetPixel (int hDC, int x, int y);
int         Pos[2];
int         rect[4];
int         hwnd, hg, h;
int         X, Y;
string      Name       = "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234";
int deinit() {ObjectsDeleteAll();Comment ("");}
int start() {
      ObjectsDeleteAll(); Comment ("");

       int hwnd  = GetAncestor ( WindowHandle ( Symbol (), Period ()), 2 ); //дескриптор основного окна терминала
      
       int temp  = GetWindow (hwnd, 5 );              
       int Count = GetWindowTextLengthA (temp); GetWindowTextA (temp, Name, Count+ 1 );
       if (Name != "Стандартная" || Name == "Графики" || Name == "Графические инструменты" ) {
             for ( int i= 0 ;i< 10 ;i++) {
                  temp  = GetWindow (temp, 2 );   if (temp == 0 ) break ;
                  Count = GetWindowTextLengthA (temp); GetWindowTextA (temp, Name, Count+ 1 );
                   if (Name == "Стандартная" || Name == "Графики" || Name == "Графические инструменты" ) {hg = temp; break ;}
            }
      } else hg = temp;
      
       int h  = GetWindow (hg, 5 );              
      Count = GetWindowTextLengthA (h); GetWindowTextA (h, Name, Count+ 1 );
       if (Name != "Графики" ) {
             for (i= 0 ;i< 10 ;i++) {
                  h  = GetWindow (h, 2 );   if (h == 0 ) break ;
                  Count = GetWindowTextLengthA (h); GetWindowTextA (h, Name, Count+ 1 );
                   if (Name == "Графики" ) break ;
            }
      }
       Print (DecToHex(h, 8 ));

      while (!IsStopped()) {
            GetWindowRect (h,rect);
            GetCursorPos  (Pos);
            X                       = Pos[0] - rect[0];
            Y                       = Pos[1] - rect[1];
            Comment ("X= ",X,"\n","Y= ",Y); Sleep(100);
      }
      return(0);
}
string DecToHex (int n, int dig) {
      string s[], r="";
      string Sym[16] = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
      ArrayResize (s,dig);
      for (int i=0; i<dig; i++) s[i]="0";
      i = dig-1;
      while (n != 0) {s[i] = Sym[n%16]; n = n>>4; i--; }
      for (i=0; i<dig; i++) r=r+s[i];
      return (r);
}
 

내가 뭔가 이해하지 못했습니다... 왜?! 강하게 놀랐다. 내 머리글 봤어? 코드로 판단하면 아닙니다.

차트의 모든 명령은 하나의 기능, 한 줄의 코드입니다.

 
Zhunko :

내가 뭔가 이해하지 못했습니다... 왜?! 강하게 놀랐다. 내 머리글 봤어? 코드로 판단하면 아닙니다.

차트의 모든 명령은 하나의 기능, 한 줄의 코드입니다.


알겠습니다. 이 문제에 대한 해결책을 다른 곳에서 찾아보겠습니다.

불편을 드려 죄송합니다...

 
LEOK :


알겠습니다. 이 문제에 대한 해결책을 다른 곳에서 찾아보겠습니다.

불편을 드려 죄송합니다...

헤더에 코드와 예제가 있습니다. 화 내지 마십시오. 당신이하고있는 일은이 포럼에서 여러 버전으로 오랫동안 여러 번 결정되었습니다. 내 라이브러리에 있는 WinUser32.mqh 헤더를 살펴보는 것으로 충분합니다. 모든 코드가 있습니다. 나는 이미 이것에 대해 여러 번 썼습니다.
 
Zhunko :
헤더에 코드와 예제가 있습니다.


이 문제에 대한 예라고 생각하는 것을 여기에 복사하십시오!

이것만 찾았습니다:

// 3.1.1. 이 기능은 지정된 차트의 자동 스크롤을 활성화/비활성화합니다.
무효 ServiceAutoScroll(int hwndChart); // 자동 스크롤이 비활성화된 차트 창에 대한 시스템 핸들입니다.
//================================================== ==================================================== ==================================================== ===============
// 3.1.2. 이 기능은 지정된 차트의 오프셋을 활성화/비활성화합니다. 성공하면 메서드는 TRUE를 반환하고 그렇지 않으면 FALSE를 반환합니다.
bool ServiceShift(int hwndChart); // 오프셋이 활성화/비활성화된 차트 창의 시스템 핸들입니다.

그러나 그것은 필요하지 않습니다!

 
LEOK :

이 문제에 대한 예라고 생각하는 것을 여기에 복사하십시오!
그리고 직접 보시겠습니까?
 

이것이 기능이라면 여전히 내부가 필요합니다 ...

// 3.2.1. 이 함수는 지정된 차트의 자동 스크롤 상태를 반환합니다. 함수는 성공하면 TRUE를 반환하고 그렇지 않으면 FALSE를 반환합니다.
부울 ServiceGetAutoScroll(int hwndChart); // 자동 스크롤 상태가 반환되는 차트 창에 대한 시스템 핸들입니다.

 
LEOK :


이 문제에 대한 예라고 생각하는 것을 여기에 복사하십시오!

이것만 찾았습니다:

// 3.1.1. 이 기능은 지정된 차트의 자동 스크롤을 활성화/비활성화합니다.
무효 ServiceAutoScroll(int hwndChart); // 자동 스크롤이 비활성화된 차트 창에 대한 시스템 핸들입니다.

// 3.1.2. 이 기능은 지정된 차트의 오프셋을 활성화/비활성화합니다. 성공하면 메서드는 TRUE를 반환하고 그렇지 않으면 FALSE를 반환합니다.
bool ServiceShift(int hwndChart); // 오프셋이 활성화/비활성화된 차트 창의 시스템 핸들입니다.

그러나 그것은 필요하지 않습니다!

나는 도서관에 대해 이야기하지 않았다. 그러나 라이브러리에 대해 이야기하면 다음과 같은 기능이 있습니다.

 // 3.2.1. Функция возвращает состояние автопрокрутки на указанном графике. В случае успеха функция возвращает TRUE, иначе - FALSE.
 bool ServiceGetAutoScroll( int hwndChart); // Системный дескриптор окна графика, с которого возвращается состояние автопрокрутки.
위에서 나는 WinUser32.mqh 에 대해 썼습니다. 제어 코드가 있습니다.