أسهل طريقة لدعوة ويندوز الماكرو من اوتو هات كي-Autohotkey (أو رموز)?
-
05-07-2019 - |
سؤال
لدي الماكرو التالي أريد أن أتصل من داخل اوتو هات كي-AutoHotkey النصي من أجل تحديد تواريخ معينة في MonthCal كائن أن تكون جريئة.
http://msdn.microsoft.com/en-us/library/bb774722(مقابل.85).aspx
كيف يمكنني ذلك ؟
علما أنه من الممكن أن أسهل طريقة للقيام بذلك هو أن كتابة بسيطة VB والذي يستخدم الماكرو و اتصل ذلك.ولكن أنا جاهل تماما عن VB البرامج النصية.أي أفكار ؟
المحلول
لقد وجدت البرنامج النصي التالي على اوتو هات كي-AutoHotkey المنتديات عبر كبيرة قناة IRC (شكرا _rhys تيتان)
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
لا تنتمي إلى StackOverflow