【已解决】AU3如何才能做到把软件快捷方式附加到任务栏?
本帖最后由 13gu 于 2022-8-20 14:38 编辑包括WIN7/810/11
我只知道解除的,XP WIN7/810/11都可以
If FileExists("C:\Users\Administrator\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\QQ音乐.lnk") Then
$boolResult2 = ShellExecute("C:\Users\Public\Desktop\QQ音乐.lnk", "", "C:\Users\Public\Desktop", "taskbarunpin") ;Win7任务栏图标解锁
Sleep(100)
EndIf
13gu 发表于 2022-8-18 18:24
好的,谢谢老大,方法是可以,只是不太完美。再看看还有没有其他方法
按老大的方法,前提是这个路径要 ...
那是因为你的TaskBar文件夹本来就有该快捷方式,或者说你指定的快捷方式在该文件夹中。创建时会重名而自动添加 (n) 序号。
你应该指定(或创建)一个其它路径的快捷方式,比如 d:\qq.lnk
ShellExecute('d:\qq.lnk', '', '', 'taskbarpin') 完成之后如不需要该快捷方式再删除之 去掉 un 试试,taskbarpin afan 发表于 2022-8-18 16:31
去掉 un 试试,taskbarpin
好的,谢谢老大,方法是可以,只是不太完美。再看看还有没有其他方法
按老大的方法,前提是这个路径要有QQ音乐.lnk,运行后这个路径
C:\Users\Administrator\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\
会多一个QQ音乐(1).lnk
快捷方式也会显示QQ音乐(1).lnk afan 发表于 2022-8-18 19:40
那是因为你的TaskBar文件夹本来就有该快捷方式,或者说你指定的快捷方式在该文件夹中。创建时会重名而自 ...
谢谢老大回复
If FileExists("C:\Users\Administrator\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\QQ音乐.lnk") Then
$boolResult2 = ShellExecute("C:\Users\Public\Desktop\QQ音乐.lnk", "", "C:\Users\Public\Desktop", "taskbarpin") ;Win7任务栏图标解锁
Sleep(100)
EndIf
如上图的代码,如果不存在这个快捷方式,C:\Users\Administrator\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\QQ音乐.lnk
任务栏就创建不了图标
有没有根据主程序exe来创建务栏图标的方法呢? 13gu 发表于 2022-8-18 23:53
谢谢老大回复
If FileExists("C:%users\Administrator\AppData\Roaming\Microsoft\Internet Explorer\Qu ...
你上面的代码是卸载的,当然必须存在卸载的对象。
创建的话 taskbarpin 命令会复制指定lnk文件到 TaskBar 文件夹,上面已经说过了。
你随便复制一个快捷方式(目标必须是可固定到任务栏的)到 d:\qq.lnk,再执行以下这行代码,什么都不用改,看看结果怎样。
ShellExecute('d:\qq.lnk', '', '', 'taskbarpin') afan 发表于 2022-8-19 11:03
你上面的代码是卸载的,当然必须存在卸载的对象。
创建的话 taskbarpin 命令会复制指定lnk文件到 TaskBa ...
明白了,谢谢老大 13gu 发表于 2022-8-19 17:45
明白了,谢谢老大
写了两个函数,可以直接添加exe
;例子:添加计算器程序
_ShellExecute_TaskBarBtnAdd(@SystemDir & '\calc.exe', '我的计算器')
If @error 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) 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 afan 发表于 2022-8-19 18:36
写了两个函数,可以直接添加exe
ShellExecute('d:\qq.lnk', '', '', 'taskbarpin')
这个只适合WIN7.WIN10的变成打开这个快捷方式了 13gu 发表于 2022-8-19 20:55
ShellExecute('d:\qq.lnk', '', '', 'taskbarpin')
这个只适合WIN7.WIN10的变成打开这个快捷方式了
win10 开始不能使用API添加,可能只能(模拟)手动添加,比如发送按键等 afan 发表于 2022-8-20 12:19
win10 开始不能使用API添加,可能只能(模拟)手动添加,比如发送按键等
好的,谢谢 我想弄到win10开始菜单
页:
[1]