Wie stelle ich fest, ob die Bildlauftaste gedrückt ist oder nicht und wenn ja, drücke ich sie! - Seite 5

 

int max = SendMessage ( hwndTaskbar, TB_BUTTONCOUNT, 0, 0);

Bitte sagen Sie mir, wo ich alle Werte von Konstanten wie: TB_BUTTONCOUNT, TB_ISBUTTONPRESSED sehen kann?

Ich möchte die Schaltfläche und ihren Zustand bestimmen!

 
Sie können es auf MSDN nachlesen.
 

Welcher Befehl in der Symbolleiste kann verwendet werden, um durch die Schaltflächen zu blättern und die richtige Schaltfläche zu finden?

Hat dies jemand getan?

Der Grafikfenster-Deskriptor wurde gefunden:

#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);
}
 

Ich versteh das nicht... Wozu? Ich bin sehr erstaunt. Haben Sie sich meine Überschrift angesehen? Nicht nach dem Kodex.

Jeder Befehl aus einem Diagramm ist eine Funktion, eine Codezeile.

 
Zhunko:

Ich versteh das nicht... Wozu? Ich bin sehr erstaunt. Haben Sie sich meine Überschrift angesehen? Nicht nach dem Kodex.

Jeder Befehl aus einem Diagramm ist eine Funktion, eine Codezeile.


OK, ich werde woanders nach einer Lösung für diese Frage suchen.

Wir entschuldigen uns für die Unannehmlichkeiten.

 
LEOK:


OK, ich werde woanders nach einer Lösung für dieses Problem suchen.

Entschuldigung für die Unannehmlichkeiten...

Dort, in der Kopfzeile, der Code und das Beispiel. Es gibt keinen Grund, beleidigt zu sein. Was Sie tun, wurde in diesem Forum schon viele Male in verschiedenen Versionen gelöst. Sie müssen sich nur die Header-Datei WinUser32.mqh ansehen, die meine Bibliothek enthält. Alle Kontrollcodes sind vorhanden. Ich habe bereits mehrfach darüber geschrieben.
 
Zhunko:
In der Kopfzeile finden Sie einen Code und ein Beispiel.


Kopieren Sie hier, was Sie für ein Beispiel für diese Frage halten ?!

Ich habe nur dies gefunden:

// 3.1.1 Die Funktion aktiviert/deaktiviert das automatische Scrollen des angegebenen Diagramms.
void ServiceAutoScroll(int hwndChart); // Systemdeskriptor des Diagrammfensters, bei dem der automatische Bildlauf deaktiviert ist.
//=====================================================================================================================================================================
// 3.1.2 Die Funktion aktiviert/deaktiviert die Verschiebung des angegebenen Diagramms. Bei Erfolg gibt die Methode TRUE zurück, andernfalls - FALSE.
bool ServiceShift(int hwndChart); // Systemdeskriptor des Diagrammfensters, bei dem die Verschiebung aktiviert/deaktiviert ist.

Aber Sie brauchen es nicht!

 
LEOK:

Kopieren Sie hier, was Sie denken, ist ein Beispiel zum Thema ?!
Und selbst nachschlagen?
 

Wenn diese Funktion hier, ich brauche noch ihre Interna ...

// 3.2.1 Die Funktion gibt den Zustand des automatischen Bildlaufs des angegebenen Diagramms zurück. Bei Erfolg gibt die Funktion TRUE zurück, andernfalls FALSE.
bool ServiceGetAutoScroll(int hwndChart); // Systemdeskriptor des Diagrammfensters, aus dem der Status des automatischen Bildlaufs zurückgegeben wird.

 
LEOK:


Kopieren Sie hier, was Sie denken, ist ein Beispiel zum Thema ?!

Ich habe nur dies gefunden:

// 3.1.1 Die Funktion aktiviert/deaktiviert das automatische Scrollen des angegebenen Diagramms.
void ServiceAutoScroll(int hwndChart); // Der Systemdeskriptor des Diagrammfensters, bei dem der automatische Bildlauf deaktiviert ist.

// 3.1.2. Funktion aktiviert/deaktiviert die Verschiebung des angegebenen Diagramms. Die Methode gibt bei Erfolg TRUE zurück, andernfalls FALSE.
bool ServiceShift(int hwndChart); // Systemdeskriptor des Diagrammfensters, bei dem die Verschiebung aktiviert/deaktiviert ist.

Aber Sie brauchen es nicht!

Ich habe nicht von der Bibliothek gesprochen. Aber wenn es um eine Bibliothek geht, gibt es eine Funktion:

 // 3.2.1. Функция возвращает состояние автопрокрутки на указанном графике. В случае успеха функция возвращает TRUE, иначе - FALSE.
 bool ServiceGetAutoScroll(int hwndChart); // Системный дескриптор окна графика, с которого возвращается состояние автопрокрутки.
Ich habe oben über WinUser32.mqh geschrieben. Die Kontrollcodes sind vorhanden.