2

Visual Basic で少しプログラムを作成しました。ファイルを圧縮し、ftp サーバーにファイルをアップロードします。プログラム自体はうまく機能します。

私の問題は、コマンドラインから引数を受け取るかどうかにかかわらず、別の動作をさせたいということです。引数が指定されている場合はフォームが表示されず、指定されていない場合はフォームが読み込まれます。

コマンド ライン引数を取得するコードは、Visual Basic から実行すると正常に動作します (プロジェクト プロパティ -> デバッグ -> 開始オプション -> コマンド ライン引数がファイル パスで設定されます)。

しかし、この行でcmdからプログラムを実行すると:pogram.exe C:\Users\user\file.txt

フォームが表示され、引数が検出されません。

発送のメインはこちら。
Module1.vb :

   Module Module1

Declare Function AttachConsole Lib "kernel32" (ByVal dwProcessId As Int32) As Boolean
Declare Function FreeConsole Lib "kernel32.dll" () As Boolean

Sub Main()
    Dim cmdArgs As String() = GetCommandLineArgs()
    Form2.loadData()
    If cmdArgs.Length = 0 Then ' NO ARGS MODE
        mainWindow.commandLineMode = False
        Application.Run(mainWindow)
    ElseIf cmdArgs.Length < 3 And Form2.TXTnumLicence.Text = "" Then ' BAD ARGS NUMBER
        Console.WriteLine("Aucun numero de licence definit. Usage : ./ODG_exchange ['filePath'] [numeroLicence [default = ./ODG_param.xml > numero_licence]]")
        Application.Exit()
    Else ' ARGS MODE
        mainWindow.commandLineMode = True
        mainWindow.commandeLine(cmdArgs)
    End If
End Sub

Visual Studio では、スタートアップ オブジェクトを Module1 として定義しました。多分それは役に立つでしょう。

4

2 に答える 2

0

常に 1 つのコマンド ライン引数 (実行中のプログラムのファイル名) があります。if ステートメントを cmdArgs.length = 1 に変更する必要があります

于 2013-03-21T21:08:25.330 に答える
0

7日後、私は解決策を見つけました...良い.exeを使用するだけで、ビジュアルスタジオと同様に機能します...

私はとても愚かな気がします、助けてくれてありがとう

于 2013-03-28T14:40:49.500 に答える