23

假设我想在windows 10的多个桌面上启动几个程序C:\program1.exe、C:\program2.exe等。比如程序1和2应该在桌面1上并排启动,程序3应该在第二个桌面上启动,而程序4应该在第三个桌面上最小化启动。

这应该使用 powershell 或批处理脚本来实现。如果 powershell 脚本自动检测是否打开了足够多的桌面并在必要时打开更多桌面,则该解决方案将是完美的。

batch-file-run-program-set 位置提供了一个解决并排打开多个程序并调整它们大小的问题。但是,这些解决方案不能解决多个 Windows 10 桌面。解决方案依赖于Monitorinfoview和 NirCmd(同一网站)。Monitorinfoview 工具不会检索多个桌面信息,而只会检索多个屏幕。NirCmd 也不包含将程序发送到特定桌面的命令。

4

2 回答 2

8

有一些适用于虚拟桌面的 Powershell 命令。首先,您必须安装虚拟桌面模块Install-Module VirtualDesktop

# Switch to desktop 2 (count starts with 0)
Get-Desktop 1 | Switch-Desktop
    
# Move obs64.exe to desktop 3
(ps obs64)[0].MainWindowHandle | Move-Window (Get-Desktop 2) | Out-Null

您可能必须等待启动过程来初始化其窗口Start-Sleep

在此处阅读更多信息:https ://gallery.technet.microsoft.com/scriptcenter/Powershell-commands-to-d0e79cc5

于 2020-04-20T03:11:53.743 回答
6

这应该让你在正确的路线上。它使用 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

您可以从https://inputsimulator.codeplex.com/获取 C# InputSimulator.dll

添加类型后,您可以调用[CSharpPS.PS]::NewVD()以创建新的虚拟桌面。从这里您可以运行特定程序。您可能还需要手动设置睡眠。一个例子 :

calc Start-Sleep -Milliseconds 500

然后打开一个新的虚拟桌面[CSharpPS.PS]::NewVD() Start-Sleep -Milliseconds 500 notepad

您可以扩展 C# 类以允许在虚拟桌面之间进行更改或最小化您需要的应​​用程序。

于 2015-10-22T00:54:27.360 回答