es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

AutoHotKey / SendMessage / ¿Cómo debo recuperar el número correspondiente de una acción para un control específico con sendmessage?

Me gustaría seleccionar una fecha de mi calendario con un script de AHK. Para ello, estoy usando la función sendMessage porque me gustaría seleccionar una fecha desde una aplicación externa. Me gustaría usar el mensaje SETCURSEL_MCM de la documentación de Microsoft. ¿Cómo puedo encontrar el número correspondiente de este mensaje? Porque no está en esta página https://learn.microsoft.com/en-us/windows/win32/controls/mcm-setcursel SendMessage, myCorrespondingNumberAsParam???, 0, lparam (que es mi fecha), control, título de ventana

Por analogía, si quiero enviar un texto a un control de edición en el bloc de notas, debo enviar el mensaje WMSETTEXT. El valor de este mensaje está claramente referenciado por la documentación de ahk como 12 para ese control. Pero no es el caso de MCMSETCURSEL mensaje.

Intenté poner el mensaje de envío en un bucle y detenerlo cuando se ejecutó el mensaje, pero es demasiado tiempo y envía errores al programa.

Si alguien pudiera ayudarme,

Gracias,

Gilles

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para encontrar el número correspondiente al mensaje MCM_SETCURSEL, puede consultar la documentación de Microsoft para el control del calendario mensual (MCM). Esta página muestra todos los mensajes admitidos por el control MCM, junto con sus números de mensaje correspondientes.

    Aquí está el enlace a la documentación: https://docs.microsoft.com/en-us/windows/win32/controls/month-calendar-control-reference

    Desde allí, puede buscar “MCM_SETCURSEL” o navegar hasta él en la sección “Mensajes”. El número correspondiente a este mensaje es 0x1001, que puede utilizar como primer parámetro en su llamada a la función SendMessage.

    Entonces, su código final se vería algo como esto:

    SendMessage, 0x1001, 0, lparam(que es mi fecha), control, WinTitle
    

    Recuerde reemplazar control y WinTitle con los valores apropiados para el control de calendario mensual de su aplicación externa.

    ¡Espero que esto ayude! Hágamelo saber si tiene alguna otra pregunta.

Comments are closed.