Как выбрать дату в элементе управления sysmonth в автоответчике

#autohotkey #ui-automation #sendmessage #monthcalendar #microsoft-documentation

Вопрос:

я пытаюсь выбрать дату через месяц с помощью командлета sendmessage от AHK. К сожалению, это не работает, и я не знаю, в чем моя ошибка или мое недопонимание. Кто-нибудь может помочь ? Вот что я уже пробую.

 ConvertNormalDateToSystemTime(YYYYMMDD) ; this return a SystemTime format date from a normal date {  YYYYMMDD.=000000  YYYYMMDDHHMISS:=YYYYMMDD      VarSetCapacity(SystemTime, 16, 0) ; This struct consists of 8 UShorts (i.e. 8*2=16).  Int := SubStr(YYYYMMDDHHMISS, 1, 4) ; YYYY (year)  NumPut(Int, SystemTime, 0, "UShort")  Int := SubStr(YYYYMMDDHHMISS, 5, 2) ; MM (month of year, 1-12)  NumPut(Int, SystemTime, 2, "UShort")  Int := SubStr(YYYYMMDDHHMISS, 7, 2) ; DD (day of month)  NumPut(Int, SystemTime, 6, "UShort")  Int := SubStr(YYYYMMDDHHMISS, 9, 2) ; HH (hour in 24-hour time)  NumPut(Int, SystemTime, 8, "UShort")  Int := SubStr(YYYYMMDDHHMISS, 11, 2) ; MI (minute)  NumPut(Int, SystemTime, 10, "UShort")  Int := SubStr(YYYYMMDDHHMISS, 13, 2) ; SS (second)  NumPut(Int, SystemTime, 12, "UShort")    return % amp;SystemTime   }   MCM_FIRST:= 0x1000  MCM_SETCURSEL:= MCM_FIRST   2 MyDate:= 20211115 WinActivate ahk_class AutoHotkeyGUI, ExempleCalendrier.ahk  dateASelectionnerDansCalendrier := ConvertNormalDateToSystemTime(20211115)    try {  SendMessage MCM_SETCURSEL , , amp;dateASelectionnerDansCalendrier, SysMonthCal321, ahk_class AutoHotkeyGUI ; THIRD TRIAL   MsgBox % ErrorLevel } catch e {  MsgBox % ErrorLevel }    

Еще одна странная вещь заключается в том, что я всегда получаю сообщение MCM_SETCURSEL обратно в переменную MyReturn. Я уже пытаюсь скомпилировать скрипт и запустить его от имени администратора. Я знаю, что в моем monthcal нет многозначной опции. Кто-то в Discord подсказал мне, что MCM_SETCURSEL lparam указывал на системное время. Так как же я мог отправить свою дату на свой месячный ? Должен ли я преобразовать свою фактическую дату в системное время другим способом ? (говорит как нуб) Спасибо за любую помощь !

Комментарии:

1. когда я пытаюсь использовать controlget cmd для перехвата HWND — он ничего не возвращает мне для моего системного вызова — просто рядом с ним — у меня есть элемент управления редактированием — и он извлекает значение. как это возможно ?

2. Когда я пытаюсь отправить сообщение с помощью winspy , в нем говорится, что отправить сообщение невозможно — недопустимое сообщение

3. Когда я использую права администратора для sysmonthcontrol — это работает, чтобы получить контрольный hwnd. Но это приводит к сбою моего приложения