web-dev-qa-db-ja.com

Windows10でPowerShellを使用して複数のデスクトップでプログラムを開始する

Windows 10の複数のデスクトップで複数のプログラムC:\ program1.exe、C:\ program2.exeなどを起動したいとします。たとえば、プログラム1と2は、デスクトップ1で並べて起動する必要があります。 3は2番目のデスクトップで開始する必要があり、プログラム4は3番目のデスクトップで最小化して開始する必要があります。

これは、PowerShellまたはバッチスクリプトのいずれかを使用して実現する必要があります。 PowerShellスクリプトが十分な数のデスクトップが開いているかどうかを自動的に検出し、必要に応じてさらに多くのデスクトップを開くことができれば、このソリューションは完璧です。

batch-file-run-program-set position は、複数のプログラムを並べて開き、サイズを変更する問題の解決策を提供します。ただし、これらのソリューションは、複数のWindows10デスクトップには対応していません。ソリューションは Monitorinfoview とNirCmd(同じWebサイト)に依存しています。ツールMonitorinfoviewは、複数のデスクトップ情報を取得するのではなく、複数の画面のみを取得します。 NirCmdには、特定のデスクトップにプログラムを送信するコマンドも含まれていません。

21
HRSE

これにより、正しい方向に進むことができます。 PowerShell、C#(PS内)、Windowsショートカット、および基本的なコマンドを使用します。これを.ps1スクリプトに保存します。

_$Source = @"
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WindowsInput;

namespace CSharpPS
{
    public static class PS
    {
        public static void NewVD()
        {
            InputSimulator.SimulateKeyDown(VirtualKeyCode.LWIN);
            InputSimulator.SimulateKeyDown(VirtualKeyCode.CONTROL);
            InputSimulator.SimulateKeyPress(VirtualKeyCode.VK_D);
            InputSimulator.SimulateKeyUp(VirtualKeyCode.LWIN);
            InputSimulator.SimulateKeyUp(VirtualKeyCode.CONTROL);
        }        
    }
}
"@;

Add-Type -TypeDefinition $Source -Language CSharp -ReferencedAssemblies InputSimulator.dll
_

C#InputSimulator.dllは https://inputsimulator.codeplex.com/ から取得できます。

タイプが追加されたら、[CSharpPS.PS]::NewVD()を呼び出して新しい仮想デスクトップを作成できます。ここから、特定のプログラムを実行できます。手動でスリープを設定する必要がある場合もあります。例 :

_calc Start-Sleep -Milliseconds 500_

次に、新しい仮想デスクトップを開きます[CSharpPS.PS]::NewVD() Start-Sleep -Milliseconds 500 notepad

C#クラスを拡張して、仮想デスクトップを切り替えたり、必要に応じてアプリケーションを最小限に抑えたりすることができます。

6
Shaun Webb