Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   завершении процессов при их запуска. (http://forum.oszone.net/showthread.php?t=351139)

NekRo0N 03-05-2022 09:43 2984310

завершении процессов при их запуска.
 
Подскажите как реализовать следующее
1. "поиск" несколько запущенных процессов ( от 3 шт). Например процесс: procexp64.exe, steam.exe, PotPlayerMini64.exe;
2. если нашли процессы то их завершение;
3. зациклить "скрипт" что бы постоянно работало.

megaloman 03-05-2022 18:39 2984368

Вы хотели 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


wasp14 03-05-2022 19:27 2984370

megaloman

Привет. А случаем не знаешь способ, закрывать процессы что в трей свёрнуты? Именно закрывать , а не убивать. Убивать мы можем. Таким как ты показал выше и другими способами. Но всё это сводится к kill . А как-бы\можно-ли WM_Close...
В общем, вопрос такой: можно ли, скриптами PS\WB\JS и др. находить окна программ свёрнутых в трей и корректно(выход) их закрывать?

megaloman 03-05-2022 20:03 2984373

wasp14, ИМХО, корректно - только через интерфейс софта, общей панацеи, ИМХО, быть не может. Можно, наверное, думать о каждой конкретной программе и искать способ её закрать корректно, подозреваю, через AutoIt. Но я не владею ...

wasp14 03-05-2022 20:16 2984376

Такие же, примерно, ответы всегда и получал на разных форумах. Да и сам к такому же пришёл, когда почитал, что такое, эти-самые "свёрнутые в трей программы". Там и окна уних выгружаются\скрываются и вообще ГУЙ толи выгружается совсем, то-ли в ФП сбрасывается принудительно... это особый режим, что должен быть заложен кодером, т.е. вообще не просто-так это, свернуть в трей. Это не просто "икнока в трее", как делают принудительно программы типа WinRoll. Давно читал.
Благодарю за ответ.

Fors1k 05-05-2022 18:25 2984478

Цитата:

Цитата wasp14
можно ли, скриптами PS\WB\JS и др. находить окна программ свёрнутых в трей »

Да, скриптом PS можно получить информацию из трея всего одной командой.
Для этого установите модуль psClick в 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

Цитата:

Цитата wasp14
корректно(выход) их закрывать »

Найти в трее приложение Telegram, и "корректно" закрыть его командой 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. У самих программ могут отличаться способы их закрытия.

wasp14 06-05-2022 14:07 2984554

Какой крутяк Fors1k !
Счас надо проверить, попробовать и наконец-то, через ~12 лет заюзать Винду как хочется :)
Вкратце: суть в том, что давно уже написал скрипт запуска нужных програм. Все они, кроме TC, заводятся(из ТС живут внутри TC живут на флешках в таком же сборе и на компе домашнем. везде одна структура папок, где ./ выступает %COMMANDER_PATH%) и "живут в трее"; это всякие punto , clipdiary, winroll и т.д. штук 8 всего. Т.с. свой набор.

И (такое редко бывает, но всё же) когда заводишь игру, хочется так же просто закрыть всё это, что ранее заводил. И вот тут приходистя по-одному их закрывать. Опережая надмозгов: дело не в памяти и не в проц.времени, дело в том что половина их, глобальные хуки клавиш делают. А играю я в шутеры или стратегии, где свои действия на эти действия.

sonny362 06-05-2022 14:16 2984556

wasp14, у меня где-то в архивах валяется текст программы на C#, умеющей это делать (она Google Drive рестартовала). Надо?

wasp14 06-05-2022 14:38 2984558

sonny362, благодарю, даж яхз :-) Если там можно несколько, список закрыть(написана ф-ция ибо я и жабаскрипт знаю на 3+, а C# вобще никак) давай конечно(личку, архив... как удобно).
Заполучить такую прожку былоб отлично. Я б даже C# освоил, основы, чтоб доделать такую прожку. Скрипт попробую что выше предложили... мож получится то, что давно желал: простая программа, что запускает по-списку(допустим лежит рядом с ней .cfg, .ini, .list) и по этому же списку(имени процесса) закрывает программы. Запуск с параметрами -start или -close :dont-know и сё. Обычные окна можно скриптом закрывать, а вот с "треем" сложности.
Уже и винды четыре поколения сменилось, а такой проги всё нет и нет.

sonny362 06-05-2022 15:17 2984562

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");
}
}
}


Время: 23:48.

Время: 23:48.
© OSzone.net 2001-