0

2台のDELLモニターとテレビがあります。私はよくテレビを使って映画をストリーミングしています。プライマリ モニターに影響を与えることなく、セカンダリ スクリーンがセカンダリ DELL モニターからテレビに切り替わるようにスクリプトを作成したいと考えています。

これはさまざまな方法で実現できることはわかっていますが、スクリプトを作成して、現在アクティブな画面を検出し、別の画面に切り替えて、妻が画面をダブルクリックして切り替えることができるようにしたいと考えています。二つ。

使用できるスクリプト言語と、使用する必要があるライブラリ/dll を教えてくれる人がいますか?

4

1 に答える 1

0

好奇心旺盛な人のために、私は最終的にこのための C# コンソール アプリケーションを作成しました。このようにして、WinAPI を使用して現在の表示モードを特定し、必要な表示モードに切り替えることができました。誰もが望むようにセットアップされるわけではありませんが、良い出発点になるはずです。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace DisplaySwitcher
{
    class Program
    {
        [System.Runtime.InteropServices.DllImport("user32.dll")]
        public static extern int GetSystemMetrics(int nIndex);

        public const int SM_CMONITORS = 80;

        static void Main(string[] args)
        {
            int iNumberOfDisplays = GetSystemMetrics(SM_CMONITORS);
            string displaySwitch = null;
            switch (iNumberOfDisplays)
            {
                case 1: // TV mode (only detects 1 display)
                    displaySwitch += "/external";
                    break;
                case 2: // Normal mode (extended display)
                    displaySwitch += "/clone";
                    break;
                default:
                    MessageBox.Show("Unknown display mode detected");
                    break;
            }

            executeCommand(displaySwitch);
        }

        private static void executeCommand(string displaySwitch)
        {
            System.Diagnostics.Process process = new System.Diagnostics.Process();
            System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
            startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            startInfo.FileName = "DisplaySwitch.exe";
            startInfo.Arguments = displaySwitch;
            process.StartInfo = startInfo;
            process.Start();
        }

    }
}
于 2013-04-14T05:01:58.037 に答える