使用mono (c#)关闭监视器

本文关键字:监视器 mono 使用 | 更新日期: 2023-09-27 18:08:06

我有下面的代码,关闭显示器在Windows,我目前使用的按钮点击;

[DllImport("user32.dll")]
public static extern int SendMessage(int hWnd, int Msg, int wParam, int lParam);
const int SC_MONITORPOWER = 0xF170;
const int WM_SYSCOMMAND = 0x0112;
const int MONITOR_ON = -1;
const int MONITOR_OFF = 2;
const int MONITOR_STANBY = 1;
int onFlag = 0;
private void MonitorOff()
{
    SendMessage(-1, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_OFF);
    onFlag = 1;
}
private void MonitorOn()
{
    if (onFlag == 1)
    {
        SendMessage(-1, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_ON);
        onFlag = 0;
    }
}

这段代码运行良好。我现在想在Linux (Debian,如果它有区别的话)下使用mono做同样的事情。显然,我不能使用user32.dll,所以想知道是否有人知道如何做到这一点?

我想我可以使用这些命令,如果没有内置的方法来实现这个…

使用mono (c#)关闭监视器

关于这个的一些额外信息;我使用的是树莓派,xset和setterm命令只会使屏幕空白。为了真正关闭屏幕,我必须使用tvservice -o(关闭)和tvservice -p(打开)。我没有发现任何内置的方式在单声道执行相同的动作。