2011-06-21 14 views
1

CreateProcess関数を呼び出そうとしていて、アプリケーションのパス名にスペースを含む問題があります。ドキュメントhereは、「引用符付き文字列を使用してX:\My Directory\Myexe.exeなどのパスを指定するように指示しますが、これを行う方法については何も言いません。まだ管理していないので残念です。VB6でスペースを含むパス名を区切るにはどうすればよいですか?

"""X:\My Directory\Myexe.exe""" 

エラー123(不正な構文)を取得し、そして

"X:\""My Directory""\Myexe.exe" 

エラー3取得(パスが見つかりません)。

誰でもこれを行う方法を知っていますか?

を編集してください。私はこれを使用して、exeパス名でさまざまな試みをしています。これは実際には機能しませんが、他の理由(まだ発見されていません)で失敗します。

Dim our_process_information As PROCESS_INFORMATION 
Dim process_attributes As SECURITY_ATTRIBUTES 
Dim thread_attributes As SECURITY_ATTRIBUTES 

create_result = CreateProcess("X:\Myexe.exe", _ 
           vbNull, _ 
           process_attributes, _ 
           thread_attributes, _ 
           0, _ 
           0, _ 
           0, _ 
           "X:\", _ 
           startup_information, _ 
           our_process_information) 
+0

あなたの最初の例は私に似ています。引数を渡す場合は、コマンドライン全体ではなく、二重引用符でパスをラップするだけでよいことに注意してください。もう少しコードを投稿すれば助けになるかもしれません:) – mdm

+0

@mdm、もう少し追加しました。とにかくありがとう。 –

答えて

1

この5月アプリケーション名をコマンドラインに渡しているために失敗する可能性があります。ドキュメントには、それらを多かれ少なかれ互換性があると記述されています(ただし、コマンドライン引数を2番目のパラメータに入れることはできません)。引用符でコマンドラインをラップし、関数呼び出しのコマンドライン引数に渡す

create_result = CreateProcess(vbNullString, _ 
           Chr(34) & "X:\Myexe.exe" & Chr(34), _ 
           process_attributes, _ 
           thread_attributes, _ 
           0, _ 
           0, _ 
           0, _ 
           "X:\", _ 
           startup_information, _ 
           our_process_information) 

:あなたはこのような何かを行うことができますように、第2引数は、コマンドラインのためです。私は過去にこのようにして成功しました。

Fairly nice example hereです。

+0

ありがとう、@mdm。それはそれをしたように見えます。 –

1

それは、私はVB6を使用しましたので、しばらくして、私は私が使用する構文は、だったと思うです:

Chr(34) & "X:\My Directory\Myexe.exe" & Chr(34) 

だからあなたのコードsnipetはなる:

create_result = CreateProcess(Chr(34) & "X:\My Directory\Myexe.exe" & Chr(34), _ 
           vbNull, _ 
           process_attributes, _ 
           thread_attributes, _ 
           0, _ 
           0, _ 
           0, _ 
           "X:\", _ 
           startup_information, _ 
           our_process_information) 
+0

提案していただきありがとうございますが、私はこれを試してもエラー123が表示されます。 –

関連する問題