私は実際にこれに対する解決策が見つかりました:
using System;
using System.Runtime.InteropServices;
static void Main()
{
EnumWindows(E, IntPtr.Zero);
Console.Write($"{_.Item1}x{_.Item2}");
}
struct R
{
int l;
int t;
public int r;
public int b;
public override string ToString() => $"{l},{t},{r},{b}";
public bool i() => l == 0 && r != 00;
}
static (int, int) _;
static bool E(IntPtr w, IntPtr l)
{
var r = new R();
GetWindowRect(w, ref r);
if (r.i() && _.Item1 == 0)
_ = (r.r, r.b);
return true;
}
delegate bool P(IntPtr w, IntPtr l);
[DllImport("user32.dll")]
static extern bool EnumWindows(P e, IntPtr l);
[DllImport("user32.dll")]
static extern bool GetWindowRect(IntPtr w, ref R r);
Main()
がインタラクティブにこれを貼り付けて、出力画面の解像度なければならない - 少なくともそれは私のために行います。
は、それが別のチュートリアルから一緒に困惑し、インタラクティブに押し込まれています、それがどのように動作するか私に聞かないでください。したがって、私はこれがすべてのPCで動作することを保証することはできません。
誰かがこれをテストしてください。
winapiコールを使用して取得できます。必要な呼び出しを見つけるために、msdnの "複数のディスプレイモニタのリファレンス"を使用してコードにピンボケが必要です。 –
コードスニペットを提供できますか?コーディングは例を用いて最もよく学習されます。 – MetaColon
私はこの答えはhttp://stackoverflow.com/a/43656496/7396801 – mykeels