0

我正在尝试解决夏令时问题。该代码将在嵌入在 .net 2.0 fw 下的 Windows XP 上运行。除了一个小问题,我一切正常。要求是以编程方式在 TimeDate.cpl 面板中设置夏令时设置,该面板就是您设置日期和时间的窗口。我发现这样做的唯一方法是创建一个注册表项,这确实有效。但是,在您实际打开 TimeDate 窗口、单击时区面板并点击应用之前,它不会生效。即使重新启动也不会这样做。我的问题是:有没有办法让我的 C# 应用程序打开 TimeDate 窗口并单击应用?

4

1 回答 1

0

可能不会,因为你一开始就做错了。:-)

正确的做法是使用 API 函数SetDaylightTime,该函数接受一个参数,指示夏令时是否在本地时区生效。显然,上面引用的函数在 XP Embedded 上不可用。其余的都是有效的,AFAIK。

要使用注册表,您不需要 TimeDate 控制面板小程序;您可以使用夏令时注册表设置中的代码示例直接在代码中执行此操作。注意RegFlushKey代码中的调用;他们使更改持久化。另请注意,它提到更改会在下次重新启动时生效,而不是立即生效;这也是 WinXP 桌面(以及 Vista/Win7,IIRC)的工作方式。

于 2012-08-22T20:36:50.630 回答