Запуск программ на нескольких рабочих столах с помощью powershell в Windows 10

Предположим, что я хочу запустить несколько программ C:\program1.exe, C:\program2.exe и т.д. на нескольких рабочих столах в Windows 10. Например, программы 1 и 2 должны запускаться на рабочем столе 1, сторона, программа 3 должна быть запущена на втором рабочем столе, в то время как программа 4 должна быть запущена на третьем рабочем столе.

Это должно быть достигнуто с использованием либо powershell, либо пакета script. Решение было бы идеальным, если powershell script автоматически обнаруживает, открыты ли все настольные компьютеры и при необходимости открывают больше рабочих столов.

позиция batch-file-run-program-set обеспечивает решение проблемы одновременного открытия нескольких программ и изменения их размера. Однако эти решения не затрагивают несколько окон 10 настольных компьютеров. Решения полагаются на Monitorinfoview и NirCmd (тот же сайт). Инструмент Monitorinfoview не извлекает информацию о нескольких компьютерах, а только несколько экранов. NirCmd также не включает команды для отправки программ на определенные рабочие столы.

Ответы

Ответ 1

Это должно привести вас к правильным строкам. Он использует PowerShell, С# (внутри PS), ярлыки Windows и основные команды. Сохраните это в .ps1 script.

$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

Вы можете получить С# InputSimulator.dll из https://inputsimulator.codeplex.com/

После добавления типа вы можете вызвать [CSharpPS.PS]::NewVD() для создания нового виртуального рабочего стола. Отсюда вы можете запускать определенные программы. Возможно, вам также придется вручную установить сон. Пример:

calc Start-Sleep -Milliseconds 500

Затем откройте новый виртуальный рабочий стол [CSharpPS.PS]::NewVD() Start-Sleep -Milliseconds 500 notepad

Вы можете расширить класс С#, чтобы разрешить изменение между виртуальными рабочими столами или минимизацию приложений, как вам нужно.