Что нового

Скрипт на удаление файла/ярлыка

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
Medic84
У меня это спотыкается на .Verbs:
Test.au3 (4) : ==> The requested action with this object has failed.:
$objVerbs = $objFolderItem.Verbs
$objVerbs = $objFolderItem.Verbs^ ERROR
:scratch:


Добавлено:
Сообщение автоматически объединено:

Мда, это проявляется если программу закрепить нельзя, т.е если она находится например, на рабочем столе.

Вот что у меня получилось из этого слепить:

Код:
_FilePinShortcutToTaskbar(@StartMenuCommonDir & "\Programs\Accessories\Paint.lnk")

Func _FilePinShortcutToTaskbar($sFile, $bPin = Default)
	Local $sFileDir, $sFileName, $oShell, $oFolder, $oFolderItem, $oVerbs, $sVNames, $sVNames_Toggle, $sVNames_Pin, $sVNames_UnPin
	
	If Not FileExists($sFile) Then Return SetError(-1)
	
	$sFileDir = StringRegExpReplace($sFile, "\\[^\\]*$", "")
	$sFileName = StringRegExpReplace($sFile, "^.*\\", "")
	
	$oShell = ObjCreate("Shell.Application")
	
	$oFolder = $oShell.Namespace($sFileDir)
	$oFolderItem = $oFolder.ParseName($sFileName)
	$oVerbs = $oFolderItem.Verbs
	
	$sVNames_Toggle = "|Pin to Taskbar|Unpin from Taskbar|Закрепить программу в панели задач|Изъять программу из панели задач|Закрепить на панели задач|Открепить от панели задач|"
	$sVNames_Pin = "|Pin to Taskbar|Закрепить программу в панели задач|Закрепить на панели задач|"
	$sVNames_UnPin = "|Unpin from Taskbar|Изъять программу из панели задач|Открепить от панели задач|"
	
	If (IsKeyword($bPin) And $bPin = Default) Or (IsNumber($bPin) And $bPin = -1) Then
		$sVNames = $sVNames_Toggle
	ElseIf $bPin = True Then
		$sVNames = $sVNames_Pin
	ElseIf $bPin = False Then
		$sVNames = $sVNames_UnPin
	Else
		Return SetError(1)
	EndIf
	
	For $oVerb In $oVerbs
		If StringInStr($sVNames, "|" & StringReplace($oVerb.Name, "&", "") & "|") Then
			$oVerb.DoIt
			ExitLoop
		EndIf
	Next
EndFunc
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
CreatoR [?]
Мда, это проявляется если программу закрепить нельзя, т.е если она находится например, на рабочем столе
может я не так понял. но я использовал скрипт, какой указан в моем последнем сообщении. даже если экзешник ( то есть программа) находится на рабочем столе, то все равно срабатывает. появляется в панели быстрого запуска. при повторном запуске - удаляется. так же и с ярлыками с рабочего стола.
 

sov44

Новичок
Сообщения
22
Репутация
0
Подскажите, можно ли сделать пакетное изъятие пронграмм из панели быстрого запуска по аналогии с функцией Call: командной строки?
Ярлыки: Проводник.lnk, Internet Explorer.lnk, Проигрыватель Window Media.lnk
Путь: @AppDataDir & "\Microsoft\Internet Explorer\Quick Launch\User Pinned\
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
Александр [?]
я использовал скрипт, какой указан в моем последнем сообщении
В нём нет принципиального отличия от других в плане COM-объектов.

В любом случае, это моя ошибка, я проверял на не существующем файле (вернее это был ярлык интернета, а я его принял за локальный ярлык).

Нужно тогда добавлять проверку на существование файла, поправил свой предыдущий пост.
 

AZJIO

Меценат
Меценат
Сообщения
2,892
Репутация
1,196
sov44
Я уже не помню, проверять надо, у меня сохранено такие конфиги:
Код:
REGEDIT4

; Удалить с панели задач все ярлыки
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband]
"Favorites"=hex:ff
"FavoritesResolve"=-
И удаление
Код:
AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\StartMenu\*
AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\*
 

sov44

Новичок
Сообщения
22
Репутация
0
AZJIO, код отработал. Спасибо, это именно то, что я и искал. На досуге переведу в AutoIt. :smile:
 

SharkyEXE

Новичок
Сообщения
134
Репутация
0
Всем здравствуйте.

В этой теме был выложен код перейти

Пожалуйста, я очень прошу, измените код, чтобы при запуске кода "изъять все-все ярлыки",

Спасибо.
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Пожалуйста, я очень прошу, измените код, чтобы при запуске кода "изъять все-все ярлыки"
Код:
$sDirPath = @AppDataDir & "\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar"

$objShell = ObjCreate("Shell.Application")
$colItems =  $objShell.Namespace($sDirPath).Items

For $colItem In $colItems
    $colVerbs = $colItem.Verbs

    For $objVerb in $colVerbs
        $str = StringReplace($objVerb.name, "&", "")
        If  $str = "Unpin from Taskbar" or  $str = "Изъять программу из панели задач" or $str = "Открепить от панели задач" Then $objVerb.DoIt
    Next
Next
 
Верх