Как я могу максимизировать, восстановить или свернуть окно с помощью скрипта VB? - PullRequest
8 голосов
/ 29 сентября 2010

Мне нужно иметь возможность создавать отдельные файлы .vbs, которые (при запуске с помощью комбинации клавиш) сделают активное окно развернутым, свернутым или восстановленным.

Как я могу сделать это без загрузки и установки (здесь не разрешено) отдельного пакета.

Ответы [ 4 ]

16 голосов
/ 29 сентября 2010

VBScript и Windows Script Host не предоставляют встроенных функций для максимизации / минимизации / восстановления окна. Без каких-либо сторонних инструментов единственным вариантом является использование SendKeys для имитации сочетаний клавиш соответствующих команд в системном меню окна.

  • Чтобы развернуть активное окно, вы можете смоделировать ярлык Alt + SpaceBar , x :

    Set oShell = CreateObject("WScript.Shell")
    oShell.SendKeys "% x"
    
  • Чтобы свернуть активное окно, используйте Alt + SpaceBar , n :

    Set oShell = CreateObject("WScript.Shell")
    oShell.SendKeys "% n"
    
  • Чтобы восстановить активное окно, используйте Alt + SpaceBar , r :

    Set oShell = CreateObject("WScript.Shell")
    oShell.SendKeys "% r"
    

(Обратите внимание, что этот код не будет работать в неанглийских версиях Windows, где имена команд «Развернуть / Свернуть / Восстановить» локализованы и поэтому имеют другие сочетания клавиш.)

2 голосов
/ 28 июня 2018

SendKeys не работал на моем компьютере.Испанский родной с испанской и английской клавиатурой.Я сделал это и работал в своем коде как инструкция и работал, чтобы максимизировать мое окно Excel.Я положил .Sleep, чтобы визуально проверить это.

objExcel.SendKeys"% x"
objExcel.Visible = True
objExcel.SendKeys"% x"

WScript.Sleep 2000
0 голосов
/ 14 мая 2019

тема старая.Но мне удалось найти независимое от языка решение. SendKeys может отправлять любые ключи приложения, включая клавиши со стрелками и клавишу вводаТаким образом, мы можем эмулировать эти действия без определенных букв (x, r, n).Вот рабочий пример:

Dim oShell : Set oShell = CreateObject("WScript.Shell")
oShell.SendKeys("% {DOWN}{DOWN}{DOWN}{DOWN}{ENTER}")   'Maximize
'...
oShell.SendKeys("% {ENTER}")   'Restore
'...
oShell.SendKeys("% {DOWN}{DOWN}{DOWN}{ENTER}")   'Minimize
0 голосов
/ 12 апреля 2019

Чтобы развернуть любое окно, будет работать следующий код:

Application.SendKeys "%{ }"
Application.Wait (Now + TimeValue("00:00:02"))
Application.SendKeys "x"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...