|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Управление пунктами Диспетчера задач - taskmgr (перезагрузка) |
|
|
[решено] Управление пунктами Диспетчера задач - taskmgr (перезагрузка)
|
Ветеран Сообщения: 842 |
Профиль | Отправить PM | Цитировать #include <WindowsConstants.au3> #include <SendMessage.au3> #include <GuiMenu.au3> Run("taskmgr.exe") WinWait("[CLASS:#32770;REGEXPTITLE:.*Windows.*]", "", 5) $hTskMgr = WinGetHandle("[CLASS:#32770;REGEXPTITLE:.*Windows.*]") If Not WinExists($hTskMgr) Then Exit $hMenu = _GUICtrlMenu_GetMenu($hTskMgr) $hSubMenu = _GUICtrlMenu_GetItemSubMenu($hMenu, -1) ;change to 3th submenu (zero-based), now it will only show the "About" window. $iItemID = _GUICtrlMenu_GetItemID($hSubMenu, 3) ;2 = Shutdown, 3 = Restart (2 and 3 it's zero-based item from the top of menu) _SendMessage($hTskMgr, $WM_COMMAND, $iItemID, 0) Кстати, я заметил taskmgr.exe изменяет пункты меню взависимости от активных табов Постоянными являются File|Options|View| далее если активный первый таб Applications то следуют Windows|Shut Down|Help Ежели активный таб Processes второй по счёту или любой другой за ним, то пункт Windows в этой последовательности отсутствует! Список Shut Down таков: Stand By|Hibernate|Turn Off|Restart|Log Off Semiono|Lock Computer Win Key+L Я вот думаю может там специально секьюрность встроенна и автоитом не возможно перезагрузить комп? Хочу напомнить, что shutdown() у меня не работает, проблемма такая. Только работает через графич. кнопки... ... я менял номера в скрипте, хотя методом тыка, вроде не получается! |
|
------- Отправлено: 20:56, 29-01-2009 |
Пользователь Сообщения: 67
|
Профиль | Отправить PM | Цитировать |
Отправлено: 23:27, 29-01-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать Нет! Я же говорю, утилита shutdown.exe тоже вешает машину, из-за одного упрямого процесса звуковой карты, который ничем не свалить! Перезагружается только через кнопки пуск или taskmgr.
Кстати, что такое " /c " , я так же знаю есть ещё cmd.exe /k но в чём их разница? И ещё, shutdown -r -t 0 -f не совсем правильно, надо писать так -t 00 потомучто в некоторых особых случаях это может не сработать, но я не помню уж в каких... |
------- Отправлено: 00:25, 30-01-2009 | #3 |
Ветеран Сообщения: 2907
|
Профиль | Отправить PM | Цитировать Цитата semiono:
|
|
Отправлено: 00:32, 30-01-2009 | #4 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата semiono:
Тогда так: #include <WindowsConstants.au3> #include <SendMessage.au3> #include <GuiMenu.au3> Run("taskmgr.exe") WinWait("[CLASS:#32770;REGEXPTITLE:.*Windows.*]", "", 5) $hTskMgr = WinGetHandle("[CLASS:#32770;REGEXPTITLE:.*Windows.*]") If Not WinExists($hTskMgr) Then Exit 1 $nCurrentTab = ControlCommand($hTskMgr, "", "SysTabControl321", "CurrentTab") $nSubMenu_Item = 3 If $nCurrentTab = 1 Then $nSubMenu_Item += 1 $hMenu = _GUICtrlMenu_GetMenu($hTskMgr) ;Theese two is to activate the menu, strange bug, but GetItemSubMenu fails if the menu was not used (clicked) ControlSend($hTskMgr, "", $hMenu, "!_") ControlClick($hTskMgr, "", "SysTabControl321") $hSubMenu = _GUICtrlMenu_GetItemSubMenu($hMenu, $nSubMenu_Item) ;2 = Shutdown, 3 = Restart (2 and 3 it's zero-based item from the top of menu) $iItemID = _GUICtrlMenu_GetItemID($hSubMenu, 3) ConsoleWrite(_GUICtrlMenu_GetItemText($hSubMenu, $iItemID, 0)) ;_SendMessage($hTskMgr, $WM_COMMAND, $iItemID, 0) |
||
------- Отправлено: 14:14, 31-01-2009 | #5 |
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать |
------- Последний раз редактировалось semiono, 31-01-2009 в 16:50. Отправлено: 16:34, 31-01-2009 | #6 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать semiono,
Цитата:
Цитата:
|
||
------- Отправлено: 23:22, 31-01-2009 | #7 |
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать ааабалдеть!
кажись перезагружает! после того как я надеяться уже перестал. Цитата Creat0R:
Ещё такое дело, у меня система иногда плохо перезагружается, как бы со второго только нажатия. Вот сейчас работу скрипта прервал и смог остановить рестарт. Потому-что всё как бы закрылось, но диспечер завис немного. У меня так часто бывает, когда инсталлеры или ещё что либо без юзера пытаются запустить рестарт... Вообщем, я теперь думаю как бы усилить этот скрипт? Наверное подойдёт даже двукратное нажатие Shut Down, потому как я всегда так и делаю вручную. Но зато taskmgr обязательно перезагрузит в отличае от shutdown.exe с которым у меня траблы. Попробую зделать какойнибудь loop из нажатий на меню если ума хватит код осилить ~ имхо - работает! просто делаем серию комманд, хотябы три или две хотя цикл организовать было бы красивее? |
|
------- Отправлено: 00:59, 01-02-2009 | #8 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата semiono:
#include <WindowsConstants.au3> #include <SendMessage.au3> Run("taskmgr.exe") WinWait("[CLASS:#32770;REGEXPTITLE:.*Windows.*]", "", 5) $hTskMgr = WinGetHandle("[CLASS:#32770;REGEXPTITLE:.*Windows.*]") If Not WinExists($hTskMgr) Then Exit 1 ControlSend($hTskMgr, "", "", "!_") ControlClick($hTskMgr, "", "SysTabControl321") _SendMessage($hTskMgr, $WM_COMMAND, 4005, 0) |
|
------- Отправлено: 03:16, 01-02-2009 | #9 |
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать Ну вот, теперь не работает. Всмысле всё "падает", а диспетчер ждёт ещё одно "китайское предупреждение".
Причём я не вижу где здесь цикл? Одним кликом не срубишь! Мой код получше-то будет ;- или это '!_' повтор значит? но не сработало, может он в случае успешного одного клика перестаёт далее жать? |
------- Отправлено: 14:26, 01-02-2009 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - [решено] Как сделать активным пункт вызова Диспетчера задач в контекстном меню Панели задач? | iron felix | Microsoft Windows 2000/XP | 3 | 29-11-2013 07:43 | |
Разное - [решено] при открытии Диспетчера задач начинается чехарда с процессами | Konsta | Microsoft Windows Vista | 4 | 20-02-2009 16:04 | |
Службы - [решено] Запуск диспетчера задач из командной строки | hrm | Microsoft Windows 2000/XP | 2 | 26-08-2008 17:08 | |
[решено] переназначение клавиш для диспетчера задач | alexandri | Microsoft Windows 2000/XP | 5 | 27-04-2007 11:20 |
|