#NoTrayIcon #include <APIConstants.au3> #include <GUIConstantsEx.au3> #include <ListViewConstants.au3> #include <WinAPIEx.au3> ;Активная схема $sActivePowerScheme = RegRead('HKLM\SYSTEM\CurrentControlSet\Control\Power\User\PowerSchemes', 'ActivePowerScheme') ;Перевод компьютера в спящий режим $iCompToSleep = RegRead('HKLM\SYSTEM\CurrentControlSet\Control\Power\User\PowerSchemes\' & $sActivePowerScheme & '\238c9fa8-0aad-41ed-83f4-97be242c8f20\29f6c1db-86da-48c5-9fdb-f2b67b1f44da', 'ACSettingIndex') If $iCompToSleep = 0 Then Exit ;Список всех процессов $aProcessList = ProcessList() $form1 = GUICreate('Process List', 240, 340) $ListView = GUICtrlCreateListView('Имя|PID', 8, 8, 224, 300, BitOR($LVS_SINGLESEL, $LVS_SORTASCENDING)) ;Начинаем с $i = 3, чтобы убрать [System Process] и System, заодно убираем svchost.exe For $i = 3 To $aProcessList[0][0] If $aProcessList[$i][0] = 'svchost.exe' Then ContinueLoop GUICtrlCreateListViewItem($aProcessList[$i][0] & '|' & $aProcessList[$i][1], $ListView) Next $Button1 = GUICtrlCreateButton('OK', 36, 310, 80, 22) $Button2 = GUICtrlCreateButton('Отмена', 124, 310, 80, 22) ;Устанавливаем ширину по длине текста GUICtrlSendMsg($ListView, $LVM_SETCOLUMNWIDTH, 0, -1) GUISetState(@SW_SHOW) While 1 Switch GUIGetMsg() Case $Button1 $item = GUICtrlRead($ListView) ; Получить идентификатор (ID) текущего выделенного пункта ListView If $item = 0 Then MsgBox(64, 'Сообщение', 'Нет выделенных', 0, $form1) Else $text = GUICtrlRead($item, 1) ; Получить текст пункта ListView If $text == '' Then MsgBox(16, 'Ошибка', 'Ошибка при поиске инфо о пункте', 0, $form1) Else ExitLoop EndIf EndIf Case $Button2 Exit Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd $text = StringRegExpReplace($text, '^([^\|]+?\|)([0-9]{1,4})\|$', '\2', 1) _WinAPI_SetThreadExecutionState(BitOR($ES_SYSTEM_REQUIRED, $ES_CONTINUOUS)) While ProcessExists($text) Sleep(300000) WEnd _WinAPI_SetThreadExecutionState($ES_CONTINUOUS) |