static void Main()
{
// Set the SystemEvents class to receive event notification when a user
// when display settings change.
SystemEvents.DisplaySettingsChanged += new
EventHandler(SystemEvents_DisplaySettingsChanged);
// For demonstration purposes, this application sits idle waiting for events.
Console.WriteLine("This application is waiting for system events.");
Console.WriteLine("Press <Enter> to terminate this application.");
Console.ReadLine();
}
private void SystemEvents_DisplaySettingsChanged(object sender, EventArgs e)
{
Console.WriteLine("Display setting change .");
}
我已经创建了一个Windows服务。当我重新启动系统并登录然后更改显示设置时,它将无法工作,事件不会激活,但服务正在运行。
当我重新启动服务时,我更改了显示设置,然后显示设置事件触发。
我认为SystemEvents.DisplaySettingsChanged可能依赖于某些服务。
答案 0 :(得分:1)
SystemEvents类使用WTSSession API,它依赖于终端服务服务(TermService)。如果您的服务在启动该服务之前与SystemEvents混淆,它将以有趣的方式失败。如果您的服务依赖于TermService,那么SystemEvents init应该在您的服务启动时运行。