#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à.
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
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à.