c#中
1 using System.Runtime.InteropServices; 2 3 [DllImport("kernel32.dll", EntryPoint = "GetSystemDefaultLCID")] 4 public static extern int GetSystemDefaultLCID(); 5 6 [DllImport("kernel32.dll", EntryPoint = "SetLocaleInfoA")] 7 public static extern int SetLocaleInfo(int Locale, int LCType, string lpLCData); 8 9 [DllImport("user32.dll")] 10 public static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam); 11 12 private static readonly IntPtr HWND_BROADCAST = new IntPtr(0xffff); 13 private const uint WM_SYSCOMMAND = 0x0112; 14 private const int SC_MONITORPOWER = 0xf170; 15 private const int WM_SETTINGCHANGE = 0x001A; 16 17 public const int LOCALE_SLONGDATE = 0x20; 18 public const int LOCALE_SSHORTDATE = 0x1F; 19 public const int LOCALE_STIME = 0x1003; 20 21 22 [Flags] 23 public enum SendMessageTimeoutFlags : uint 24 { 25 SMTO_NORMAL = 0x0000, 26 SMTO_BLOCK = 0x0001, 27 SMTO_ABORTIFHUNG = 0x0002, 28 SMTO_NOTIMEOUTIFNOTHUNG = 0x0008 29 } 30 31 32 [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] 33 public static extern IntPtr SendMessageTimeout( 34 IntPtr windowHandle, 35 uint Msg, 36 IntPtr wParam, 37 IntPtr lParam, 38 SendMessageTimeoutFlags flags, 39 uint timeout, 40 out IntPtr result 41 ); 42 43 44 try 45 { 46 int x = GetSystemDefaultLCID(); 47 SetLocaleInfo(x, LOCALE_STIME, "HH:mm:ss"); //时间格式 48 SetLocaleInfo(x, LOCALE_SSHORTDATE, "yyyy-MM-dd"); //短日期格式 49 SetLocaleInfo(x, LOCALE_SLONGDATE, "yyyy-MM-dd"); //长日期格式 50 //SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0); 51 IntPtr result1; 52 //修改后发送一个消息给系统 53 //调用 54 SendMessageTimeout( 55 HWND_BROADCAST, 56 WM_SETTINGCHANGE, 57 IntPtr.Zero, 58 IntPtr.Zero, 59 SendMessageTimeoutFlags.SMTO_ABORTIFHUNG, 60 20, 61 out result1); 62 63 } 64 catch (Exception ex) 65 { 66 Console.WriteLine(ex); 67 }
如果用sendmessage的话会假死并不会有效果
c++builder中
1 SetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_SSHORTDATE,pchar('yyyy-MM-dd')); //短日期 2 SetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_SLONGDATE,pchar('yyyy-MM-dd')); 3 SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, 0);
就可以了
浙公网安备 33010602011771号