#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. Но это приводит к сбою моего приложения