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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

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

YuS_2



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

Код:
[cmdletbinding()]
param(
    # Список на выключение можно задать в командной строке:  
    # .\script.ps1 'notepad.exe','win32calc.exe'
    # или здесь:
    [string[]]$process = ('example1.exe','win32calc.exe')
)
add-type -assembly system.windows.forms
 
function enable-watchevent {
    $query = new-object system.management.wqleventquery '__instancecreationevent', `
    (new-object timespan 0,0,1),'targetinstance isa "win32_process"'
    $processwatcher = new-object system.management.managementeventwatcher $query
    $action = {
        new-event 'powershell.processcreated' -sender $sender -eventarguments $eventargs.newevent.targetinstance
    }
    $script:name = 'watchevent'
    $script:id = 'powershell.processcreated'
    $script:job = register-objectevent -input $processwatcher -eventname `
    "eventarrived" -action $action -source $name
 
}
enable-watchevent
 
 
$form = new-object windows.forms.form
$form.autosize = $true
$form.autosizemode = [windows.forms.autosizemode]::growandshrink
$form.formborderstyle = [windows.forms.formborderstyle]::fixedtoolwindow
$form.controlbox = $false
$form.sizegripstyle = [windows.forms.sizegripstyle]::hide
$form.text = 'Продолжить слежение за процессом' + ' ' + $process + '?'
$form.showintaskbar = $false
$form.topmost = $true
$form.startposition = 'CenterScreen'
 
 
$btnyes = new-object windows.forms.button
$btnyes.text = 'Да'
$btnyes.location = new-object system.drawing.point(3,10)
$btnyes.dialogresult = [windows.forms.dialogresult]::ok
$form.controls.add($btnyes)
 
$btnno = new-object windows.forms.button
$btnno.text = 'Нет'
$btnno.location = new-object system.drawing.point(110,10)
$btnno.dialogresult = [windows.forms.dialogresult]::no
$form.controls.add($btnno)
 
do{
    wait-event $id|out-null
    if($process -contains ($a = (get-event $id).sourceargs.name)){
        write-host Запущен $a
        ps $($a -replace '\.[^\n\.]*$')|kill
        remove-event $id
        $res = $form.showdialog()
    } else {
        write-host Это не процесс из списка на выключение `((get-event $id).sourceargs.name`)
        remove-event $id
    }
 
} while ($res -ne 'No')
if(get-event $id -ea 0){remove-event $id}
get-job $job.name|remove-job -force

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 10:39 22-09-2019 | Исправлено: YuS_2, 13:21 22-09-2019
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru