|
发表于 2022-11-25 16:05:48
|
显示全部楼层
参考下转自AU3论坛的例子:
- ;例子:添加计算器程序
- _ShellExecute_TaskBarBtnAdd(@SystemDir & '\calc.exe', '我的计算器')
- If [url=home.php?mod=space&uid=1261]@error[/url] Then
- Exit MsgBox(48, '', '添加错误 = ' & @error)
- Else
- MsgBox(64, '', '已添加')
- EndIf
- ;例子:删除计算器程序
- _ShellExecute_TaskBarBtnDel('我的计算器')
- If @error Then
- MsgBox(48, '', '删除错误 = ' & @error)
- Else
- MsgBox(64, '', '已删除')
- EndIf
- Func _ShellExecute_TaskBarBtnAdd($sPath, $sName = '') ;将快捷方式或程序锁定到任务栏
- ;~ ###(lnk快捷方式文件或程序文件, 程序文件可指定的显示名)
- Local $fLnkTmp = ''
- If Not StringRegExp($sPath, '(?i)\.lnk) Then
- If Not FileExists($sPath) Then Return SetError(1, 0, 0)
- $sName = StringRegExpReplace($sName, '(?i)^\s+|\s+$|\.lnk\s*, '')
- If $sName = '' Then
- $fLnkTmp = @TempDir & '\' & StringRegExpReplace($sPath, '^.*\\|\.\w+, '') & '.lnk'
- Else
- If StringRegExp($sName, '[\\/:*?"<>|]') Then Return SetError(2, 0, 0)
- $fLnkTmp = @TempDir & '\' & $sName & '.lnk'
- EndIf
- If Not FileCreateShortcut($sPath, $fLnkTmp) Then Return SetError(3, 0, 0)
- $sPath = $fLnkTmp
- Else
- Local $aTmp = FileGetShortcut($sPath)
- If @error Then Return SetError(4, 0, 0)
- If Not FileExists($aTmp[0]) Then Return SetError(5, 0, 0)
- EndIf
- Local $TaskBarLnk = @AppDataDir & '\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\' & StringRegExpReplace($sPath, '^.*\\', '')
- If $TaskBarLnk = $sPath Then Return SetError(6, 0, 0)
- If FileExists($TaskBarLnk) Then ShellExecuteWait($TaskBarLnk, '', '', 'taskbarunpin')
- ShellExecuteWait($sPath, '', '', 'taskbarpin')
- If @error Then
- If $fLnkTmp <> '' Then FileDelete($fLnkTmp)
- Return SetError(7, 0, 0)
- EndIf
- If $fLnkTmp <> '' Then FileDelete($fLnkTmp)
- EndFunc ;==>_ShellExecute_TaskBarBtnAdd
- Func _ShellExecute_TaskBarBtnDel($sLnkName) ;删除任务栏上指定名称的锁定程序
- ;~ ###(lnk文件名即显示名)
- $sLnkName = StringRegExpReplace($sLnkName, '(?i)^.*\\|^\s+|\s+$|\.lnk\s*, '')
- If $sLnkName = '' Then Return SetError(1, 0, 0)
- Local $TaskBarLnk = @AppDataDir & '\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\' & $sLnkName & '.lnk'
- If Not FileExists($TaskBarLnk) Then Return SetError(2, 0, 0)
- ShellExecuteWait($TaskBarLnk, '', '', 'taskbarunpin')
- If @error Then Return SetError(3, 0, 0)
- EndFunc ;==>_ShellExecute_TaskBarBtnDel
复制代码 |
|