Han*_*ank 5 .net vmware virtual-machine
我正在开发一个内部.NET应用程序,它将在VM上运行(使用VMware),并想知道是否有办法从VM系统事件中获取通知(如挂起,恢复等)
有人知道这样做的便捷方法吗?虚拟机安装了VMware Tools,是否提供用于挂钩事件的.NET API?
编辑:特别是,我对系统刚刚恢复时感兴趣.我认为这与任何"常规"Windows系统事件都不对应(毕竟,暂停和恢复VM的重点是Windows不知道发生了什么).我错了吗?这会触发事件吗?
编辑2:我编写了这个快速控制台应用程序来挂钩我能想到的所有系统事件,并在暂停/恢复时什么也得不到:
static void Main(string[] args) {
SystemEvents.DisplaySettingsChanged += (sender, e) => Console.WriteLine("Display settings changed");
SystemEvents.EventsThreadShutdown += (sender, e) => Console.WriteLine("Events thread shutdown");
SystemEvents.PowerModeChanged += (sender, e) => Console.WriteLine("Power mode changed");
SystemEvents.SessionEnding += (sender, e) => Console.WriteLine("Session ending");
SystemEvents.SessionSwitch += (sender, e) => Console.WriteLine("Session switch");
SystemEvents.UserPreferenceChanging += (sender, e) => Console.WriteLine("User preference changing");
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
好的,所以我已经放弃为此寻找一个简单的 .NET 挂钩,但如果其他人偶然发现了这个问题并想知道我是如何解决它的:
我的应用程序中有一个定期触发(每 10 秒)的计时器,并将当前时间与上次时间进行比较。如果时间明显长于 10 秒,我认为计算机已睡眠或挂起,并根据需要刷新我的应用程序。
有点 hacky,但是计时器不会增加程序的 CPU 或内存使用量,所以我认为这并不可怕。
| 归档时间: |
|
| 查看次数: |
458 次 |
| 最近记录: |