|
|||||||
Средствами VBA пытаюсь удалить ярлык с панели быстрого запуска панели задач Windows 7
Время создания: 16.03.2019 23:43
Раздел: Разные закладки - VBA - Средства Windows
Запись: xintrea/mytetra_db_adgaver_new/master/base/1514580233w521s201sq/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
Средствами VBA пытаюсь удалить ярлык с панели быстрого запуска панели задач Windows 7. Пока не получается. Список иконок в windows 7 прописан по адресу: Однако удаление ярлыка по этому адресу и перезагрузка Проводника Windows приводит только к появлению на месте удаляемой из панели быстрого запуска иконки белого несвязанного с объектами ярлычка. В Windows 7 видимо TaskBar имеет самостоятельные методы удаления ярлыков. Где-то в интернете попался форум для C++, в котором упоминалось, что TaskBar является объектом класса Windows Shell. На данном ресурсе есть хорошая справочная статья про Shell У Microsoft в документации есть упоминания про работу с TaskBar средствами .Net Framework Знающие люди, отзовитесь, помогите решить проблему удаления ярлыка с панели задач Windows 7 Я выполняю последовательный поиск всех ярлыков "mail.ru" и удаляю их из папок где они расположены, в том числе и из папки панели задач Windows 7: Вот кусок кода FileName = Dir(Folders(i).path & "\*.lnk") Do While FileName <> "" If FileName <> "" Then FullFileName = Folders(i).path & "\" & FileName Set TextFile = FSO.getfile(FullFileName).OpenAsTextStream(1) 'Открываем файл для чтения text = TextFile.ReadAll TextFile.Close If (InStr(LCase(FileName), "mail.ru") > 0) Or (InStr(LCase(text), "mail.ru") > 0) Then DeletedCount = DeletedCount + 1'Счет удаленных объектов Form1.Text1.text = Form1.Text1.text & "- удален ярлык " & FullFileName & vbCrLf FSO.deletefile FullFileName, True End If End If FileName = Dir() Loop В Folders(i) перебираются все папки диска C: Физически удаление происходит, проверил По поводу поиска в гугле спасибо. Дело в том, что надо ещё уметь правильно составить поисковый запрос. Например запрос "VBA TaskBar icon delete" или "VBA remove taskbar icon" мне не помогли. Сделал открепление иконки приложения от панели задач следующим образом Public Function DeleteTaskbarIcon(ByVal FilePath As String, FileName As String) As Boolean 'Удаление иконки с панели быстрого запуска Windows 7
'FilePath для Windows 7 - C:\Users\ИмяПользователя\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar
'FileName - имя открепляемого ярлыка. Например Mail.Ru.lnk
'Возвращает признак успешности открепления ярлыка
Dim objShell, objFolder, colVerbs, objVerb
Dim text As String
DeleteTaskbarIcon = False ' Возвращаем False, если ярлык не закреплен на панели задач или команды на открепление в меню нет
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace(FilePath & "\")
Set colVerbs = objFolder.ParseName(FileName).verbs
For Each objVerb In colVerbs
text = LCase(Replace(objVerb.Name, "&", ""))
'Команда на открепление иконки, взятая из контекстного меню чувствительна к языку операционной системы Windows
If (InStr(text, "unpin") > 0) Or (InStr(text, "изъять") > 0) Or (InStr(text, "открепить") > 0) Then
objVerb.DoIt 'Выполняем открепление
DeleteTaskbarIcon = True 'Функция открепила иконку
End If
Next
End Function
Есть один момент. Правда функция чувствительна к языку операционной системы. В данном случае будет работать только в английской и русской версиях Windows 7 |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|