回 帖 发 新 帖 刷新版面

主题:快捷方式不能运行

ShellExecute Me.hwnd, "open", App.Path & "\Add\" & List7.Text, vbNullString, vbNullString, 0

App.Path & "\Add\" & List7.Text 是Add文件夹内的所有文件列表
如上面所说,运行exe文件没有问题,可是运行lnk文件就不行了,请教该怎么解决?

回复列表 (共17个回复)

11 楼

有的需要加2个双引号比如调用写字板,或者是不支持文件路径中有空格。。。
shell 系统支持文件  chr(34) "目标文件" chr(34)

12 楼

总结:只有建立个临时BAT才能运行,其他方法都不行!
另外:start QQ.exe.lnk 是不行的,我试的结果是快捷方式文件不能有点( .) ,否则不能运行
start QQ.exe 不带后缀名也不行,必须把快捷方式名  QQ.exe 改成任意不带( . )的文件名才可以!
例如 start QQ  
如果不是.lnk文件,则最好写好后缀名,例如 atart 工程1.exe
做这个功能我是这么想的,机子上一些工具如果很多,则可把他们的exe文件建立成快捷方式,然后通过一个软件去分类管理,使用查找都方便!

13 楼

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 楼

不,我试了,不能运行的!!!
现在是靠建立BAT解决的问题,另外还出现了一个奇怪的问题:
软件下有个文件夹Add,我是把快捷方式放到这个文件夹内的,BAT文件也放到了这里,BAT的内容是:
@echo off
start 腾讯QQ
end

这样直接点BAT运行,可以运行QQ,但是在程序中运行直接调用就不行了,必须要写成这样
@echo off
start Add\腾讯QQ
end

15 楼

不会吧,就是将上面复制下来也能运行啊?

16 楼

请看附件中的例子:

http://upload.programfan.com/upfile/200801150919353.rar

17 楼

还是不可以,如果在你的机子上能用,我估计是系统的一些问题,我用的2003

我来回复

您尚未登录,请登录后再回复。点此登录或注册