如何在VB6中分隔包含空格的路径名?

时间:2011-06-21 12:03:07

标签: vb6

我正在尝试调用CreateProcess函数,并且遇到包含空格的应用程序的路径名时遇到问题。文档here指示我“使用引用的字符串”来指定路径,例如X:\My Directory\Myexe.exe,但对如何执行此操作保持沉默,这是一种耻辱,因为我尚未管理它。

"""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)

2 个答案:

答案 0 :(得分: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) 

答案 1 :(得分:1)

这可能会失败,因为您将应用程序名称传递给命令行。文档将它们描述为或多或少可互换(除了可以在第二个参数中放置命令行参数)。第二个参数是命令行,所以你可以这样做:

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

将命令行包装在引号中并将其传递给函数调用的命令行参数。过去,我已经成功地这样做了。

修改 Fairly nice example here