在Windows应用程序中处理系统时间更改

5

我有一个 Windows 应用程序,当用户更改打开或运行该 Windows 应用程序的系统时间时,我想要任何事件。

如何获取更改后的时间、特定时间或任何系统更改时间 / 日期的事件?


1
可能是订阅本地系统时间更改事件的重复问题。 - user
2个回答

8
你可以订阅SystemEvents.TimeChanged事件。
要订阅上述事件,请执行以下操作:
1.创建TimeChanged EventHandler。
    private void time_Changed(object sender, EventArgs e)
    {
       MessageBox.Show("Time Changed");  
    }

2.将上述事件处理程序添加到SystemEvents.TimeChanged事件中。

 SystemEvents.TimeChanged += time_Changed;

我该如何使用那个方法?由于我是新手,对Windows应用程序有点困惑。 - k-s
是的,但请确保有消息泵在运行。这在控制台应用程序中不起作用,除非您创建一个消息泵。请参见https://dev59.com/BUfRa4cB1Zd3GeqP7kR2#764904以获取示例。 - Jim Mischel
我写了代码,但是系统时间改变时消息框没有触发...请看下面的代码。public partial class Form1 : Form { public static event EventHandler TimeChanged; public Form1() { InitializeComponent(); TimeChanged += Form1_TimeChanged; } protected void Form1_TimeChanged(object sender, EventArgs e) { MessageBox.Show(DateTime.Now.ToString()); } } - k-s

0

...或任何系统时间/日期更改事件? SystemEvents.TimeChanged仅在"用户更改系统时钟上的时间"时触发。

系统时间更改也可能是由系统或用户发起的系统时间调整引起的。您可以使用GetSystemTimeAdjustment函数来捕获这样的系统时间调整。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接