0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

パソコンに接続しているディスプレイ情報をボタン一つで取得する【C#】

Last updated at Posted at 2021-03-12

動機

今回はノートパソコンに接続したディスプレイの情報をボタン一つで取得したいと思い、プロトを作成してみました。

なお、今回は WindowsFormsApp で作成しました。

過去の記事(WpfApp で作成)

参考 1:ノートパソコンの画面の明るさをボタン一つで変更する【C#】
参考 2:ノートパソコンの画面の音量をボタン一つで変更する【C#】
参考 3:ノートパソコンの画面のバッテリー状況をボタン一つで取得する【C#】
参考 4:ノートパソコンの画面の通信料状況をボタン一つで取得する【C#】
参考 5:ノートパソコンで現在使用中のアプリをボタン一つで把握する【C#】
参考 6: ノートパソコンで現在使用中のオーディオ機器情報をボタン一つで取得する【C#】
参考 7:ノートパソコンのユーザー情報取得やアプリ起動・終了、ディスプレイ画面の切替などを、ボタンを作って動かす【C#】

イメージ画像

プロトタイプのため、相変わらず UI はあまりこだわっていません。

ディスプレイ情報取得メイン画面.PNG

今回は「ディスプレイ情報取得」ボタンを選択することで、「プライマリディスプレイの情報取得」、「本フォームがあるディスプレイの常陽取得」、「全てのディスプレイの情報取得」ができます。

ディスプレイ情報取得結果画面.PNG

ソース

Form1.Designer.cs

Form1.Designer.cs

namespace WindowsFormsApp2
{
    partial class Form1
    {
        /// <summary>
        /// 必要なデザイナー変数です。
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// 使用中のリソースをすべてクリーンアップします。
        /// </summary>
        /// <param name="disposing">マネージド リソースを破棄する場合は true を指定し、その他の場合は false を指定します。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows フォーム デザイナーで生成されたコード

