gpt4 book ai didi

c++ - 如何使用 Windows API 更改时区设置

转载 作者:太空狗 更新时间:2023-10-29 21:05:37 26 4
gpt4 key购买 nike

我需要在我的应用程序中通过 API 更改 DST 和时区。我修改并复制了以下链接末尾的“SetTimeZoneInformation”用法示例并运行了它: http://msdn.microsoft.com/en-us/library/windows/desktop/ms724944(v=vs.85).aspx

我假设我的时间设置应该反射(reflect)我在托盘或控制面板中的时间设置。但是没有任何反应。

还应注意以下事项。

这段代码修改了“HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation”关键内容。并且“HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\my time zone”线程没有变化。但这正是我要找的!

有没有办法在 C++ 中使用 API 修改“我的时区”?

添加(来自本应在此处编辑的答案):

所以,实际上,我的目标是让我的应用程序在 Win7 下运行。现有功能使用 MANUAL DST 支持。因此,我需要以某种方式将此手动 DST 和 GMT 偏移设置与 Win7 同步。据我了解,SetTimeZoneInformation 函数只是尝试根据我的输入从现有的时区集中查找时区。如果没有与我输入的时区相同的时区,Win7 将使用默认时区,例如 UTC-12,并通知用户“无法识别当前时区”。

那么,我应该使用什么方法来实现这一点?

最佳答案

假设您的代码以所需的权限运行,并且 SetTimeZoneInformation() 由于其他原因未返回 FALSE,那么它确实更改了系统的时区。

但是,通知区域中的时钟小程序并不知道该更改,因为您一开始就忘了做广告。引用 documentationRemarks 部分:

To inform Explorer that the time zone has changed, send the WM_SETTINGCHANGE message.

所以,你应该广播一个WM_SETTINGCHANGE当您的应用程序更改系统时区时,向所有顶级窗口发送消息。像这样的东西:

SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, NULL, NULL,
SMTO_NORMAL, aShortTimeoutInMilliseconds, NULL);

关于c++ - 如何使用 Windows API 更改时区设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9588256/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com