0
ディスプレイ(モニタ)が動作しているかどうかをチェックし、そのデータをコードにインポートする可能性はありますか?私は、コマンドラインのトリックや、それに関する情報を漏らす可能性のあるデバイスがあると仮定します。 Linuxを使う。Linuxでディスプレイが動作しているかどうかを常に確認しています
ディスプレイ(モニタ)が動作しているかどうかをチェックし、そのデータをコードにインポートする可能性はありますか?私は、コマンドラインのトリックや、それに関する情報を漏らす可能性のあるデバイスがあると仮定します。 Linuxを使う。Linuxでディスプレイが動作しているかどうかを常に確認しています
XRandR
(X解像度と回転など)を使用することができます。
出力表示のステータスは、コマンドxrandr
で確認できます。たとえば、私のPCでは、次のようになります。
$ xrandr | grep connected
DVI-I-0 disconnected (normal left inverted right x axis y axis)
DVI-I-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 531mm x 299mm
....
出力の名前はもちろんデバイス固有です。
Cプログラムからデータにアクセスしたい場合は、Xrandr
拡張子でプログラムするのは簡単です。あなたはXRROutputChangeNotifyEvent
Xイベントを使用することができ、変更のリアルタイム通知を取得したい場合は
#include <X11/Xlib.h>
#include <X11/extensions/Xrandr.h>
#include <stdio.h>
int main()
{
Display *dsp = XOpenDisplay(NULL);
Window root = XRootWindow(dsp, 0);
XRRScreenResources *sres = XRRGetScreenResources(dsp, root);
printf("N outputs %d\n", sres->noutput);
for (int i = 0; i < sres->noutput; ++i)
{
XRROutputInfo *info = XRRGetOutputInfo(dsp, sres, sres->outputs[i]);
printf(" %d: '%s' %s\n", i, info->name, info->connection == RR_Connected ? "connected" : "");
XRRFreeOutputInfo(info);
}
XRRFreeScreenResources(sres);
XCloseDisplay(dsp);
return 0;
}
が、それは次のようになります。このサンプルコードは、すべての出力(エラーチェックを省略)の接続状態を表示しますもう少し複雑です:あなたはイベントループが必要ですか、またはウィジェットツールキットを使用し、Xイベントハンドラをフックしてください。
'xrandr | grep connected'? – rodrigo
多くの感謝!それはトリックを行います:) – Levi
喜んでそれが助けた。私は長い答えを加えました。あなたが好きなら、それを受け入れることができます。 ;-) – rodrigo