#include <Array.au3>
Opt('MustDeclareVars', 1)
Global $aMonths, $sMonth
$aMonths = _WinAPI_GetLocal_DayOfMonth()
_ArrayDisplay($aMonths)
$aMonths = _WinAPI_GetLocal_DayOfMonth(Default, False, True)
_ArrayDisplay($aMonths)
For $i = 1 To 12
ConsoleWrite(_WinAPI_GetLocal_DayOfMonth($i) & @LF)
Next
ConsoleWrite('---' & @LF)
For $i = 1 To 12
ConsoleWrite(_WinAPI_GetLocal_DayOfMonth($i, False, True) & @LF)
Next
ConsoleWrite('---' & @LF)
$sMonth = _WinAPI_GetLocal_DayOfMonth(-1, False, False, ';')
ConsoleWrite($sMonth & @LF)
ConsoleWrite('---' & @LF)
$sMonth = _WinAPI_GetLocal_DayOfMonth(Default, False, True, ',')
ConsoleWrite($sMonth & @LF)
Func _WinAPI_GetLocal_DayOfMonth($i_NumMonth = Default, $f_System = False, $f_Abbr = False, $s_Sep = '')
#cs
Local Const $_LOCALE_SMONTHNAME1 = 0x0038
Local Const $_LOCALE_SMONTHNAME2 = 0x0039
Local Const $_LOCALE_SMONTHNAME3 = 0x003A
Local Const $_LOCALE_SMONTHNAME4 = 0x003B
Local Const $_LOCALE_SMONTHNAME5 = 0x003C
Local Const $_LOCALE_SMONTHNAME6 = 0x003D
Local Const $_LOCALE_SMONTHNAME7 = 0x003E
Local Const $_LOCALE_SMONTHNAME8 = 0x003F
Local Const $_LOCALE_SMONTHNAME9 = 0x0040
Local Const $_LOCALE_SMONTHNAME10 = 0x0041
Local Const $_LOCALE_SMONTHNAME11 = 0x0042
Local Const $_LOCALE_SMONTHNAME12 = 0x0043
Local Const $_LOCALE_SABBREVMONTHNAME1 = 0x0044
Local Const $_LOCALE_SABBREVMONTHNAME2 = 0x0045
Local Const $_LOCALE_SABBREVMONTHNAME3 = 0x0046
Local Const $_LOCALE_SABBREVMONTHNAME4 = 0x0047
Local Const $_LOCALE_SABBREVMONTHNAME5 = 0x0048
Local Const $_LOCALE_SABBREVMONTHNAME6 = 0x0049
Local Const $_LOCALE_SABBREVMONTHNAME7 = 0x004A
Local Const $_LOCALE_SABBREVMONTHNAME8 = 0x004B
Local Const $_LOCALE_SABBREVMONTHNAME9 = 0x004C
Local Const $_LOCALE_SABBREVMONTHNAME10 = 0x004D
Local Const $_LOCALE_SABBREVMONTHNAME11 = 0x004E
Local Const $_LOCALE_SABBREVMONTHNAME12 = 0x004F
Local Const $_LOCALE_USER_DEFAULT = 0x0400
Local Const $_LOCALE_SYSTEM_DEFAULT = 0x0800
Local $a_Months[13][2] = [[12],[$_LOCALE_SMONTHNAME1, $_LOCALE_SABBREVMONTHNAME1],[$_LOCALE_SMONTHNAME2, $_LOCALE_SABBREVMONTHNAME2], _
[$_LOCALE_SMONTHNAME3, $_LOCALE_SABBREVMONTHNAME3],[$_LOCALE_SMONTHNAME4, $_LOCALE_SABBREVMONTHNAME4], _
[$_LOCALE_SMONTHNAME5, $_LOCALE_SABBREVMONTHNAME5],[$_LOCALE_SMONTHNAME6, $_LOCALE_SABBREVMONTHNAME6], _
[$_LOCALE_SMONTHNAME7, $_LOCALE_SABBREVMONTHNAME7],[$_LOCALE_SMONTHNAME8, $_LOCALE_SABBREVMONTHNAME8], _
[$_LOCALE_SMONTHNAME9, $_LOCALE_SABBREVMONTHNAME9],[$_LOCALE_SMONTHNAME10, $_LOCALE_SABBREVMONTHNAME10], _
[$_LOCALE_SMONTHNAME11, $_LOCALE_SABBREVMONTHNAME11],[$_LOCALE_SMONTHNAME12, $_LOCALE_SABBREVMONTHNAME12]], _
$a_Res, $a_Ret[12], $i_Column = 0, $a_Locale[2] = [$_LOCALE_USER_DEFAULT, $_LOCALE_SYSTEM_DEFAULT], $i_Local = 0
#ce
Local Const $a_Months[13][2] = [[12],[0x0038, 0x0044],[0x0039, 0x0045],[0x003A, 0x0046],[0x003B, 0x0047], _
[0x003C, 0x0048],[0x003D, 0x0049],[0x003E, 0x004A],[0x003F, 0x004B], _
[0x0040, 0x004C],[0x0041, 0x004D],[0x0042, 0x004E],[0x0043, 0x004F]], $a_Locale[2] = [0x0400, 0x0800]
Local $a_Res, $a_Ret[12], $i_Column = 0, $i_Local = 0
If $f_Abbr Then $i_Column = 1
If $f_System Then $i_Local = 1
$i_NumMonth = Number($i_NumMonth)
Switch $i_NumMonth
Case 1 To 12
$a_Res = DllCall('kernel32.dll', 'int', 'GetLocaleInfoW', 'ulong', $a_Locale[$i_Local], 'dword', $a_Months[$i_NumMonth][$i_Column], 'wstr', '', 'int', 80)
If @error Or Not $a_Res[0] Then Return SetError(1, 0, '')
Return $a_Res[3]
Case Else
For $i = 1 To $a_Months[0][0]
$a_Res = DllCall('kernel32.dll', 'int', 'GetLocaleInfoW', 'ulong', $a_Locale[$i_Local], 'dword', $a_Months[$i][$i_Column], 'wstr', '', 'int', 80)
If @error Or Not $a_Res[0] Then Return SetError(1, 0, '')
$a_Ret[$i - 1] = $a_Res[3]
Next
If $s_Sep Then
For $i = 1 To 11
$a_Ret[0] &= $s_Sep & $a_Ret[$i]
Next
Return $a_Ret[0]
EndIf
Return $a_Ret
EndSwitch
EndFunc ;==>_WinAPI_GetLocal_DayOfMonth