linux - 如何检查 Linux 控制台屏幕保护程序是否有黑屏

标签 linux console screensaver

有没有办法以编程方式(通过 ioctl() 等)或通过读取/sys、/proc 或/dev 中的文件来检查屏幕是否已被 Linux 控制台屏幕保护程序黑屏?

谢谢和最好的问候,

君特

最佳答案

好的,检查了xset source code .相关代码部分为

#include <X11/extensions/dpms.h>
...
Display* dpy = XOpenDisplay(NULL);
...
int dummy;
CARD16 standby, suspend, off;
BOOL onoff;
CARD16 state;

printf("DPMS (Energy Star):\n");
if (DPMSQueryExtension(dpy, &dummy, &dummy)) 
{
    if (DPMSCapable(dpy)) 
    {
        DPMSGetTimeouts(dpy, &standby, &suspend, &off);
        printf ("  Standby: %d    Suspend: %d    Off: %d\n",
                standby, suspend, off);
        DPMSInfo(dpy, &state, &onoff);
        if (onoff) 
        {
            printf("  DPMS is Enabled\n");
            switch (state) 
            {
            case DPMSModeOn:
                printf("  Monitor is On\n");
                break;
            case DPMSModeStandby:
                printf("  Monitor is in Standby\n");
                break;
            case DPMSModeSuspend:
                printf("  Monitor is in Suspend\n");
                break;
            case DPMSModeOff:
                printf("  Monitor is Off\n");
                break;
            default:
                printf("  Unrecognized response from server\n");
            }
        }
    }
}

以防万一其他人需要这个;-)

关于linux - 如何检查 Linux 控制台屏幕保护程序是否有黑屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3819255/

相关文章:

linux - 旧的 Linux 内核奇怪的行为

terminal - R 中控制台和终端有什么区别?

java - 如何制作不会更新的 JPanel 背景?

java - 即使在程序执行后如何继续请求控制台输入运行

c# - Console.Read() 和 Console.ReadLine() 之间的区别?

c# - Process.Start(ProcessStartInfo) 不会将命令行发送到屏幕保护程序(.scr 文件)

windows - 以编程方式禁用屏幕保护程序不会影响控制面板吗?

ruby-on-rails - 单个自定义终端命令打开多个窗口,里面有不同的东西

c++ - 在 Ubuntu 12.10 上不能包含 "linux/in6.h"而没有错误

linux - 有没有人在 Linux 的 Wine 中使用 MASM 汇编语言?