Как использовать Process.Start - PullRequest
       7

Как использовать Process.Start

2 голосов
/ 27 августа 2010

Я использую process.Start для запуска Convert.exe. Цель этой программы - конвертировать все файлы, которые находятся в папке exe. Поэтому, когда я обычно использую его, я копирую, вставляю файл в ту же папку, что и Convert.exe, а затем запускаю Convert.exe. Convert.exe создаст новый «преобразованный» файл в той же папке.

Я пытаюсь автоматизировать этот утомительный процесс. Пользователь выбирает файл, который должен быть преобразован из FolderA, я копирую его в ту же папку, где находится Convert.exe, и использую process.start (Convert.exe) для его запуска. Просто чтобы быть понятным, этот "Convert.exe" не принимает аргументов.

Проблема: «Convert.exe» не конвертирует файлы в своей папке. Вместо этого он конвертирует все файлы в FolderA по какой-то странной причине. Я не знаю, почему он выбрал эту папку, я даже не пытаюсь отправить ее в качестве аргумента или ничего.

Вот код, который у меня есть:

Dim techInfo As New System.IO.FileInfo(itm.strFilePath)             
techInfo.CopyTo(ConverterPath & techInfo.Name)

Dim procInfoConvert As New ProcessStartInfo
procInfoConvert.CreateNoWindow = False
procInfoConvert.Arguments = ""
procInfoConvert.FileName = ConverterPath & "Convert.exe"

Dim procConvert As Process = Process.Start(procInfoConvert)

Я провел тест, в котором скопировал, вставил файл в папку «Convert.exe», а затем просто запустил этот код:

process.start(ConverterPath & "Convert.exe")

exe ничего не возвращает, как если бы в папке не было файлов.

Единственное, о чем я могу думать, это то, что при запуске process.Start он копирует файл в другое место и запускает его оттуда.

Есть идеи у кого-нибудь?

1 Ответ

2 голосов
/ 27 августа 2010

Попробуйте:

procInfoConvert.WorkingDirectory = ConverterPath

Это позволит запустить процесс в каталоге, в котором он находится, а не в текущем каталоге.

...