Что нового

Скрипт\прога автоскрытия Панели задач при загрузке Windows на основе Nircmd.exe

amorphyc

Новичок
Сообщения
45
Репутация
0
Версия AutoIt: 3.3.10.2

Описание:
Здравствуйте, уважаемые мастера и знатоки! Есть известная утилита Nircmd.exe , с помощью нее через Меню Пуск -> Выполнить , можно скрыть/восстановить панель задач с Рабочего стола чтоб не мешала/ не портила вид. Команду можно отправлять через "Выполнить", а можно файлом сценария .cmd , вот так она выглядит:
nircmd.exe win hide class "Shell_TrayWnd" - скрывает панель
nircmd.exe win show class "Shell_TrayWnd" -возвращает обратно.
Так вот вопрос - А возможно ли скомпоновать все это вместе в один скрипт/прогу (сам nircmd.exe и два файла .cmd для скрытия и показа) , или как-то прямо из скрипта отправлять эти значения, но чтоб при каждом запуске скрипт менял значения. Первый запуск - скрыть панель, второй - показать, и так далее. Во вложении - сама утилита и образцы команд.


Примечания:
 

Вложения

  • nircmd.rar
    31.1 КБ · Просмотры: 11

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
где то на форуме нашел
Код:
$hTrayWnd = WinGetHandle('[Class:Shell_TrayWnd]')
$hStartWnd = WinGetHandle('[Class:Button]')
WinSetState($hTrayWnd,'', @SW_HIDE);скрывает панель задач
WinSetState($hStartWnd ,'', @SW_HIDE);скрывает кнопку Пуск
Sleep(5000)
WinSetState($hTrayWnd,'', @SW_SHOW)
WinSetState($hStartWnd ,'', @SW_SHOW)

происходит полное скрытие. то есть при наведении мышки панель не появляется
при этом окно не разворачивается на всю видимую область экрана. впрочем, как и при работе nircmd
чтобы иметь возможность разворачивать окно на всю область экрана можно сделать так

Код:
#Include <APIConstants.au3>
#include <WinAPIMisc.au3>; autoit 3.3.10.2

$hTrayWnd = WinGetHandle('[Class:Shell_TrayWnd]')
$hStartWnd = WinGetHandle('[Class:Button]')
$winstate = WinGetState($hTrayWnd)
Switch $winstate
	Case 7
		WinSetState($hTrayWnd, '', @SW_HIDE)
		WinSetState($hStartWnd, '', @SW_HIDE)
		$tRect = _WinAPI_CreateRect(0, 0, @DesktopWidth, @DesktopHeight)
		DllCall('user32.dll', 'int', 'SystemParametersInfo', 'uint', $SPI_SETWORKAREA, 'uint', 0, 'ptr', DllStructGetPtr($tRect), 'uint', 0)
	Case 5
		WinSetState($hTrayWnd, '', @SW_SHOW)
		WinSetState($hStartWnd, '', @SW_SHOW)
EndSwitch

при запуске будет определятся состояние панели задач - либо восстановить ее либо скрыть. как ты и хотел
 
Автор
A

amorphyc

Новичок
Сообщения
45
Репутация
0
joiner сказал(а):
где то на форуме нашел
Код:
$hTrayWnd = WinGetHandle('[Class:Shell_TrayWnd]')
$hStartWnd = WinGetHandle('[Class:Button]')
WinSetState($hTrayWnd,'', @SW_HIDE);скрывает панель задач
WinSetState($hStartWnd ,'', @SW_HIDE);скрывает кнопку Пуск
Sleep(5000)
WinSetState($hTrayWnd,'', @SW_SHOW)
WinSetState($hStartWnd ,'', @SW_SHOW)

происходит полное скрытие. то есть при наведении мышки панель не появляется
при этом окно не разворачивается на всю видимую область экрана. впрочем, как и при работе nircmd
чтобы иметь возможность разворачивать окно на всю область экрана можно сделать так

Код:
#Include <APIConstants.au3>
#include <WinAPIMisc.au3>; autoit 3.3.10.2

$hTrayWnd = WinGetHandle('[Class:Shell_TrayWnd]')
$hStartWnd = WinGetHandle('[Class:Button]')
$winstate = WinGetState($hTrayWnd)
Switch $winstate
	Case 7
		WinSetState($hTrayWnd, '', @SW_HIDE)
		WinSetState($hStartWnd, '', @SW_HIDE)
		$tRect = _WinAPI_CreateRect(0, 0, @DesktopWidth, @DesktopHeight)
		DllCall('user32.dll', 'int', 'SystemParametersInfo', 'uint', $SPI_SETWORKAREA, 'uint', 0, 'ptr', DllStructGetPtr($tRect), 'uint', 0)
	Case 5
		WinSetState($hTrayWnd, '', @SW_SHOW)
		WinSetState($hStartWnd, '', @SW_SHOW)
EndSwitch

при запуске будет определятся состояние панели задач - либо восстановить ее либо скрыть. как ты и хотел

ООО! Вот этот вариант вообще огонь! Как раз то что нужно! :laugh: А можно его научить при загрузке Windows автоматически скрывать, чтоб в Автозагрузку поставить? :IL_AutoIt_1:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
amorphyc,
Предупреждение За нарушение общих правил (пункт В.2):
Старайтесь избегать “Over quoting” (преувеличенное цитирование) - цитируйте только необходимую часть сообщения, которая наилучшим образом подчеркнёт суть цитируемого.


С уважением, ваш Глобальный модератор.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
amorphyc [?]
А можно его научить при загрузке Windows автоматически скрывать, чтоб в Автозагрузку поставить?
добавь в начало кода
Код:
WinWait('[Class:Shell_TrayWnd]')

собери в .exe-файл и закинь его в папку Автозагрузка
 
Автор
A

amorphyc

Новичок
Сообщения
45
Репутация
0
joiner сказал(а):
собери в .exe-файл и закинь его в папку Автозагрузка
:laugh: Это колдовство какое-то! :beer: Это даже лучше, чем я предсттавлял! Спасибо огромное!
 
Верх