18

Giả sử tôi muốn bắt đầu một số chương trình C: \ program1.exe, C: \ program2.exe, v.v. trên nhiều máy tính để bàn trong windows 10. Ví dụ: chương trình 1 và 2 nên được bắt đầu trên máy tính để bàn 1 song song, chương trình 3 nên được bắt đầu trên màn hình thứ hai, trong khi chương trình 4 nên được bắt đầu thu nhỏ trên màn hình thứ ba.Bắt đầu chương trình trên nhiều máy tính để bàn bằng PowerShell trong windows 10

Điều này phải đạt được bằng cách sử dụng tập lệnh PowerShell hoặc lô. Giải pháp sẽ là hoàn hảo nếu kịch bản PowerShell tự động phát hiện xem có đủ máy tính để bàn đang mở và mở nhiều máy tính để bàn hơn nếu cần thiết.

batch-file-run-program-set position cung cấp giải pháp cho vấn đề mở nhiều chương trình cạnh nhau và thay đổi kích thước chúng. Tuy nhiên, các giải pháp này không giải quyết nhiều cửa sổ 10 máy tính để bàn. Các giải pháp dựa trên Monitorinfoview và NirCmd (cùng một trang web). Công cụ Monitorinfoview không truy xuất nhiều thông tin trên màn hình, nhưng chỉ có nhiều màn hình. NirCmd cũng không bao gồm các lệnh để gửi các chương trình đến các máy tính để bàn cụ thể.

+3

Bạn đã thực hiện bất kỳ nghiên cứu nào về điều này chưa? Đây là một comminity, chúng tôi không xây dựng những thứ cho người khác, chúng tôi sharr ou kinh nghiệm để giúp bạn nếu bạn đang mắc kẹt làm somzthing mà bạn bắt đầu. –

+0

có, tôi đã thử giải pháp sau: [link] (http://stackoverflow.com/questions/10392620/how-can-a-batch-file-run-a-program-and-set-the-position-and -size-of-the-cửa sổ) Tuy nhiên, tôi không thể tìm hiểu cách powerhell có thể nhắm mục tiêu các máy tính để bàn cụ thể. – HRSE

+2

Sau đó bao gồm những gì bạn nhận được khi thực hiện, lỗi, dấu vết, chi tiết .. –

Trả lời

3

Điều này sẽ giúp bạn đi đúng đường. Nó sử dụng PowerShell, C# (bên trong PS), phím tắt Windows và lệnh cơ bản. Lưu tệp này bằng tập lệnh .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 

Bạn có thể nhận được C# InputSimulator.dll từ https://inputsimulator.codeplex.com/

Khi các loại đã được thêm vào sau đó bạn có thể gọi [CSharpPS.PS]::NewVD() để tạo ra máy tính để bàn ảo mới. Từ đây bạn có thể chạy các chương trình cụ thể. Bạn cũng có thể cần phải đặt chế độ ngủ theo cách thủ công. Một ví dụ:

calc Start-Sleep -Milliseconds 500

Sau đó mở máy tính để bàn ảo mới [CSharpPS.PS]::NewVD() Start-Sleep -Milliseconds 500 notepad

Bạn có thể mở rộng lớp C# để cho phép thay đổi giữa các desktop ảo hoặc giảm thiểu các ứng dụng như bạn yêu cầu.

+5

Tôi tin rằng đây là câu trả lời tốt nhất có thể và tôi tin rằng điều này là vô lý. Cứu chúng ta khỏi chính chúng ta, Microsoft.Sẽ là tuyệt vời để cho phép các ứng dụng đặt màn hình nền mặc định của họ. – andymule

Các vấn đề liên quan