Как разделить путь, содержащий пробелы в VB6? - PullRequest
1 голос
/ 21 июня 2011

Я пытаюсь вызвать функцию CreateProcess, и у меня возникают проблемы с именем пути для приложения, которое содержит пробелы. Документация здесь инструктирует меня «использовать строки в кавычках», чтобы указать путь, такой как 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 ]

1 голос
/ 21 июня 2011

Это может произойти сбой, потому что вы передаете имя приложения в командной строке. Документация описывает их как более или менее взаимозаменяемые (за исключением того, что вы можете поместить аргументы командной строки во второй параметр). Второй аргумент для командной строки, чтобы вы могли сделать что-то вроде этого:

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

Чтобы обернуть командную строку в кавычки и передать ее в аргумент командной строки вызова функции. Я имел успех с этим в прошлом.

Редактировать Довольно хороший пример здесь .

1 голос
/ 21 июня 2011

Прошло много времени с тех пор, как я использовал VB6, но я думаю, что я использовал синтаксис:

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

Итак, ваш фрагмент кода станет:

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) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...