主题:快捷方式不能运行
q995852111
[专家分:260] 发布于 2008-01-13 18:07:00
ShellExecute Me.hwnd, "open", App.Path & "\Add\" & List7.Text, vbNullString, vbNullString, 0
App.Path & "\Add\" & List7.Text 是Add文件夹内的所有文件列表
如上面所说,运行exe文件没有问题,可是运行lnk文件就不行了,请教该怎么解决?
回复列表 (共17个回复)
11 楼
brokenworld [专家分:2640] 发布于 2008-01-14 12:58:00
有的需要加2个双引号比如调用写字板,或者是不支持文件路径中有空格。。。
shell 系统支持文件 chr(34) "目标文件" chr(34)
12 楼
q995852111 [专家分:260] 发布于 2008-01-14 16:12:00
总结:只有建立个临时BAT才能运行,其他方法都不行!
另外:start QQ.exe.lnk 是不行的,我试的结果是快捷方式文件不能有点( .) ,否则不能运行
start QQ.exe 不带后缀名也不行,必须把快捷方式名 QQ.exe 改成任意不带( . )的文件名才可以!
例如 start QQ
如果不是.lnk文件,则最好写好后缀名,例如 atart 工程1.exe
做这个功能我是这么想的,机子上一些工具如果很多,则可把他们的exe文件建立成快捷方式,然后通过一个软件去分类管理,使用查找都方便!
13 楼
华山论剑 [专家分:5310] 发布于 2008-01-14 17:39:00
4楼介绍的方法是可行的,我以前也做过,给你一个样例代码:
开一个新工程,加一个通用对话框控件CommonDialog1,一个按钮:
[code]
Private Sub cmdRunShortcut_Click()
Dim s As String
With CommonDialog1
.DefaultExt = "*.lnk"
.Filter = "Shortcut(*.lnk)|*.lnk"
.ShowOpen
s = .FileName
End With
If s <> "" Then
Shell "Rundll32.exe url.dll,FileProtocolHandler " & _
s, vbNormalFocus
End If
End Sub
[/code]
注意:"Rundll32.exe url.dll,FileProtocolHandler "这一段要完全对应,空格大小写都最好不要错。
最后取到的s,后缀是".exe.lnk"的。你试试上面代码,再去你的工程里试验,应该是可行的。
14 楼
q995852111 [专家分:260] 发布于 2008-01-14 17:57:00
不,我试了,不能运行的!!!
现在是靠建立BAT解决的问题,另外还出现了一个奇怪的问题:
软件下有个文件夹Add,我是把快捷方式放到这个文件夹内的,BAT文件也放到了这里,BAT的内容是:
@echo off
start 腾讯QQ
end
这样直接点BAT运行,可以运行QQ,但是在程序中运行直接调用就不行了,必须要写成这样
@echo off
start Add\腾讯QQ
end
15 楼
华山论剑 [专家分:5310] 发布于 2008-01-14 18:51:00
不会吧,就是将上面复制下来也能运行啊?
16 楼
华山论剑 [专家分:5310] 发布于 2008-01-15 09:21:00
请看附件中的例子:
http://upload.programfan.com/upfile/200801150919353.rar
17 楼
q995852111 [专家分:260] 发布于 2008-01-15 12:57:00
还是不可以,如果在你的机子上能用,我估计是系统的一些问题,我用的2003
我来回复