Что нового

Как закрепить/открепить ярлык в панели задач Windows-7

Favorite6233

Знающий
Сообщения
21
Репутация
5
Приветствую сообщество. После достаточно долгих лазаний по инету я нашёл всё таки способ, как программно закрепить нужную программу в панели задач Windows-7. Эту операцию можно сделать по правой кнопке мыши, но данный скрипт предназначен для того, чтобы автоматизировать процесс. Инсталлируете вы, например, программу, и хотите, чтобы её ярлык размещался в панели задач, и чтобы это происходило автоматически. Данный скрипт поможет это сделать.

Этот способ был реализован на VBS, я его переделал на AutoIt и оформил в удобное использование.

Работает на русскоязычной версии Windows-7. На англоязычной не пробовал. Но, если нужно под другой язык, то скрипт нужно совсем немного переделать: просто добавить проверку на нужный язык.

Код:
Func Pin_To_Taskbar($StrPath)
	; Закрепляет программу в панели задач Windows 7
	; Всё делается так, как если бы на файле была нажата правая кнопка мыши и выбран соответствующий пункт. Если текст в меню будет отличаться от того, что здесь в скрипте,
	; то работать не будет, потому что нужно будет добавить сюда запись. Это значит, что для другого языка или если при каком-либо обновлении переименуют этот пункт, то скрипт
	; работать не будет, пока его не исправить.
	;
	; $StrPath - Это полный путь к файлу, ярлык от которого нужно поместить в панель задач. Если файл не может быть помещён в панель задач, то есть если по ПКМ на нём нет такого
	;            пункта, то ничего делаться не будет. Будет только соответствующая запись в лог-файле.
	; При выходе возвращает:
	;  1 - если программа закрепилась,
	;  2 - если открепилась,
	;  0 - если ни то, ни другое.

;~ $StrPath = "C:\Program Files (x86)\The KMPlayer\KMPlayer.exe"
	If @OSVersion = "WIN_7" Or @OSVersion = "WIN_8" Then
		Local $objShell = ObjCreate("Shell.Application")
		Local $filesystem = ObjCreate("scripting.Filesystemobject")
		Local $objFolder = $objShell.Namespace($filesystem.GetParentFolderName($StrPath))
		Local $objFolderItem = $objFolder.ParseName($filesystem.GetFileName($StrPath))
		Local $colVerbs = $objFolderItem.Verbs
		Local $VerbName
		For $objVerb In $colVerbs
			$VerbName = StringReplace($objVerb.name, "&", "")
			If $VerbName = "Закрепить программу в панели задач" Or _
					$VerbName = "Закрепить на панели задач" Or _
					$VerbName = "Pin to Taskbar" Then
				$objVerb.DoIt
				Logging("Программа " & $StrPath & " закреплена в панели задач успешно.")
				Return 1
			ElseIf $VerbName = "Изъять программу из панели задач" Or _
					$VerbName = "Открепить от панели задач" Or _
					$VerbName = "Unpin from Taskbar" Then
				$objVerb.DoIt
				Logging("Программа " & $StrPath & " успешно открепилась от панели задач.")
				Return 2
			EndIf
		Next
		Logging("Не удалось программу " & $StrPath & " закрепить в панели задач.")
		Return 0
	Else
		Logging("В данной операционной системе не могу закрепить ярлык в панели задач.")
	EndIf
EndFunc   ;==>Pin_To_Taskbar


Строчки Logging можно просто удалить. У меня отдельная функция делает лог-файл. В данном случае это не принципиально.
 
Верх