Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows
Стороннее ПО использовать только в виде готового решения

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242

Открыть новую тему     Написать ответ в эту тему

KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Старые и смежные темы: по CMD и в Программах | по PowerShell | В помощь системному администратору | Прикладное программирование

PowerShell
Версии | Ассоциация и подпись сценариев
 
Сценарий для ассоциации файлов PowerShell и запуска неподписанных скриптов.
Как запустить Pwsh старше 7.2.24 под Windows 7.
 
Прочее
Расширение возможностей
Функции
Write-Color
Output-DebugString
Провайдеры
Готовые скрипты
Полезные ссылки | Будет ли репозиторий PowerShell на ru-board?
Книги в PDF
Cheat Sheets
 

Cmd
Для перекодирования кириллицы 866<—>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы
 
Готовые решения и частые вопросы
 
Описания работы команд и символов участниками темы:
setlocal enabledelayedexpansion и переменные окружения
символы & и && в командной строке
Переменная %0
 
Полезные ссылки и утилиты

WSH (VBScript, JScript)
Программирование "удобняшек" на VBScript

Примечания:
• Большие куски кода заключайте в тэг [ more ]
• Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте код без пробелов иначе сценарий может работать неправильно. Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
• Сторонние консольные утилиты можно использовать только в виде готового решения и только в рамках сценариев. Никаких обсуждений и обучений работе с утилитами не предусмотрено и прямо запрещено правилами топика.
Шапка и около-темные вопросы

Всего записей: 11856 | Зарегистр. 12-10-2001 | Отправлено: 13:40 17-02-2018 | Исправлено: KLASS, 08:31 18-08-2025
LZAA

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
по полному совпадению заголовка окна, но не сей момент

     Меня это устраивает. Пока буду пользоваться тем, что есть.
     Нескромная просьба.
     Я эту тему читаю редко, по-случаю, как сейчас. Если когда-нибудь Вы 'допишите' 'TaskbarButtonHider', то дайте, пожалуйста, если не трудно мне об этом знать (PM).
 
   




По вежливей, вам отвечают. Докладывать в ПМ - это вряд ли. Дальше говорить здесь что-то про уже сказанное не надо - выключу. Другой раз с подобными просьбами обращайтесь к челу в личку. Здесь это - междусобойчик и никакого отношения к теме.

Всего записей: 2735 | Зарегистр. 09-01-2010 | Отправлено: 19:07 18-01-2026 | Исправлено: KLASS, 19:59 18-01-2026
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LZAA

Цитата:
Нескромная просьба.

Я бы сказал хамская

Цитата:
Я эту тему читаю редко

читайте чаще, подпиcкой пользуйтесь…
организуйте своё время самостоятельно.

Всего записей: 3854 | Зарегистр. 16-08-2012 | Отправлено: 19:30 18-01-2026
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Скрипт для скрытия/показа окон. Работает не со всеми типами окон (например консольные, кто подскажет как и с ними работать?).
Проверял на msedge, notepad++ и doublecmd.exe — работает.
winws (запрет) — не работает.
 
ManageVisibleWindows.ps1
 
Как это работает
 
Скрытие (по умолчанию)

Код:
.\ManageVisibleWindows.ps1 notepad

Ищутся PID (ид процесса) согласно указанному имени процесса, затем по этим PID ищутся окна не имеющие владельца (главные окна) и видимые (без учета виртуальных рабочих столов), затем присваивается тег окну (произвольный на самом деле, главное при восстановлении его же указать, если вдруг менять будете тег) и наконец скрывается окно.
 
Восстановление видимости

Код:
.\ManageVisibleWindows.ps1 notepad -show

Ищутся PID (ид процесса) согласно указанному имени процесса, затем по этим PID ищутся окна, затем среди найденных окон ищутся окна с ранее установленным тегом, этим окнам посылаем команду show, для показа окна и удаляем тег.
 


----------
RuBoard — Внешний вид

Всего записей: 3854 | Зарегистр. 16-08-2012 | Отправлено: 22:19 18-01-2026 | Исправлено: iNNOKENTIY21, 23:13 18-01-2026
gntix



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21

Цитата:
например консольные, кто подскажет как и с ними работать


