无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 6237|回复: 16
打印 上一主题 下一主题

[已解决] 找到一个把程序附到开始菜单的批处理,请高手改一下

[复制链接]
跳转到指定楼层
1#
发表于 2018-7-27 00:13:12 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 765058729 于 2018-8-4 23:34 编辑

我看它的原理是通过vbs执行,请教怎么把它全部转换成vbs?最好一个vbs可以批量添加快捷方式。

这样以后就不用通过注册表那么麻烦了,请高手帮帮忙,谢谢




附到开始菜单测试.rar (738 Bytes, 下载次数: 97)

2#
 楼主| 发表于 2018-7-27 19:12:15 来自手机 | 显示全部楼层
本帖最后由 765058729 于 2018-7-27 19:32 编辑
9zhmke 发表于 2018-7-27 16:37
试了一下,显示倒是可以了,但是没办法点击啊,你们的是否正确?




vbs出现错误,我提供的bat没有问题,闲了您再研究研究
回复

使用道具 举报

3#
 楼主| 发表于 2018-7-28 11:59:39 | 显示全部楼层
本帖最后由 765058729 于 2018-7-28 12:02 编辑
9zhmke 发表于 2018-7-27 16:37
试了一下,显示倒是可以了,但是没办法点击啊,你们的是否正确?


今天测试一下,你修改的这个是可以创建快捷方式,也可以指定位置,但是与模拟文件右键附到开始菜单有明显区别,


点击文件右键附到开始菜单会在这里创建快捷方式,而且还会添加到注册表里,%userprofile%\AppData\Roaming\Microsoft\Intern~1\QuickL~1\UserPi~1\StartMenu\

你修改的只能指位置创建快捷方式,没有点击附到开始菜单的动作,所以没有改动注册表,下面的代码好像没有工作
Set objFolder = objShell.Namespace(path)
name=Replace(lnkfile,path,"")
Set objFolderItem = objFolder.ParseName(name)
Set colVerbs = objFolderItem.Verbs
For Each objVerb in colVerbs
    If Left(objVerb.name,2) = "附到" Then objVerb.DoIt
Next
End Sub
startpin Wscript.Arguments(0)

回复

使用道具 举报

4#
 楼主| 发表于 2018-7-28 12:37:34 | 显示全部楼层
本帖最后由 765058729 于 2018-7-28 12:41 编辑
9zhmke 发表于 2018-7-28 12:09
后面那段代码是从你给的批处理里分解出来的,如果没执行的话,菜单上会看不到内容,所以是运行了的
我以前 ...


好像是只要有附到开始菜单的动作,注册表就会有改动,我也不是很懂,不过我根据你辛苦劳动得来的代码改动一下成功,多谢,我自己真的是一窍不能,摸索着玩

我估摸着它的原理是先在附件的文件夹创建一个快捷方式,然后再检索这个快捷方式的右键菜单,只要有"附到"这两个字就点击,用下面的代码可以


Set WshShell=WScript.CreateObject("WScript.Shell")
Set objShell = CreateObject("Shell.Application")
Set objFSO = CreateObject("Scripting.FileSystemObject")
lnkfile="%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Accessories\" '指定存放位置

lnkfile=WshShell.ExpandEnvironmentStrings(lnkfile) '解析环境变量,还原成真实路径
Shortcut "附到开始菜单测试","C:\Program Files\Internet Explorer\iexplore.exe" '建立快捷方式的名字和路径文件
Set objShell = CreateObject("Shell.Application")
path=Left(lnkfile,InStrRev(lnkfile,"\"))
Set objFolder = objShell.Namespace(path)
name=Replace(lnkfile,path,"")
Set objFolderItem = objFolder.ParseName(name)
Set colVerbs = objFolderItem.Verbs
For Each objVerb in colVerbs
    If Left(objVerb.name,2) = "附到" Then objVerb.DoIt
Next



Function Shortcut(Short_name,path_and_name) '为菜单创建一个快捷方式
        lnkfile=lnkfile & "" & Short_name & ".lnk"    '名称
    set oShellLink = WshShell.CreateShortcut(lnkfile)
    oShellLink.TargetPath = path_and_name      '目标
    oShellLink.WindowStyle = 1    '窗口样式  1默认窗口激活,参数3最大化激活,参数7最小化
    oShellLink.Hotkey = ""         '快捷键
    oShellLink.IconLocation = path_and_name & ",0"     '第几个图标
    oShellLink.Description = Short_name      '备注
    oShellLink.WorkingDirectory = left(path_and_name,InStrRev(path_and_name,"")-1)   '起始位置
    oShellLink.Arguments = ""    '参数
    oShellLink.Save     '保存
End Function
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-8 09:31

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表