Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.70/40: Рейтинг темы: голосов - 40, средняя оценка - 4.70
0 / 0 / 0
Регистрация: 28.02.2015
Сообщений: 53

Как развернуть приложение на весь экран?

23.04.2019, 16:10. Показов 9157. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, уважаемые!
Подскажите, пожалуйста, как развернуть приложение на весь экран с помощью команды PowerShell?
Кнопками вручную знаю, как это делается -> Win + стрелка вверх .
К примеру, открыть из PowerShell Chrome с помощью & и развернуть его на весь экран?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.04.2019, 16:10
Ответы с готовыми решениями:

Как развернуть консольное приложение на весь экран
Здравствуйте! Пожалуйста подскажите каким кодом растянуть консольное приложение на весь экран(чтобы выглядело как синий экран смерти)!

Как развернуть приложение на весь экран. Обратная процедура
Есть форма, при запуске её размер 400:300. Необходимо при двойном клике по форме разворачивать во весь экран, затем при таком же двойном...

Как можно развернуть во весь экран DOS приложение подключившись к серверу приложений?
народ !! помогите, блин.. я уже кажется писал про ЭТО.. как можно развернуть во весь экран DOS приложение подключившись к серверу...

13
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
23.04.2019, 16:23
ogur,

Вот, не поверите, нашел поиском по форуму

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
function Show-Window {
  param(
    [Parameter(Mandatory=$true)]
    [ValidateNotNullOrEmpty()]
    [String]$ClassName
  )
  
  begin {
    Add-Type -AssemblyName ($a = 'System.Windows.Forms')
    
    $FindWindow = ($unm = (
      $asm = [AppDomain]::CurrentDomain.GetAssemblies() |
    Where-Object {
      $_.ManifestModule.ScopeName.Equals("$a.dll")
    }).GetType("$a.UnsafeNativeMethods")).GetMethod('FindWindow')
    $SetForegroundWindow = $unm.GetMethod('SetForegroundWindow')
    $ShowWindow = $asm.GetType(
      "$a.SafeNativeMethods"
    ).GetMethod('ShowWindow')
    
    $SW_SHOW = 3
  }
  process {
    if (($ptr = $FindWindow.Invoke(
      $null, @($ClassName, $null)
    )) -eq [IntPtr]::Zero) {
      Write-Warning "Could not find $($ClassName) window.`n"
      return
    }
  }
  end {
    [Runtime.InteropServices.HandleRef]$href = New-Object `
    Runtime.InteropServices.HandleRef((New-Object IntPtr), $ptr)
    
    [void]$SetForegroundWindow.Invoke($null, @($href))
    [void]$ShowWindow.Invoke($null, @($href, $SW_SHOW))
  }
}
 
Show-Window "Notepad"
1
0 / 0 / 0
Регистрация: 28.02.2015
Сообщений: 53
23.04.2019, 16:34  [ТС]
Ого! Спасибо, попробую!
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
23.04.2019, 16:37
ogur, В целом у хрома есть ключ для полноэкранного запуска --kiosk
В этом случае WINAPI будет не нужен.
0
0 / 0 / 0
Регистрация: 28.02.2015
Сообщений: 53
24.04.2019, 11:34  [ТС]
Цитата Сообщение от v_svitere Посмотреть сообщение
40

Show-Window "Notepad"
Сори, а как в случае с хромом правильно написать эту строку?
Show-Window "Chrome" не работает.
Можно ли в этой функции посмотреть список открытых приложений?
Я пробовал вывести [AppDomain]::CurrentDomain.GetAssemblies()
Там, на первый взгляд, хрома нет.
0
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
24.04.2019, 11:42
Лучший ответ Сообщение было отмечено YuS_2 как решение

Решение

v_svitere, при всем уважении, но для чего так изголяться то с WinAPI? Достаточно PostMessage, а дескриптор окна можно получить через Get-Process. Чтобы было понятней:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function Set-Maximized {
  [OutputType([Boolean])]
  [CmdletBinding()]
  param(
    [Parameter(Mandatory=$true)]
    [ValidateScript({!!(
      $script:ps = Get-Process -Id $_ -ErrorAction 0
    ) -and $ps.MainWindowHandle -ne [IntPtr]::Zero
    })]
    [Int32]$Id
  )
  
  process {
    (Add-Type -AssemblyName System.Windows.Forms -PassThru |
    Where-Object {$_.Name -eq 'UnsafeNativeMethods'}).GetMethod(
      'PostMessage', [Type[]](
        [Runtime.InteropServices.HandleRef], [Int32], [IntPtr], [IntPtr]
      )
    ).Invoke($null, @(
      [Runtime.InteropServices.HandleRef](
      New-Object Runtime.InteropServices.HandleRef(
        (New-Object IntPtr), $ps.MainWindowHandle
      )), 0x0112, [IntPtr]0xF030, [IntPtr]::Zero
    ))
    $ps.Dispose()
  }
}
0x0112 -> WM_SYSCOMMAND
0x7030 -> SC_MAXIMIZE


В итоге (например, PID Блокнота):
Code
1
Set-Maximized 2280
Окно будет развернуто даже если оно в фоне.

Цитата Сообщение от ogur
Я пробовал вывести [AppDomain]::CurrentDomain.GetAssemblies()
Эта команда выводит список сборок, загруженных в домен приложений хоста PowerShell.
1
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
24.04.2019, 11:43
greg zakharov,

Это ваш код)
Просто достаточно давний)
0
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
24.04.2019, 11:46
v_svitere, ну раз так, остается подосадовать на самого себя. Правда логика сценариев различается. В первом случае ищется окно и выводится поверх остальных окон, во втором - просто разворачивает окно в фоне.
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
24.04.2019, 11:50
greg zakharov,
Да, согласен.
Здесь, скорее мое упущение. Мне просто было лень переписывать)
0
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
24.04.2019, 11:57
ogur, используйте функцию Set-Maximized следующим образом:
PowerShell
1
Get-Process chrome* | Where-Object {$_.MainWindowHandle -ne [IntPtr]::Zero} | ForEach-Object {Set-Maximized -Id $_.Id}
2
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
24.04.2019, 12:03
greg zakharov,
Единственное, тут нужно уточнить, точно ли ТС нужно именно фоном максимизировать окно.
0
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
24.04.2019, 12:09
v_svitere, примерами камрад снабжен, остальное вполне можно додумать самостоятельно.
0
0 / 0 / 0
Регистрация: 28.02.2015
Сообщений: 53
24.04.2019, 12:18  [ТС]
Есть небольшая проблема в том, что тот же запущеный Хром имеет несколько PID процессов.
В моём случае 4.
И Ваша команда
PowerShell
1
Set-Maximized 2280
срабатывает (и отлично) только с последним из них, а в случае с остальными выдаёт ошибки типа:
PowerShell
1
2
3
4
5
6
7
8
9
10
Set-Maximized : Cannot validate argument on parameter 'Id'. The "!!(
      $script:ps = Get-Process -Id $_ -ErrorAction 0
    ) -and $ps.MainWindowHandle -ne [IntPtr]::Zero
    " validation script for the argument with value "4184" did not return a result of True. Determine why the validatio
n script failed, and then try the command again.
At line:1 char:1
+ Set-Maximized
+ ~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Set-Maximized], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Set-Maximized
Если можете, то подскажите , как узнать PID процесса, а в случае Chrome ещё и какой именно PID нужно подставлять в эту функцию.

Добавлено через 3 минуты
Сори, пока писал и экспериментировал - уже ответили. Сейчас проверю код.

Добавлено через 2 минуты
Код работает прекрасно. Спасибо огромное!
0
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
24.04.2019, 12:19
ogur, не все процессы хромподобных браузеров имеют окна, следовательно нужно из списка процессов хрома получить только те из них, что имеют свойство MainWindowHandle.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.04.2019, 12:19
Помогаю со студенческими работами здесь

Развернуть приложение на весь экран
Требуется развернуть приложение на весь экран с увеличением элементов. При максимизации окна, элементы остаются на своих местах, при этом...

Как паскаль развернуть на весь экран?
Как паскаль развернуть на весь экран? Не разворачивается окно!

Как развернуть TImage на весь экран
Здравствуйте, у меня программа для просмотра изображений.И мне нужно при двойном нажатии левого клика развернуть изображение на весь...

Как развернуть фрейм на ВЕСЬ экран?
Мне нужна команда в слушатель, которая при максимизации фрейма делает его полноэкранным, setUndecorated(true); Однако, мне компилятор...

Как развернуть форму на весь экран
Подскажите пожалуйста - как программно максимизировать форму? Могу программно установить произвольные размеры формы, могу узнав разрешение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru