![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Encontré una ventana interesante. Es casi imposible atrapar algo en él. La ventana se llama "Guardar como". ¿Puede decirme cómo pulsar el botón "Guardar"?
Si selecciona específicamente el botón de guardar, tiene el código de botón 00000001
Pero no ocurre nada al llamarlo por este código. ¿Qué es esta ventana sin nombre?
Este es un cuadro de diálogo emergente. Su descriptor de sistema puede obtenerse mediante la función WinAPI GetLastActivePopup(int hWnd).
A continuación se muestra un ejemplo de cómo utilizar esta función:
Las casillas de verificación pueden marcarse mediante programación si no están presentes.
¿Qué funciones de la API de Win se utilizan para ello?
Se ha encontrado una función en la WinAPI:
Función CheckDlgButton
Descripción:function CheckDlgButton(Dlg: HWnd; IDButton: Integer; Check: Word);
Marca o desmarca un control de botones o cambia el estado de un control de tres botones.
Parámetros:Dlg: El cuadro de diálogo que contiene el botón.
IDButton: El control modificable del botón.
Comprobaciones: borrado(0), marcado(1), sombreado(2).
Antes de ejecutarlo qué función para comprobar el estado del botón. En mi caso está en la casilla de verificación.
como continuación del tema de la API
al guardar - ¡si esto vuelve a ocurrir la pregunta se planteará!
guardar como
( el archivo existe reemplazar )
pulse el SÍ de forma automática
Se ha encontrado una función en la WinAPI:
Función CheckDlgButton
Descripción:function CheckDlgButton(Dlg: HWnd; IDButton: Integer; Check: Word);
Etiqueta o desmarca un control de botones o cambia el estado de un control de tres botones.
Parámetros:Dlg: El cuadro de diálogo que contiene el botón.
IDButton: El control modificable del botón.
Comprobado: borrado(0), marcado(1), sombreado(2).
Antes de ejecutarlo qué función utilizar para comprobar el estado del botón. En mi caso en casilla de verificación.
Puede utilizar la función IsDlgButtonChecked para determinar el estado actual del interruptor:
Esta función devuelve el estado del interruptor con idButton situado en el cuadro de diálogo hdlg. Si el interruptor está en estado desactivado, se devuelve un valor nulo. Se devuelve un valor de 1 para un interruptor que está encendido. Un valor de 2 corresponde a un interruptor inactivo, mostrado en gris. En caso de error, se devuelve un valor negativo de -1.
---
Un ejemplo de cómo funciona IsDlgButtonChecked puede verse aquí
http://frolov-lib.ru/books/bsp/v12/ch3_2.htm
Decidí volver al tema del estudio de WinAPI.
Estoy tratando de utilizar Microsoft Spy++ v.9.00.21022 para encontrar el identificador de la casilla de verificación "Optimización" con el fin de comprobar si está marcada o no.
Hago lo siguiente paso a paso.
1. Terminal iniciada.
2. abrir la ventana del probador.
3. En Spy++ busqué una ventana y señalé el elemento "Optimizar".
Haz clic en el botón OK.
4. Recorrer las pestañas de la siguiente ventana
No puedo averiguar dónde está mi código para este botón.
Ilnur ,YuraZ y otros me enseñan a identificar este código descriptor que necesito.
Por eso pido que te enseñen, no para señalar específicamente los códigos, porque quiero aprender a identificar otros elementos. Aunque si se especifica puede ser más fácil para mí encontrarlos después, sabiendo qué buscar y dónde buscar....
Aquí he dado un ejemplo de código sobre cómo encontrar el identificador del botón "Inicio".
La misma figura muestra cómo encontrar el identificador del control.
Todos los controles situados en la ventana del comprobador de estrategias se definen de la misma manera.
Por ejemplo, según la imagen anterior, el identificador de la casilla "Optimización" (pestaña General) es 0x405.
Lo tengo resuelto. Lo único que no encuentro son los códigos de 2 botones - fecha para probar y optimización de "Fecha" a "Fecha". Salidas del programa 00000001. Ilnur dime los códigos de estos botones.
Sí, efectivamente, los identificadores de estos artículos son los mismos. Por lo tanto, no podemos utilizar GetDlgItem() en este caso.
Esto deja la opción de identificarlos usando FindWindowExA(). Sin embargo, la cuestión principal es si debemos identificarlos.
No es posible gestionar estos elementos, es decir, especificar el periodo de optimización o de prueba, mediante la WinAPI en MQL.
Aunque puede que me equivoque.
Sí, efectivamente, los identificadores de estos artículos son los mismos. Por lo tanto, no podemos utilizar GetDlgItem() en este caso.
Esto deja la opción de identificarlos usando FindWindowExA(). Sin embargo, la cuestión principal es si debemos identificarlos.
Se echa en falta la posibilidad de gestionar estos elementos, es decir, de especificar el periodo de optimización o de prueba, mediante la WinAPI en MQL.
Sin embargo, puedo estar equivocado.
encontrar un elemento con ID - 0x0577 (hacer clic en el botón Cambiar experto)
y haga clic en NextWindow 3 veces sólo para entrar en el campo de fecha From: luego intente NextWindow dos veces más y entraremos en el campo de fecha To:
en ambos casos sólo hay que rellenar los campos de fecha
SetWindowTextA( hwndEditDATEbeg, sDateBeg);
SendMessageA(hwndEditDATEbeg, EN_UPDATE, _ID_EDIT_HEX_DATEbeg, 0);
SendMessageA(hwndEditDATEbeg, EN_CHANGE, _ID_EDIT_HEX_DATEbeg, 0);
..
En MSQL5 me gustaría tener una herramienta integrada para la comunicación con el probador...