Board logo

标题: 如何添加个“发送到桌面快捷方式”的右键 [打印本页]

作者: tireless     时间: 2008-4-14 21:23    标题: 如何添加个“发送到桌面快捷方式”的右键

系统里的“发送到”实在让人受不了,要几秒才显示出发送到菜单

想在右键加个菜单---发送到桌面快捷方式
·  如果是文件,创建的快捷方式最好不带扩展名
·  能针对多个文件
·  最好不要闪cmd窗口
·  利用其他工具也行,如shortcut、nircmd
作者: slore     时间: 2008-4-15 03:07    标题: DesktopLink.vbs---By Slore

引用的就不算我说话了~郁闷~~~打空格也不行。。。

  Quote:

'-----------------DesktopLink.vbs---By Slore At 2008-04-15------------------
'
'脚本说明:
'放到任意目录,双击即可安装/卸载。
'欢迎您的测试以及给我提供宝贵意见。
'如果你喜欢,请随意转载,但请勿随意修改。
'                                      http://bbs.cn-dos.net
'
'意见反馈:1.论坛消息
'         2.email:slorelee@yahoo.com.cn
'---------------------------------------------------------转载请保留我:)----
Dim strArg,strDesktop,strBsname
Set objShell = WScript.CreateObject("WScript.Shell")
ArgCount = wscript.Arguments.Count
If ArgCount = 0 Then
   
strArg = "在右键添加一个发送到桌面快捷方式选项:" & vbCrLf
   
ret = MsgBox( strArg & "是[安装] 否[卸载] 取消[终止]",67,"By Slore")
   
strArg = "HKCR\AllFilesystemObjects\Shell\Slore\"
    If ret = 6 Then
        
strCommand = "Wscript.exe """ & WScript.ScriptFullName & """ ""%1"""
        objShell.RegWrite strArg,"桌面快捷方式(&L)"
        objShell.RegWrite strArg & "Command\", strCommand
        MsgBox "菜单已添加成功!..o(∩_∩)o..",64,"By Slore"
    ElseIf ret = 7 Then
        
objShell.RegDelete strArg & "Command\"
        objShell.RegDelete strArg
        MsgBox "该菜单已删除!",64,"By Slore"
    End If
   
wscript.Quit
End If

Set
objFSO = CreateObject("Scripting.FileSystemObject")
strDesktop = objShell.SpecialFolders("Desktop")
For i = 0 To ArgCount - 1
    strArg = wscript.arguments.item(i)
   
strBsname = objFSO.GetBaseName(strArg)
   
strTarget = strDesktop & "\" & strBsname
    If Not CST(strTarget,".lnk") Then CST strTarget,".pif"
Next

Function
CST(strPath,strExt)
   
n = 1:CST = True
    on Error Resume Next
    Do While
objFSO.FileExists(strPath & strExt)
        
n = n + 1
        strTarget = strDesktop & "\" & strBsname & " (" & n & ")"
    Loop
    Set
oShellLink = objShell.CreateShortcut(strPath & ".lnk")
   
oShellLink.TargetPath = strArg
    oShellLink.WorkingDirectory = objFSO.GetParentFolderName(strArg)
   
oShellLink.Save
    If Err Then Err.Clear:CST = False
End Function

Set
oShellLink = Nothing
Set
objShell = Nothing
Set
objFSO = Nothing


作者: tireless     时间: 2008-4-15 08:11
谢谢slore,很不错。就是创建多个快捷方式有点慢,能像系统的那样快就好了
作者: zh159     时间: 2008-4-15 09:48
2 楼的可以在选定多个文件后创建多个快捷方式

[ Last edited by zh159 on 2008-4-15 at 09:53 AM ]
作者: slore     时间: 2008-4-15 12:48


  Quote:
Originally posted by tireless at 2008-4-15 08:11:
谢谢slore,很不错。就是创建多个快捷方式有点慢,能像系统的那样快就好了

已经尽量了。但是知识还是不够。。。
调用系统的那个DESKLINK,但是是 CLSID那种……
这个其实选多个,也没有进循环。。。

是每个文件调用一次DESKLINK.VBS,所以……选的越多越卡,会一下运行n个wscript...


所以如果是多个还是SENDTO下吧

PS:我这里的SENDTO显示很快呀~~~你是不是里面项目太多了?
作者: tireless     时间: 2008-4-15 20:35


  Quote:
Originally posted by slore at 2008-4-14 04:48 PM:


PS:我这里的SENDTO显示很快呀~~~你是不是里面项目太多了?

不,即使只留下一个“桌面快捷方式”,那菜单的显示速度也让我很郁闷。。。

用shortcut或nircmd应该比较快,怎么用?
作者: sylovanas     时间: 2008-4-15 20:57
1.bat内容

@echo off
if exist %temp%\1.txt del 1.txt /q >nul 2>nul
for %%a in (%*) do echo shortcut "%%~a" "~$folder.desktop$" "%%~na">>%Temp%\1.txt
nircmd script %temp%\1.txt

加入右键选单的内容

nircmd execmd 1.bat %*

[ Last edited by sylovanas on 2008-4-15 at 09:00 PM ]