Показать полную графическую версию : завершении процессов при их запуска.
Подскажите как реализовать следующее
1. "поиск" несколько запущенных процессов ( от 3 шт). Например процесс: procexp64.exe, steam.exe, PotPlayerMini64.exe;
2. если нашли процессы то их завершение;
3. зациклить "скрипт" что бы постоянно работало.
megaloman
03-05-2022, 18:39
Вы хотели CMD ...@Echo Off
cls
:Begin
Set PgmKill="procexp64.exe" "steam.exe" "PotPlayerMini64.exe" "chrome.exe" "mspaint.exe" "calc.exe" "notepad.exe"
Set "SFind=/I"
For %%i In (%PgmKill%) Do Call Set "SFind=%%SFind%% /C:%%i"
FOR /F "usebackq delims= " %%i IN (`2^>nul TaskList ^|FindStr %SFind%`) DO TaskKill /F /IM "%%i"
>nul TimeOut /T 5
GoTo :Begin
Exit /B
Привет. А случаем не знаешь способ, закрывать процессы что в трей свёрнуты? Именно закрывать , а не убивать. Убивать мы можем. Таким как ты показал выше и другими способами. Но всё это сводится к kill . А как-бы\можно-ли WM_Close...
В общем, вопрос такой: можно ли, скриптами PS\WB\JS и др. находить окна программ свёрнутых в трей и корректно(выход) их закрывать?
megaloman
03-05-2022, 20:03
wasp14, ИМХО, корректно - только через интерфейс софта, общей панацеи, ИМХО, быть не может. Можно, наверное, думать о каждой конкретной программе и искать способ её закрать корректно, подозреваю, через AutoIt. Но я не владею ...
Такие же, примерно, ответы всегда и получал на разных форумах. Да и сам к такому же пришёл, когда почитал, что такое, эти-самые "свёрнутые в трей программы". Там и окна уних выгружаются\скрываются и вообще ГУЙ толи выгружается совсем, то-ли в ФП сбрасывается принудительно... это особый режим, что должен быть заложен кодером, т.е. вообще не просто-так это, свернуть в трей. Это не просто "икнока в трее", как делают принудительно программы типа WinRoll. Давно читал.
Благодарю за ответ.
можно ли, скриптами PS\WB\JS и др. находить окна программ свёрнутых в трей »
Да, скриптом PS можно получить информацию из трея всего одной командой.
Для этого установите модуль psClick (https://psclick.ru/GettingStarted) в PowerShell.
Запросить весь список содержимого трея:
Get-TrayInfo
Так будет выглядеть результат:
IconText IconHandle Pid IsVisible
-------- ---------- --- ---------
Bandicam 5706888 10680 True
GPU: 51C... 66340 9384 True
Сеть... 66180 6892 True
Telegram Desktop 1510712 30572 True
Безопасность Windows - Рекомендуемые действия. 131190 9056 False
Яндекс.Диск 3.2.17.4580... 196702 20184 False
Диспетчер Realtek HD 131138 6676 False
TeamViewer - 123321456 131582 10444 False
Plex Media Server 66410 10600 False
Yandex 16454274 15648 False
GIGABYTE XTREME GAMING ENGINE 68548 10400 False
Java Update Available 727034 26088 False
Настройки NVIDIA 394054 5596 False
Можно посмотреть, например, данные по температуре с иконки программы SpeedFan:
Clear-Host
# Запросить весь список содержимого трея
$tray = Get-TrayInfo
# Найти PID приложения SpeedFan
$speedFanId = (Get-Process SpeedFan).Id
# Выбрать из списка трея приложение SpeedFan
$speedFanTray = $tray|Where Pid -eq $speedFanId
# Вывести на экран текст с иконки
$speedFanTray.IconText
Результат:
GPU: 47C
CPU: 41C
Core 0: 37C
Core 1: 36C
Core 2: 34C
Core 3: 35
корректно(выход) их закрывать »
Найти в трее приложение Telegram, и "корректно" закрыть его командой Close-Window (https://psclick.ru/Close-Window) :
Clear-Host
# Запросить весь список содержимого трея
$tray = Get-TrayInfo
# Найти PID приложения Telegram
$telegramId = (Get-Process Telegram).Id
# Выбрать из списка трея приложение Telegram
$telegramTray = $tray|Where Pid -eq $telegramId
# Закрыть Telegram
Close-Window $telegramTray.IconHandle
Если какая-либо программа не будет закрываться, то добавьте усиливающие параметры команды Close-Window. У самих программ могут отличаться способы их закрытия.
Какой крутяк Fors1k !
Счас надо проверить, попробовать и наконец-то, через ~12 лет заюзать Винду как хочется :)
Вкратце: суть в том, что давно уже написал скрипт запуска нужных програм. Все они, кроме TC, заводятся(из ТС живут внутри TC живут на флешках в таком же сборе и на компе домашнем. везде одна структура папок, где ./ выступает %COMMANDER_PATH%) и "живут в трее"; это всякие punto , clipdiary, winroll и т.д. штук 8 всего. Т.с. свой набор.
И (такое редко бывает, но всё же) когда заводишь игру, хочется так же просто закрыть всё это, что ранее заводил. И вот тут приходистя по-одному их закрывать. Опережая надмозгов: дело не в памяти и не в проц.времени, дело в том что половина их, глобальные хуки клавиш делают. А играю я в шутеры или стратегии, где свои действия на эти действия.
sonny362
06-05-2022, 14:16
wasp14, у меня где-то в архивах валяется текст программы на C#, умеющей это делать (она Google Drive рестартовала). Надо?
sonny362, благодарю, даж яхз :-) Если там можно несколько, список закрыть(написана ф-ция ибо я и жабаскрипт знаю на 3+, а C# вобще никак) давай конечно(личку, архив... как удобно).
Заполучить такую прожку былоб отлично. Я б даже C# освоил, основы, чтоб доделать такую прожку. Скрипт попробую что выше предложили... мож получится то, что давно желал: простая программа, что запускает по-списку(допустим лежит рядом с ней .cfg, .ini, .list) и по этому же списку(имени процесса) закрывает программы. Запуск с параметрами -start или -close :dont-know и сё. Обычные окна можно скриптом закрывать, а вот с "треем" сложности.
Уже и винды четыре поколения сменилось, а такой проги всё нет и нет.
sonny362
06-05-2022, 15:17
wasp14,
Да там всё просто, как угол дома (на всякий случай, исходный копирайт не мой - нашёл когда-то где-то на просторах и доработал):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace StartStopGDrive
{
class Program
{
static void Main(string[] args)
{
Process[] procs = Process.GetProcesses();
foreach (Process proc in procs)
{
if (proc.ProcessName == "Google Drive")
proc.Kill();
}
Process.Start(@"C:\Program Files\Google\Drive File Stream\launch.bat");
}
}
}
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC