Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET Framework:检测进程何时阻止屏幕保护程序_C#_.net_Windows_Process_Screensaver - Fatal编程技术网

C# .NET Framework:检测进程何时阻止屏幕保护程序

C# .NET Framework:检测进程何时阻止屏幕保护程序,c#,.net,windows,process,screensaver,C#,.net,Windows,Process,Screensaver,在我的.NETFramework4.6.1应用程序中,我需要检测进程是否阻止屏幕保护程序 我找到了方法。通过这种方法,我们可以告诉Windows我们的进程阻止了屏幕保护程序。但是在我的例子中,我想知道是否有任何进程阻止了屏幕保护程序 这可能吗?在我的Windows 10-x64上,SPI\u GetScreensave和HKEY\u CURRENT\u USER\Control Panel\Desktop Screensave都不活动。。。设置为TRUE和1,即使系统已禁用。SetThreadE

在我的.NETFramework4.6.1应用程序中,我需要检测进程是否阻止屏幕保护程序

我找到了方法。通过这种方法,我们可以告诉Windows我们的进程阻止了屏幕保护程序。但是在我的例子中,我想知道是否有任何进程阻止了屏幕保护程序


这可能吗?

在我的Windows 10-x64上,SPI\u GetScreensave和HKEY\u CURRENT\u USER\Control Panel\Desktop Screensave都不活动。。。设置为TRUE和1,即使系统已禁用。
SetThreadExecutionState()
是一种调用+。前者只返回前一个状态。另一个返回请求的句柄。现在,句柄是不透明的,不能直接使用,而且,顺便说一句,系统只保留为每种类型生成的请求的引用计数,因此可能没有直接的方法进行反向查找查询。因此,您(可能)必须测试一个进程是否有一个您正在查找的类型的打开句柄,就像Sysinternals所做的那样。因此,打开该进程,调用
NtQuerySystemInformation()
NtDuplicateObject()
,设置访问级别和
NtQueryObject()
,假设您可以获得所需的访问权限你能说说你为什么需要这些信息吗?也许还有另一种更直接的管理方式。Olivier,在我的例子中,SPI_GetScreenSave Active它不工作,因为我需要检查进程是否阻止Windows和Windows RDS环境中的屏幕保护程序,以及这种方法在这种环境中不能正常工作(RDS中的屏幕保护程序不太清楚)