Question

J'ai la macro suivante que je souhaite appeler depuis un script AutoHotkey afin de définir certaines dates dans mon objet MonthCal en gras.

http://msdn.microsoft.com/ en-us / library / bb774722 (VS.85) .aspx

Comment pourrais-je m'y prendre?

Notez qu’il est possible que le moyen le plus simple de le faire est d’écrire un script VB simple qui utilise la macro et l’appelle. Mais je n'ai aucune idée des scripts VB. Des pensées?

Était-ce utile?

La solution

J'ai trouvé le script suivant sur les forums AutoHotkey via leur superbe canal IRC (merci _rhys et Titan)

monthNb := 3   ; How many months are displayed. Can be fetched with MCM_GETMONTHRANGE
MCM_FIRST := 0x1000
MCM_SETDAYSTATE := MCM_FIRST + 8

; MCS_DAYSTATE = 1
Gui, Add, MonthCal, +0x1 vMyCalendar
Gui, Add, Button, gBoldify w100, B
Gui Show

Gui +LastFound
guiID := WinExist()
ControlGet mcID, Hwnd, , SysMonthCal321, ahk_id %guiID%

Gosub SetDayState
Return

Boldify:
VarSetCapacity(daysBuffer, 4 * monthNb, 0)
if bOdd
{
   days = 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31
}
else
{
   days = 2,4,6,8,10,12,14,16,18,20,22,24,26,28,30
}
bOdd := not bOdd
addr := &daysBuffer + 4
Loop Parse, days, `,
{
   o1 := (A_LoopField - 1) / 8
   o2 := Mod(A_LoopField - 1, 8)
   val := *(addr + o1) | (1 << o2)
   DllCall("RtlFillMemory", "UInt", addr + o1, "UInt", 1, "UChar", val)
}
Gosub SetDayState
Return

SetDayState:
   SendMessage MCM_SETDAYSTATE, monthNb, &daysBuffer, , ahk_id %mcID%
Return

GuiClose:
GuiEscape:
ExitApp
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top