如何在 C# 中发送用户输入以重置系统空闲时间

本文关键字:系统 时间 输入 用户 | 更新日期: 2023-09-27 18:36:40

我想用我的应用程序重置系统空闲时间。在Windows上,我可以使用SendInput执行此操作。问题是如何在 OSX 上执行此操作?

感谢您的帮助!

编辑 1:
我也尝试了UpdateSystemActivity,但没有成功,其中IdleTime idleSeconds返回HIDIdleTime。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{  
     while (true) {  
          NSLog(@"Idle seconds: %lu", (unsigned long)[[IdleTime sharedIdleTime] idleSeconds]);  
          [NSThread sleepForTimeInterval:1];  
     }  
});  
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{  
     while (true) {  
          dispatch_async(dispatch_get_main_queue(), ^{  
             UpdateSystemActivity(OverallAct);  
          });  
          [NSThread sleepForTimeInterval:5];  
     }  
});  

编辑2:
我还尝试通过本文(清单 2)使用kIOPMAssertionType的每个可能的参数重置空闲时间。不幸的是没有成功..
再次:我想要 c# 的解决方案,但我只是想看看另一种语言是否可行。

如何在 C# 中发送用户输入以重置系统空闲时间

在OSX上,你也可以使用P/Invoke。要执行的函数名为 UpdateSystemActivity。下面是示例。签名可能是:

[DllImport ("/System/Library/Frameworks/CoreServices.framework/CoreServices")]
private extern static void UpdateSystemActivity(byte activity);