从Autohotkey(或VB)调用Windows宏的最简单方法是什么?

从Autohotkey(或VB)调用Windows宏的最简单方法是什么?

问题描述:

我想要在AutoHotkey脚本中调用以下宏,以便将MonthCal对象中的某些日期设置为粗体。从Autohotkey(或VB)调用Windows宏的最简单方法是什么?

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

我怎么会去吗?

请注意,最简单的方法是编写一个简单的使用宏并调用它的VB脚本。但我对VB脚本完全无能为力。有什么想法吗?

我通过他们的伟大IRC channel(感谢_rhys和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 
发现下面的脚本 on the AutoHotkey forums