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 が 1 つのデータ型 (Variant) しかサポートしていないためです。関数「Create_Shortcut」では、パラメーターを「As String」や「As Integer」などの特定のデータ型として定義しています。データ型宣言を削除すると、問題が修正されました。

次の問題は、VBScript がオプションのパラメーターをサポートしていないことです。そのため、「Create_Shortcut」メソッド シグネチャの Optional キーワードも削除する必要があります。最終的に、メソッド シグネチャは次のようになります。

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

このスクリプトに関するもう 1 つの懸念は、ボタン クリック (Private Sub Command1_Click) を処理しているように見えることです。これが VB 6 アプリケーションではなく VB スクリプトである場合、ボタン クリック ハンドラは必要ありません。ただし、関数を呼び出す必要があるため、ボタンのクリックと終了の「End Sub」の署名を削除すると、関数を適切に呼び出すことができます。でも....

「Create_Shortcut」メソッドのコードにも問題があります。上記の説明と同様に、データ型は Variant の 1 つしかないため、変数を宣言する 2 行から "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 に答える