1

我正在尝试使用 AHK 的 sendmessage cmd 选择月份中的日期。不幸的是,这不起作用,我不知道我的错误或误解在哪里。任何人都可以帮忙吗?这是我已经尝试过的。

    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 % &SystemTime
    
}


MCM_FIRST:= 0x1000 
MCM_SETCURSEL:= MCM_FIRST + 2
MyDate:= 20211115
WinActivate ahk_class AutoHotkeyGUI, ExempleCalendrier.ahk

dateASelectionnerDansCalendrier := ConvertNormalDateToSystemTime(20211115)



try
{
            SendMessage MCM_SETCURSEL , ,  &dateASelectionnerDansCalendrier, SysMonthCal321, ahk_class AutoHotkeyGUI ; THIRD TRIAL  
            MsgBox % ErrorLevel
}
catch e
{
    MsgBox % ErrorLevel
}
        

另一个奇怪的事情是我总是在 MyReturn 变量中得到 MCM_SETCURSEL 消息。我已经尝试编译脚本并以管理员身份运行它。我知道我的月刊上没有多选选项。Discord 上的某个人建议我 MCM_SETCURSEL lparam 指向系统时间。那么我怎么能把我的日期发送到我的月卡呢?我应该以其他方式将我的实际日期转换为 systemTime 吗?(作为菜鸟说话)感谢您的帮助!

4

0 回答 0