Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
J'ai trouvé une fenêtre intéressante. Il est presque impossible d'y attraper quoi que ce soit. La fenêtre s'appelle "Enregistrer sous". Pouvez-vous me dire comment appuyer sur le bouton "Enregistrer" ?
Si vous sélectionnez spécifiquement le bouton de sauvegarde, vous avez le code de bouton 00000001.
Mais rien ne se passe quand on l'appelle avec ce code. Quelle est cette fenêtre sans nom ?
Il s'agit d'une boîte de dialogue contextuelle. Son descripteur système peut être obtenu à l'aide de la fonction WinAPI GetLastActivePopup(int hWnd).
Voici un exemple d'utilisation de cette fonction :
Les cases à cocher peuvent être cochées de manière programmatique si elles ne sont pas présentes.
Quelles fonctions de l'API Win sont utilisées pour ce faire ?
J'ai trouvé une fonction dans l'interface WinAPI :
Fonction CheckDlgButton
Description :function CheckDlgButton(Dlg : HWnd ; IDButton : Integer ; Check : Word) ;
Marquer ou démarquer une commande à boutons ou changer l'état d'une commande à trois boutons.
Paramètres :Dlg : La boîte de dialogue qui contient le bouton.
IDButton : Le contrôle modifiable du bouton.
Contrôles : supprimé(0), marqué(1), ombré(2).
Avant de l'exécuter, quelle fonction pour vérifier l'état du bouton. Dans mon cas, c'est dans la case à cocher.
dans la continuité du thème de l'API
lors de la sauvegarde - si cela se reproduit, la question se posera !
sauvegarder en tant que
( le fichier existe remplace )
cliquez automatiquement sur OUI
J'ai trouvé une fonction dans l'interface WinAPI :
Fonction CheckDlgButton
Description :function CheckDlgButton(Dlg : HWnd ; IDButton : Integer ; Check : Word) ;
Étiquette ou désétiquette une commande à boutons ou change l'état d'une commande à trois boutons.
Paramètres :Dlg : La boîte de dialogue qui contient le bouton.
IDButton : Le contrôle modifiable du bouton.
Vérifié : supprimé(0), marqué(1), ombré(2).
Avant de l'exécuter, quelle fonction utiliser pour vérifier l'état du bouton. Dans mon cas, dans la case à cocher.
Vous pouvez utiliser la fonction IsDlgButtonChecked pour déterminer l'état actuel de l'interrupteur :
Cette fonction renvoie l'état du commutateur avec idButton situé dans la boîte de dialogue hdlg. Si le commutateur est dans un état désactivé, une valeur nulle est renvoyée. Une valeur de 1 est renvoyée pour un interrupteur qui est activé. Une valeur de 2 correspond à un interrupteur inactif, représenté en gris. En cas d'erreur, une valeur négative de -1 est renvoyée.
---
Un exemple du fonctionnement de IsDlgButtonChecked peut être vu ici
http://frolov-lib.ru/books/bsp/v12/ch3_2.htm
J'ai décidé de revenir au sujet de l'étude de WinAPI.
J'essaie d'utiliser Microsoft Spy++ v.9.00.21022 pour trouver l'identifiant de la case à cocher "Optimisation" afin de vérifier si elle est cochée ou non.
Je procède comme suit, étape par étape.
1. Terminal démarré.
2. Ouvrez la fenêtre du testeur.
3. Dans Spy++, j'ai cherché une fenêtre et j'ai pointé l'élément "Optimiser".
Cliquez sur le bouton OK.
4. Parcourir les onglets de la fenêtre suivante
Je n'arrive pas à trouver où se trouve mon code pour ce bouton.
Ilnur ,YuraZ et d'autres m'apprennent à identifier ce code descripteur dont j'ai besoin.
Pourquoi je demande à vous enseigner, non pas pour pointer spécifiquement les codes, parce que je veux apprendre à identifier d'autres éléments. Mais si vous le précisez, il me sera plus facile de les trouver plus tard, en sachant ce qu'il faut chercher et où chercher.....
J'ai donnéici un exemple de code permettant de trouver l'identifiant du bouton "Start".
La même figure montre comment trouver l'identifiant du contrôle.
Tous les contrôles situés dans la fenêtre du testeur de stratégie sont définis de la même manière.
Par exemple, selon l'image ci-dessus, l'identifiant de la case à cocher "Optimisation" (onglet Général) est 0x405.
J'ai tout réglé. La seule chose que je n'arrive pas à trouver, ce sont les codes de 2 boutons - date pour les tests et optimisation de "Date" à "Date". Sorties du programme 00000001. Ilnur, dis-moi les codes de ces boutons.
Oui, en effet, les identifiants de ces articles sont les mêmes. Par conséquent, nous ne pouvons pas utiliser GetDlgItem() dans ce cas.
Il reste donc la possibilité de les identifier en utilisant FindWindowExA(). Toutefois, la question principale est de savoir si nous devons les identifier.
Il n'est pas possible de gérer ces éléments, c'est-à-dire de spécifier la période d'optimisation ou de test, au moyen de l'interface WinAPI dans MQL.
Bien que je puisse me tromper.
Oui, en effet, les identifiants de ces articles sont les mêmes. Par conséquent, nous ne pouvons pas utiliser GetDlgItem() dans ce cas.
Il reste donc la possibilité de les identifier en utilisant FindWindowExA(). Toutefois, la question principale est de savoir si nous devons les identifier.
La possibilité de gérer ces éléments, c'est-à-dire de spécifier la période d'optimisation ou de test, au moyen de l'interface WinAPI dans MQL, fait défaut.
Mais je peux me tromper.
trouvez un élément avec l'ID - 0x0577 (cliquez sur le bouton Modifier l'expert)
et cliquez 3 fois sur NextWindow pour entrer dans le champ de la date de départ : essayez ensuite deux fois de plus NextWindow et vous entrerez dans le champ de la date d'arrivée :
dans les deux cas, il suffit de remplir les champs de date
SetWindowTextA( hwndEditDATEbeg, sDateBeg) ;
SendMessageA(hwndEditDATEbeg, EN_UPDATE, _ID_EDIT_HEX_DATEbeg, 0) ;
SendMessageA(hwndEditDATEbeg, EN_CHANGE, _ID_EDIT_HEX_DATEbeg, 0) ;
..
Dans MSQL5, j'aimerais vraiment avoir un outil intégré pour la communication avec le testeur...