我正在尝试调用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)
答案 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)
将命令行包装在引号中并将其传递给函数调用的命令行参数。过去,我已经成功地这样做了。