Meilleure façon d'appeler une macro Windows à partir d'Autohotkey (ou VB)?
-
05-07-2019 - |
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?
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