Код:
[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();
 
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
 
const int SW_HIDE = 0;
const int SW_SHOW = 5;

Невозбранно скопипащено отсюда

Всего записей: 808 | Зарегистр. 07-12-2004 | Отправлено: 00:59 19-01-2026
virjokk



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Цитата:
Естественным продолжением идеи был бы Create-TrayIcon.ps1 - создание иконки в трее для программы, работающей только в комстроке, с менюшкой для простейших действий

Цитата:
Ну для скрипта это уж не очень естественная задача  скрипт нельзя будет закрывать, что бы иконка не пропала
Так это не проблема, если программа запускается скриптом, тогда закрытие скрипта это и есть закрытие программы, и соответственно, убирание иконки
Цитата:
Поподробнее, я не знаю, какие простейшие действия, общие для всех, можно было бы сделать
Например, "Закрыть программу", "Перезапустить", "Перезапустить с другими параметрами" - актуально для консольных программ
Цитата:
Почему только для консольных программ (работающих в комстроке)?
У программ с гуи-интерфейсом и без иконки в трее хватает способов управления, опять же у некоторых есть и своя иконка там. Кроме того, для консольных программ иконка в трее покажет сам факт их запуска даже без доп. функционала по ПКМ или ЛКМ. Прежде всего такое интересно для консольных программ, единожды запущенных и далее работающих постоянно, типа прокси-серверов, но иногда актуально и для разово запускаемых в скриптах и при этом долго работающих, напр. robocopy в скрипте резервного копирования переносит куда-то большой каталог - иконка аккуратно покажет, что трудится в данный момент именно эта утилита. Иконку, конечно, пользователь заранее готовит сам и указывает путь к ней
Цитата:
Это хз, возьмусь ли. Если только очень скучно станет
Ваши последние скрипты (и не только последние) весьма хороши и полезны, а скука - двигатель прогресса
 
 

Всего записей: 554 | Зарегистр. 19-05-2006 | Отправлено: 10:32 19-01-2026 | Исправлено: virjokk, 12:15 19-01-2026
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
winws (запрет) — не работает.

работает, если не забывать для программ работающих от админа, запускать скрипт от админа. Но с консольными, таки не со всеми.
 
gntix
Это не то. Проблема найти нужное окно. Способ поиска окна.
Можно вывести список окон, которые на панели задач и пользователь сам пусть выбирает. Но это интерактивно, не для сценариев.
 
virjokk
Понятно. Сценарии использования найти можно
Только это все же не скриптовые функции, скорее всего без WinForms не обойтись. А я, не очень люблю писать GUI в PowerShell.
 
Для примера, просто обратный отсчёт в трее, PowerShell v5-не старше: TrayCountdown.ps1

Всего записей: 3854 | Зарегистр. 16-08-2012 | Отправлено: 19:51 19-01-2026
virjokk



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Цитата:
без WinForms не обойтись
Таки да, но простейшая менюшка без вложенности...
Цитата:
Для примера, просто обратный отсчёт в трее
Чудесно! Вывел температуру воздуха в трей
 
 

Всего записей: 554 | Зарегистр. 19-05-2006 | Отправлено: 20:33 19-01-2026 | Исправлено: virjokk, 20:33 19-01-2026
gntix



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21

Цитата:
Проблема найти нужное окно. Способ поиска окна.

Для каждого полученного PID вызывать AttachConsole и проверять её результат. Если результат нулевой, значит процесс с этим PID - консольный и можно вызывать GetConsoleWindow с ShowWindow (в конце манипуляций не забываем вызвать DetachConsole, иначе может поплохеть). Если вызов AttachConsole завершился ненулевым результатом, то вызываем GetLastError и анализируем её выхлоп: ошибка прав доступа, процесс с данным PID  запущен в качестве сервиса, или он с GUI (что можно передать далее для манипуляций).
По мне, – такой инструмент вообще нужно писать на голом C# (благо его консольный компилятор есть в каждом утюге компьютере, где установлен .Net Framework), а не извращаться с Powershell, – все равно ведь приходится вызывать WinAPI, а не командлеты.

Всего записей: 808 | Зарегистр. 07-12-2004 | Отправлено: 01:38 21-01-2026 | Исправлено: gntix, 01:39 21-01-2026
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да! Если среди пользователей встречаются настолько адекватные, что  
 
   "...Иконку, конечно, пользователь заранее готовит сам и указывает путь к ней"  
 
- такие смогут и C# исходником воспользоваться внутри своей уникальной логики, как в случае с температурой воздуха.
 
 
Таким и посильная помощь впрок - потому, что не во всех областях все достаточно самостоятельны. Возможно, отблагодарят иконкой )






