方法1:
SetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SSHORTDATE, PChar('yyyy-MM-dd'));
SetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SLONGDATE, PChar('yyyy-MM-dd'));
SetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_STIMEFORMAT,PChar('HH:mm:ss'));
SendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,0,0);
執行最後一發送消息語句時,偶爾程序會出現長時間等待,甚至程序運行不了需重新啟動電腦.初步分析可能操作系統有進程不響應導致消息無法返回.
方法2:
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
//Reg.RootKey := HKEY_USERS;
if Reg.OpenKey('\Control Panel\International', True) then
//if Reg.OpenKey('\.DEFAULT\Control Panel\International', True) then
begin
Reg.WriteString('sShortDate','yyyy-MM-dd');
Reg.WriteString('sLongDate','yyyy-MM-dd');
Reg.WriteString('sTimeFormat','HH:mm:ss');
Reg.CloseKey;
end;
finally
Reg.Free;
end;
當次程序啟動更改的日期時間格式不生效,需要關閉重新運行程序.請大家幫忙提供建議或其它更好的辦法.
SetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SSHORTDATE, PChar('yyyy-MM-dd'));
SetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SLONGDATE, PChar('yyyy-MM-dd'));
SetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_STIMEFORMAT,PChar('HH:mm:ss'));
SendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,0,0);
執行最後一發送消息語句時,偶爾程序會出現長時間等待,甚至程序運行不了需重新啟動電腦.初步分析可能操作系統有進程不響應導致消息無法返回.
方法2:
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
//Reg.RootKey := HKEY_USERS;
if Reg.OpenKey('\Control Panel\International', True) then
//if Reg.OpenKey('\.DEFAULT\Control Panel\International', True) then
begin
Reg.WriteString('sShortDate','yyyy-MM-dd');
Reg.WriteString('sLongDate','yyyy-MM-dd');
Reg.WriteString('sTimeFormat','HH:mm:ss');
Reg.CloseKey;
end;
finally
Reg.Free;
end;
當次程序啟動更改的日期時間格式不生效,需要關閉重新運行程序.請大家幫忙提供建議或其它更好的辦法.
用這句不行,改不了.
這語句參數有啥問題,應該怎樣寫?
SendMessageTimeOut(HWND_BROADCAST,WM_SETTINGCHANGE,0,0,SMTO_NORMAL,1000,0);
[Error] PubFunction.pas(1465): Types of actual and formal var parameters must be identical