You can use GetLocaleInfoEx in WM_SETTINGCHANGE to get the current formats
For example, a test for the Short Time :
var sbDataUser = new StringBuilder(128);
if (GetLocaleInfoEx(LOCALE_NAME_USER_DEFAULT, LOCALE_SSHORTTIME, sbDataUser, sbDataUser.Capacity) != 0)
{
var sbDataSystem = new StringBuilder(128);
if (GetLocaleInfoEx(LOCALE_NAME_SYSTEM_DEFAULT, LOCALE_SSHORTTIME, sbDataSystem, sbDataSystem.Capacity) != 0)
{
MessageBox.Show(string.Format("Time Format (User) : {0}\r\nTime Format (System) : {1}", sbDataUser.ToString(), sbDataSystem.ToString()), "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
Declarations (cannot post here) : 107437