#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, je vais chercher ailleurs une solution à ce problème.
Désolé pour le dérangement...
Là, dans l'en-tête, le code et l'exemple. Il n'y a pas lieu de s'offenser. Ce que vous faites a été résolu de nombreuses fois sur ce forum dans différentes versions. Il suffit de regarder le fichier d'en-tête WinUser32.mqh, que ma bibliothèque possède. Tous les codes de contrôle sont là. J'ai déjà écrit à ce sujet à plusieurs reprises.
Zhunko: Vous y trouverez, dans l'en-tête, un code et un exemple.
Copiez ici ce que vous considérez comme un exemple pour cette question !
Je n'ai trouvé que ça :
// 3.1.1 Cette fonction active/désactive le défilement automatique du graphique spécifié. void ServiceAutoScroll(int hwndChart) ; // Descripteur système de la fenêtre graphique, sur laquelle le défilement automatique est désactivé. //===================================================================================================================================================================== // La fonction active/désactive le décalage de la carte spécifiée. En cas de succès, la méthode renvoie VRAI, sinon - FAUX. bool ServiceShift(int hwndChart) ; // Descripteur système de la fenêtre graphique, sur laquelle le décalage est activé/désactivé.
Si cette fonction ici, j'ai encore besoin de ses internes ...
// 3.2.1 La fonction renvoie l'état de défilement automatique du graphique spécifié. En cas de succès, la fonction renvoie VRAI, sinon FAUX. bool ServiceGetAutoScroll(int hwndChart) ; // Descripteur système de la fenêtre graphique, à partir duquel l'état de défilement automatique est renvoyé.
Copiez ici ce que vous pensez être un exemple sur le sujet !
Je n'ai trouvé que ça :
// La fonction active/désactive le défilement automatique du graphique spécifié. void ServiceAutoScroll(int hwndChart) ; // Le descripteur système de la fenêtre graphique, sur laquelle le défilement automatique est désactivé.
// 3.1.2. La fonction active/désactive le décalage du graphique spécifié. La méthode renvoie VRAI en cas de succès, sinon FAUX. bool ServiceShift(int hwndChart) ; // Descripteur système de la fenêtre graphique, sur laquelle le décalage est activé/désactivé.
Mais vous n'en avez pas besoin !
Je ne parlais pas de la bibliothèque. Mais si c'est à propos d'une bibliothèque, il y a une fonction :
// 3.2.1. Функция возвращает состояние автопрокрутки на указанном графике. В случае успеха функция возвращает TRUE, иначе - FALSE.bool ServiceGetAutoScroll(int hwndChart); // Системный дескриптор окна графика, с которого возвращается состояние автопрокрутки.
J'ai écrit plus haut à propos de WinUser32.mqh. Les codes de contrôle sont là.
int max = SendMessage ( hwndTaskbar, TB_BUTTONCOUNT, 0, 0) ;
S'il vous plaît, dites-moi où voir toutes les valeurs des constantes comme : TB_BUTTONCOUNT, TB_ISBUTTONPRESSED ? !
Je veux déterminer le bouton et son état !
Quelle commande de la barre d'outils peut être utilisée pour faire défiler les boutons et trouver le bon ?
Quelqu'un l'a-t-il fait ?
Le descripteur de la fenêtre graphique a été trouvé :
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); }Je ne comprends pas... Pour quoi faire ? Je suis très surpris. Avez-vous regardé mon en-tête ? Pas selon le code.
Toute commande provenant d'un graphique est une fonction, une ligne de code.
Je ne comprends pas... Pour quoi faire ? Je suis très surpris. Avez-vous regardé mon en-tête ? Pas selon le code.
Toute commande provenant d'un graphique est une fonction, une ligne de code.
OK, je vais chercher ailleurs une solution à cette question.
Désolé pour le dérangement.
OK, je vais chercher ailleurs une solution à ce problème.
Désolé pour le dérangement...
Vous y trouverez, dans l'en-tête, un code et un exemple.
Copiez ici ce que vous considérez comme un exemple pour cette question !
Je n'ai trouvé que ça :
// 3.1.1 Cette fonction active/désactive le défilement automatique du graphique spécifié.
void ServiceAutoScroll(int hwndChart) ; // Descripteur système de la fenêtre graphique, sur laquelle le défilement automatique est désactivé.
//=====================================================================================================================================================================
// La fonction active/désactive le décalage de la carte spécifiée. En cas de succès, la méthode renvoie VRAI, sinon - FAUX.
bool ServiceShift(int hwndChart) ; // Descripteur système de la fenêtre graphique, sur laquelle le décalage est activé/désactivé.
Mais vous n'en avez pas besoin !
Copiez ici ce que vous pensez être un exemple sur le sujet !
Si cette fonction ici, j'ai encore besoin de ses internes ...
// 3.2.1 La fonction renvoie l'état de défilement automatique du graphique spécifié. En cas de succès, la fonction renvoie VRAI, sinon FAUX.
bool ServiceGetAutoScroll(int hwndChart) ; // Descripteur système de la fenêtre graphique, à partir duquel l'état de défilement automatique est renvoyé.
Copiez ici ce que vous pensez être un exemple sur le sujet !
Je n'ai trouvé que ça :
// La fonction active/désactive le défilement automatique du graphique spécifié.
void ServiceAutoScroll(int hwndChart) ; // Le descripteur système de la fenêtre graphique, sur laquelle le défilement automatique est désactivé.
// 3.1.2. La fonction active/désactive le décalage du graphique spécifié. La méthode renvoie VRAI en cas de succès, sinon FAUX.
bool ServiceShift(int hwndChart) ; // Descripteur système de la fenêtre graphique, sur laquelle le décalage est activé/désactivé.
Mais vous n'en avez pas besoin !
Je ne parlais pas de la bibliothèque. Mais si c'est à propos d'une bibliothèque, il y a une fonction :
J'ai écrit plus haut à propos de WinUser32.mqh. Les codes de contrôle sont là.