Разговоры ни о чем. Покури, тебе не привыкать, подмастерье ты наше.

Всего записей: 18469 | Зарегистр. 14-10-2001 | Отправлено: 09:26 21-01-2026 | Исправлено: KLASS, 11:35 21-01-2026
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Строк кода — много, очень много … поэтому облако.
 
WinMgr
 
    • WinMgr — модуль с функциями
    • TrayIcon — скрипт использующий модуль, иконка в трее с числом окон на панели задач и меню по ПКМ
 
Функции в модуле для скриптов. Скрипт TrayIcon для интерактива. Для TrayIcon строго требуется PowerShell v5.1, для модуля не строго.
 
Если запускать в PowerShell через Start-Process. то консоль можно будет закрывать, иконка в трее останется.  

Код:
Start-Process powershell -WindowStyle Hidden -ArgumentList "-ExecutionPolicy Bypass", "-File", 'К:\Папке с модулем путь\Winmgr\TrayIcon.ps1'

 
Окнам присваиваются метки, и затем ищутся эти метки, поэтому иконку в трее можно перезапускать, окна с меткой найдёт, если они всё ещё открыты и скрыты. Чтобы показать окно, его надо сперва скрыть.
 


----------
RuBoard — Внешний вид

Всего записей: 3854 | Зарегистр. 16-08-2012 | Отправлено: 10:31 02-02-2026 | Исправлено: iNNOKENTIY21, 10:50 02-02-2026
virjokk



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
В TrayIcon.ps1 где-то скобка лишняя или не хватает, ошибками сыплет, если просто стартовать:
Код:
powershell.exe -nologo -ExecutionPolicy Bypass -f "path\TrayIcon.ps1"

Всего записей: 554 | Зарегистр. 19-05-2006 | Отправлено: 11:07 02-02-2026
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
virjokk

Цитата:
В TrayIcon.ps1 где-то скобка лишняя или не хватает, ошибками сыплет, если просто стартовать:

Текст первой ошибки бы. И подробнее как запускается (Терминал PowerShell или из CMD).

Всего записей: 3854 | Зарегистр. 16-08-2012 | Отправлено: 12:38 02-02-2026
virjokk



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Цитата:
Текст первой ошибки бы. И подробнее как запускается (Терминал PowerShell или из CMD).
Запускаю из CMD. Точнее - FAR+ConEmu, Win10 21H2. Ассоциация на ps1 сделана скриптом из шапки. Ошибки такие

Всего записей: 554 | Зарегистр. 19-05-2006 | Отправлено: 13:36 02-02-2026 | Исправлено: virjokk, 13:38 02-02-2026
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
virjokk

Цитата:
Ошибки такие

Файлы в виндовую кодировку конвертнуть.
 
з.ы.
А лучше/универсальнее UTF-8 с BOM. Обновил в облаке.

Всего записей: 3854 | Зарегистр. 16-08-2012 | Отправлено: 14:06 02-02-2026 | Исправлено: iNNOKENTIY21, 09:52 03-02-2026
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обновил в облаке
 
Ссылка та же: WinMgr
 
В WinMgr.psm1 добавились функции:
 
• Set-WindowTransparency (Прозрачность окна)
    -hWnd — Идентификатор окна
    -ProcessName — Имя процесса (eq), без расширения
    -WindowTitle — Заголовок окна (match)
    -Transparent = 220 — от 0-прозрачно до 255-непрозрачно
 
 
• Set-WindowColorKey (Прозрачность указанного цвета)
    -hWnd — Идентификатор окна
    -ProcessName — Имя процесса (eq), без расширения
    -WindowTitle — Заголовок окна (match)
    -RGB = @(0, 0, 0) — Цвет станет прозрачным
 
• Set-WindowBackdrop (Windows 11 …акрил)
    -hWnd — Идентификатор окна
    -ProcessName — Имя процесса (eq), без расширения
    -WindowTitle — Заголовок окна (match)
    -BackdropType = 'DWMSBT_MAINWINDOW' — Тип изменения фона
 
