0

我是 vb 脚本的新手,想为我的 .exe 应用程序创建一个快捷方式,该应用程序将在一个不可见的窗口中打开。这是我写的代码

Option Explicit

Private Sub Command1_Click()
'This will Create a ShortCut of test_application in our desktop, its name is "My-Test",    invisible windows when run, use the 2nd icon as the Shortcut icon.'

Create_ShortCut "C:\MyApp\bin\test_application.exe", "Desktop", "My-Test", , 0, 1
End Sub

Sub Create_ShortCut(ByVal TargetPath As String, ByVal ShortCutPath As String, ByVal    ShortCutname As String, Optional ByVal WorkPath As String, Optional ByVal Window_Style As Integer, Optional ByVal IconNum As Integer)

Dim VbsObj As Object
Set VbsObj = CreateObject("WScript.Shell")

Dim MyShortcut As Object
ShortCutPath = VbsObj.SpecialFolders(ShortCutPath)
Set MyShortcut = VbsObj.CreateShortcut(ShortCutPath & "\" & ShortCutname & ".lnk")
MyShortcut.TargetPath = TargetPath
MyShortcut.WorkingDirectory = WorkPath
MyShortcut.WindowStyle = Window_Style
MyShortcut.IconLocation = TargetPath & "," & IconNum
MyShortcut.Save

End Sub

我将脚本存储为 test.vbs 并以下列方式执行它

C:\Users\me\Desktop>cscript test.vbs

它给了我以下错误

Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.

C:\Users\me\Desktop\test.vbs(9, 38) Microsoft VBScript compilation error: Expected ')'

这是创建快捷方式的好方法,还是有更好更详细的方法?

4

1 回答 1

4

您的脚本存在一些问题。

在回答您的问题时,您收到错误的原因是因为 VBScript 仅支持一种数据类型 - Variant。在您的函数“Create_Shortcut”中,您将参数定义为特定的数据类型,例如“As String”和“As Integer”。删除数据类型声明,您已经解决了您的问题。

下一个问题是 VBScript 不支持可选参数。因此,您还需要删除“Create_Shortcut”方法签名中的 Optional 关键字。最终,方法签名将如下所示:

Private Sub Create_ShortCut(TargetPath, ShortCutPath, ShortCutname, WorkPath, Window_Style, IconNum)

我对此脚本的另一个担忧是它看起来像是在处理按钮单击(Private Sub Command1_Click);如果这是一个 VB 脚本而不是 VB 6 应用程序,则不需要按钮单击处理程序。但是,您确实需要调用您的函数,因此如果您删除按钮单击的签名以及关闭的“End Sub”,您将正确调用您的函数。然而....

“Create_Shortcut”方法中的代码也有问题。正如上面的描述,只有一种数据类型 - Variant - 所以从声明变量的两行中删除“As Object”。

该函数仍然不起作用,但是最后一个问题是因为您在调用该方法时传入了一个空的工作目录路径;工作目录是必需的,因此请务必将其传递给您的方法。更改您的代码:

Create_ShortCut "C:\MyApp\bin\test_application.exe", "Desktop", "My-Test", , 0, 1

Create_ShortCut "C:\MyApp\bin\test_application.exe", "Desktop", "My-Test", "C:\MyApp\bin" , 0, 1

因此,最终,您的 VBS 文件将如下所示:

Create_ShortCut "C:\MyApp\bin\test_application.exe", "Desktop", "My-Test", "C:\MyApp\bin" , 0, 1

Private Sub Create_ShortCut(TargetPath, ShortCutPath, ShortCutname, WorkPath, Window_Style, IconNum)
    Dim VbsObj
    Set VbsObj = CreateObject("WScript.Shell")

    Dim MyShortcut
    ShortCutPath = VbsObj.SpecialFolders(ShortCutPath)
    Set MyShortcut = VbsObj.CreateShortcut(ShortCutPath & "\" & ShortCutname & ".lnk")
    MyShortcut.TargetPath = TargetPath
    MyShortcut.WorkingDirectory = WorkPath
    MyShortcut.WindowStyle = Window_Style
    MyShortcut.IconLocation = TargetPath & "," & IconNum
    MyShortcut.Save
End Sub
于 2013-09-19T16:30:33.403 回答