Я использую WScript.Shell
для запуска стороннего исполняемого файла, который читает файл и отправляет некоторые данные.Access зависает на WScript.Shell.run
Dim objShell As Object, Shellerror As Long
Set objShell = CreateObject("WScript.Shell")
Проблема заключается в том, что доступ висит на .run
заявлении.
Shellerror = objShell.Run(Chr(34) & PreveriPath(ApplicationPath) & "SimplyTax\simplytax.exe" & Chr(34) & "" & VrstaZahteve & " " & Delovanje & " " & SWid & " " & Chr(34) & Datoteka & Chr(34) & " " & Geslo & " RD#" & Chr(34) & ResponseDatoteka & Chr(34), 0, True)
Возможно, вы видите что-либо с этим вызовом, вот строка, которая фактически запускается.
Shellerror = objShell.Run("F:\AA\Bicom 5\SimplyTax\simplytax.exe" racun test 10456317 "F:\AA\Bicom 5\SimplyTax\racun.txt" test RD#"F:\AA\Bicom 5\SimplyTax\Response\STResponse.txt", 0, True)
Теперь проблема здесь в том, что исполнение просто висит на этой линии, без каких-либо ошибок или что-нибудь, пока я с силой закрыть доступ (она идет в не отвечает состояние).
Я исследовал эту проблему в течение двух дней, и единственное, что я мог понять, это то, что она зависает только тогда, когда у вас есть пробелы в пути к файлам. Я не могу просто удалить пробелы с пути, потому что мы делаем это для нескольких разных компаний, которые имеют разные структуры папок (некоторые из них имеют пробелы, а некоторые без них).
Насколько я вижу, компании, использующие пути без пробелов, не имеют проблем.
Я пробовал несколько вещей с путями, ни один из них, похоже, не работает. Я помещал вокруг них двойные кавычки, я размещал одинарные кавычки вокруг них, я удалил все кавычки, я попытался использовать функцию ShellExecute
, которая дала те же результаты, но просто сделала Access не быстрее реагировать.
Я чувствую, что нахожусь здесь на стене ... Что я делаю неправильно?
У вас есть последний параметр 'bWaitOnReturn'' Shell.Run', установленный в 'True'. Это намеренно? Если да, то это необходимо? Доступ не зависает, он ждет завершения вызова вызываемой программы. [Shell.Run] (https://msdn.microsoft.com/en-us/library/d5fk67ky%28v=vs.84%29.aspx) doc. – Andre
К сожалению, требуется BWaitOnReturn. Я вызываю программу, которая пишет мне файл .txt, который затем читаю. Я прочитал его сразу после вызова программы, поэтому waitOnReturn был преднамеренным. – Miha
Хорошо. Вы проверяли, например. с Process Explorer, что вызванная программа 'simpletax.exe' фактически заканчивается? – Andre