Iska,
Цитата Iska:
Разумеется не возымело эффекта»
|
Действительно, забыл про это, спасибо!
Скорректировал скрипт на русский вариант (лишние проверки и функции пока убрал). Получилось вот так:
pintaskbar.vbs
Код:
Dim sAction,sSMorTB,sFilePath
sAction = LCase(WScript.Arguments.Item(0))
sSMorTB = LCase(WScript.Arguments.Item(1))
sFilePath = LCase(WScript.Arguments.Item(2))
If (sAction = "pin") And (sSMorTB = "taskbar") Then PinToTaskBar sFilePath
WScript.Quit
Sub PinToTaskBar(Required_Path_To_Item)
' See
' http://blogs.technet.com/b/deploymentguys/archive/2009/04/08/pin-items-to-the-start-menu-or-windows-7-taskbar-via-script.aspx?PageIndex=3
Const CSIDL_COMMON_PROGRAMS = &H17
Const CSIDL_PROGRAMS = &H2
Dim s_oFSO, s_oShell, s_oAllUsersProgramsFolder
Dim s_oFolder, s_oFolderItem, s_colVerbs, s_oVerb
Dim s_FullItemPath, s_sItemFolder, s_sItemName, s_sAllUsersProgramsPath
Set s_oFSO = CreateObject("Scripting.FileSystemObject")
Set s_oShell = CreateObject("Shell.Application")
s_FullItemPath = Required_Path_To_Item
s_sItemFolder = s_oFSO.GetParentFolderName(s_FullItemPath)
s_sItemName = s_oFSO.GetFileName(s_FullItemPath)
Set s_oFolder = s_oShell.Namespace(s_sItemFolder)
Set s_oFolderItem = s_oFolder.ParseName(s_sItemName)
Set s_colVerbs = s_oFolderItem.Verbs
For Each s_oVerb in s_colVerbs
If Replace(s_oVerb.name, "&", "") = "Закрепить на панели задач" Then
WScript.Echo "Pinning '" & s_FullItemPath & "' to Taskbar"
s_oVerb.DoIt
End if
Next
End Sub
По-прежнему никакого эффекта, т.к. не выполняется условие
Код:
If Replace(s_oVerb.name, "&", "") = "Закрепить на панели задач"
Фразу "Закрепить на панели задач" я взял из результата выполнения скрипта
ListVerbs.vbs, взятого
отсюда. Он выдал следующее:
Цитата:
Verbs for item: C:\Program Files (x86)\Mozilla Firefox\firefox.exe
==================================================================
&Открыть
Запуск от имени &администратора
Исправл&ение неполадок совместимости
Закрепить на &панели задач
&Закрепить в меню "Пуск"
Восста&новить прежнюю версию
&Вырезать
&Копировать
Создать &ярлык
&Удалить
Переи&меновать
Сво&йства
|
Вызывал также внутри цикла
Код:
WScript.Echo s_oVerb.name
- показывало "
Закрепить на &панели задач".
Откуда там амперсанд в середине фразы мне не очень понятно, но я пробовал и с ним через просто сравнение:
Код:
If s_oVerb.name = "Закрепить на &панели задач" Then
и без него (т.е. с заменой, как в изначальном примере).
UPD: нашел в Инете такой вариант сравнения:
Код:
...
VerbName = Replace(objVerb.Name, "&", "")
If VerbName = "Закрепить программу в панели задач" Or VerbName = "Закрепить на панели задач" Or VerbName = "Pin to Taskbar" Then
objVerb.DoIt
...
Также не работает
UPD2: всё в порядке. Что-то не так с ОС, поэтому и не работало. Попробовал на чистой ОС - всё работает.