#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);
}
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.
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.
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.
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!
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:
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.
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.
OK, ich werde woanders nach einer Lösung für dieses Problem suchen.
Entschuldigung für die Unannehmlichkeiten...
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!
Kopieren Sie hier, was Sie denken, ist ein Beispiel zum Thema ?!
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.
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:
Ich habe oben über WinUser32.mqh geschrieben. Die Kontrollcodes sind vorhanden.