Чи можливо відкрити і вирівняти 4 вікна на моніторі за допомогою пакетного сценарію / патронної оболонки?


0

У Windows10 я можу вручну відкрити і вирівняти до 4 вікон на одному віртуальному робочому столі:

4 вікна, вирівняні на екрані

Я, як правило, це роблю дуже часто, у мене навіть два шари на екрані, один шар з папками, а другий з консолями powerhell, що вказують на одне місце диска.

Проблема полягає в тому, що щоразу, коли Windows10 має один із своїх пристосувань і хоче перезапустити, мені доведеться знову відкрити близько десятка папок і консолей, щоб продовжити роботу. Хоча це тим часом буденне і навряд чи займає більше декількох хвилин, воно все ж займає більше декількох хвилин, і це жахливе завдання, я вважаю, що його слід автоматизувати.

Питання : Чи є спосіб автоматизувати це відкривання та вирівнювання вікон за допомогою пакетного сценарію або скрипта повноважень?


Відповіді:


0

Для цього існує маса рішень, але цей код допомагає зробити це досяжним без сторонніх інструментів. На жаль, ми не можемо використовувати SendKeys, оскільки Winключ недоступний.

Це трохи хакі. В ідеалі ви хочете запитати роздільну здатність монітора та розпочати кожен процес із потрібного положення пікселя.

# stuff needed to send keystrokes
$source = @"
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace KeyboardSend
{
    public class KeyboardSend
    {
        [DllImport("user32.dll")]
        public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
        private const int KEYEVENTF_EXTENDEDKEY = 1;
        private const int KEYEVENTF_KEYUP = 2;
        public static void KeyDown(Keys vKey)
        {
            keybd_event((byte)vKey, 0, KEYEVENTF_EXTENDEDKEY, 0);
        }
        public static void KeyUp(Keys vKey)
        {
            keybd_event((byte)vKey, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
        }
    }
}
"@

Add-Type -TypeDefinition $source -ReferencedAssemblies "System.Windows.Forms"

# the arrow key combinations (0 = Left Up, 1 = Left Down, 2 = Right Up, 3 = Right Down)
$LR = @('Left','Left','Right','Right')
$UD = @('Up','Down','Up','Down')

# edit the sleep value as needed.
$sleepMS = 200

# start a process, move it in the next desirable position, x4
0..3 | % {

    Start-Process powershell
    # if we don't wait for the process to open, we might not have focus.
    Sleep -Milliseconds $sleepMS
    [KeyboardSend.KeyboardSend]::KeyDown("LWin")
    [KeyboardSend.KeyboardSend]::KeyDown($LR[$_])
    Sleep -Milliseconds $sleepMS
    [KeyboardSend.KeyboardSend]::KeyDown($UD[$_])
    [KeyboardSend.KeyboardSend]::KeyUp("LWin")
    Sleep -Milliseconds $sleepMS
    [KeyboardSend.KeyboardSend]::KeyDown("Escape")

}

Список доступних ключів .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.