        /// <summary>
        /// デザイナー サポートに必要なメソッドです。このメソッドの内容を
        /// コード エディターで変更しないでください。
        /// </summary>
        private void InitializeComponent()
        {
            this.button1 = new System.Windows.Forms.Button();
            this.SuspendLayout();
            //
            // button1
            //
            this.button1.Font = new System.Drawing.Font("MS UI Gothic", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(128)));
            this.button1.Location = new System.Drawing.Point(254, 142);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(301, 152);
            this.button1.TabIndex = 0;
            this.button1.Text = "ディスプレイ情報取得";
            this.button1.UseVisualStyleBackColor = true;
            this.button1.Click += new System.EventHandler(this.button1_Click);
            //
            // Form1
            //
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(800, 450);
            this.Controls.Add(this.button1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.Button button1;
    }
}

Form1.cs

Form1.cs
using System;
using System.Windows.Forms;

namespace WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            try
            {
                InitializeComponent();

            }
            catch
            {
            }
        }
        /// <summary>
        /// プライマリディスプレイの情報取得
        /// </summary>
        private String GetPrimaryDisplayInformation()
        {
            String displayTitle = "";
            String deviceName = "";
            String displayX = "";
            String displayWidthSize = "";
            String displayWorkingAria = "";
            String displayWorkingAriaWidth = "";

            try
            {
                displayTitle = "●プライマリディスプレイの情報取得";
                deviceName = "\nデバイス名 : " + System.Windows.Forms.Screen.PrimaryScreen.DeviceName;
                displayX = "\nディスプレイの位置 : X=" + System.Windows.Forms.Screen.PrimaryScreen.Bounds.X + " - Y=" + System.Windows.Forms.Screen.PrimaryScreen.Bounds.Y;
                displayWidthSize = "\nディスプレイのサイズ : 幅=" + System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width + " - 高さ=" + System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height;
                displayWorkingAria = "\nディスプレイの作業領域の位置 : X" + System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.X + " - Y=" + System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Y;
                displayWorkingAriaWidth = "\nディスプレイの作業領域のサイズ : 幅" + System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width + " - 高さ=" + System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height;
            }
            catch
            {
            }
            return displayTitle + deviceName + displayX + displayWidthSize + displayWorkingAria + displayWorkingAriaWidth;
        }

        /// <summary>
        /// フォームがあるディスプレイの情報取得
        /// </summary>
        private String GetFormDisplayInformation()
        {
            String displayFormTitle = "";
            String displayDeviceName = "";
            String displayBoundsX = "";
            String displayBoundsWidth = "";
            String displayWorkingAriaX = "";
            String displayWorkingAreaWidth = "";

            try
            {
                displayFormTitle = "\n-----\n●フォームがあるディスプレイの情報取得";
                displayDeviceName = "\nデバイス名 : " + System.Windows.Forms.Screen.FromControl(this).DeviceName;
                displayBoundsX = "\nディスプレイの位置 : X=" + System.Windows.Forms.Screen.FromControl(this).Bounds.X + " - Y=" + System.Windows.Forms.Screen.FromControl(this).Bounds.Y;
                displayBoundsWidth = "\nディスプレイのサイズ : 幅=" + System.Windows.Forms.Screen.FromControl(this).Bounds.Width + " - 高さ=" + System.Windows.Forms.Screen.FromControl(this).Bounds.Height;
                displayWorkingAriaX = "\nディスプレイの作業領域の位置 : X" + System.Windows.Forms.Screen.FromControl(this).WorkingArea.X + " - Y=" + System.Windows.Forms.Screen.FromControl(this).WorkingArea.Y;
                displayWorkingAreaWidth = "\nディスプレイの作業領域のサイズ : 幅" + System.Windows.Forms.Screen.FromControl(this).WorkingArea.Width + " - 高さ=" + System.Windows.Forms.Screen.FromControl(this).WorkingArea.Height;
            }
            catch
            {
            }
            return displayFormTitle + displayDeviceName + displayBoundsX + displayBoundsWidth + displayWorkingAriaX + displayWorkingAreaWidth;
        }

        /// <summary>
        /// 全てのディスプレイの情報取得
        /// </summary>
        private String GetAllDisplayInformation()
        {
            String displayMainTitle = "";
            String displayDeviceName = "";
            String displayBoundsX = "";
            String displayBoundsWidth = "";
            String displayWorkingAreaX = "";
            String displayWorkingAreaWidth = "";
            String displayEnd = "";
            String messages = "";

            try
            {
                displayMainTitle = "\n-----\n●全てのディスプレイの情報取得";
                foreach (System.Windows.Forms.Screen screen_data in System.Windows.Forms.Screen.AllScreens)
                {
                    displayDeviceName = "\nデバイス名 : " + screen_data.DeviceName;
                    displayBoundsX = "\nディスプレイの位置 : X=" + screen_data.Bounds.X + " - Y=" + screen_data.Bounds.Y;
                    displayBoundsWidth = "\nディスプレイのサイズ : 幅=" + screen_data.Bounds.Width + " - 高さ=" + screen_data.Bounds.Height;
                    displayWorkingAreaX = "\nディスプレイの作業領域の位置 : X" + screen_data.WorkingArea.X + " - Y=" + screen_data.WorkingArea.Y;
                    displayWorkingAreaWidth = "\nディスプレイの作業領域のサイズ : 幅" + screen_data.WorkingArea.Width + " - 高さ=" + screen_data.WorkingArea.Height;
                    displayEnd = "\n-----";

                    messages += displayDeviceName + displayBoundsX + displayBoundsWidth + displayWorkingAreaX + displayWorkingAreaWidth + displayEnd;

                }
            }
            catch
            {
            }
            return displayMainTitle + messages;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show(GetPrimaryDisplayInformation() + GetFormDisplayInformation() + GetAllDisplayInformation());
        }
    }
}

おわりに

今回もボタン一つでパソコン回りの情報を取得することができました。

こんな感じでまたパソコンを便利にするツールを作成したいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?