• Set-WindowDarkMode (Включает для окна тёмный режим, для старых окон заколовок в чёрный)
    -hWnd — Идентификатор окна
    -ProcessName — Имя процесса (eq), без расширения
    -WindowTitle — Заголовок окна (match)
    -Disable — Отключение тёмного режима окна
 
• Set-WindowNormal (Сброс некоторых стилей окна, эффектов, не всех)
    -hWnd — Идентификатор окна
    -ProcessName — Имя процесса (eq), без расширения
    -WindowTitle — Заголовок окна (match)
 
• Set-WindowEffect (Установка эффектов окна)
    -hWnd — Идентификатор окна
    -ProcessName — Имя процесса (eq), без расширения
    -WindowTitle — Заголовок окна (match)
    -AccentState = 'ACCENT_ENABLE_BLURBEHIND' — По умолчанию, старый, добрый blur со времен windows 7
 
MinimizeToTray (Скрывает окно и отображает его иконку в трее)
    -WindowHandle — Идентификатор окна
 
Добавлены файлы:
 
• WinMgr.md (Структура вызовов для функций в WinMgr модуле)
 
• MinimizeToTray.ps1 (Самостоятельный скрипт)
    Должен работать и в PowerShell редакции core, в отличии от TrayIcon.ps1.
 


----------
RuBoard — Внешний вид

Всего записей: 3854 | Зарегистр. 16-08-2012 | Отправлено: 09:57 08-02-2026
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сделал из того что выше либу и скрипты-примеры https://yadi.sk/d/h5Cs80Cjpb7Edg .
Делалось ради: Sample.WorkSpace.ps1 (перед запуском нужно ОБЯЗАТЕЛЬНО отредактировать под свои нужды)
Запуск программ с нужным размеров, положением, эффектами.
 
Что делает конкретный скрипт — отвечает ИИ на примере Set-WindowEffect.ps1
ИИ забыл написать, что эффекты применяются не ко всем окнам, не применяется к UWP и к белым. К тёмным, обычным окнам — применяется.
 
Проверялось на Windows 11.


----------
RuBoard — Внешний вид

Всего записей: 3854 | Зарегистр. 16-08-2012 | Отправлено: 17:56 03-03-2026
virjokk



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Ну что сказать, супер! Даже унылый фар заиграл новыми красками

 
Ресурсы (процессор, память) расходуются ощутимо, конечно, но у меня ноут очень старый, на нормальном компе должно все норм

Всего записей: 554 | Зарегистр. 19-05-2006 | Отправлено: 18:27 03-03-2026 | Исправлено: virjokk, 18:32 03-03-2026
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
 
Там по соседству, часом, нету функций для раскидать окна по рабочим столам и-или мониторам?

Всего записей: 18469 | Зарегистр. 14-10-2001 | Отправлено: 20:52 03-03-2026
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
virjokk
Цитата:
Ну что сказать, супер!


Цитата:
Ресурсы (процессор, память) расходуются ощутимо

Скрипт только включает опцию эффект и всё, скрипт можно закрывать, он не ест ресурсы.
Сам эффект расходует? Это я не исправлю.
 
 
Добавлено:
LevT

Цитата:
Там по соседству, часом, нету функций для раскидать окна по рабочим столам и-или мониторам?

У меня один монитор, увы. Придётся самому.
 
Там в Sample.WorkSpace.ps1 есть функция

Код:
# Функция для получения информации о дисплеях
function Get-AllScreens {
    if (-not ('System.Windows.Forms.Screen' -as [type])) {
        Add-Type -AssemblyName 'System.Windows.Forms'
    }
 
    [System.Windows.Forms.Screen]::AllScreens
}

По идее должна показать рабочие области. Второй дисплей может быть и с отрицательными началами координат, скорее всего он тогда слева. Задать окну положение слева/сверху соответствующее, через Set-WindowPosition.ps1

Всего записей: 3854 | Зарегистр. 16-08-2012 | Отправлено: 21:06 03-03-2026
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
 
Про дисплеи понятно, благодарю - но десктопы есть у всех в количествах.
Я тоже ими толком не пользуюсь; пришёл к выводу что надо себя заставлять уже.

Всего записей: 18469 | Зарегистр. 14-10-2001 | Отправлено: 01:16 04-03-2026
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.B0ard 2000-2026

LiteCoin: LgY72v35StJhV2xbt8CpxbQ9gFY6jwZ67r

Рейтинг.ru