Включение файла .bat или .exe в прикладную программу Windows - PullRequest
0 голосов
/ 14 марта 2012

Я делаю проект, в который я включаю уже готовую программу.

Имеет файл .bat, а также файл .exe.

Теперь уже готовый прогр находится в папке 'X', в которой много файлов, включая

  1. - это файл .tcl
  2. - это файл .exe
  3. - это файл .bat.

Теперь, когда я щелкаю по файлу .exe, он открывает диалоговое окно, в котором я должен выбрать вышеупомянутый файл .tcl, и программа запускается.

теперь, когда я запускаю .bat-файл, программа выполняется автоматически.

Теперь проблема в том, что все файлы находятся в одной папке. Если я сохраню файл .bat или .exe из папки 'X', моя уже выполненная программа не будет выполнена.

Сейчас я делаю проект, в котором мне нужно назвать эту так называемую уже готовую программу.

Я вызываю файл .bat или файл .exe. Внутри программы используется

Process.Start(@"E:\X\abc.exe");

или

Process.Start(@"E:\X\xyz.bat");

но моя программа не выполняется.

поэтому я добавил всю папку «X» в свои проекты и попробовал это.

Process.Start(@"E:\Project\X\abc.exe");

или

Process.Start(@"E:\Project\X\xyz.bat");

где проект - папка, в которую сохраняются мои проекты. Также обратите внимание, что я использую приложение Windows.

в обоих случаях я не получаю результат.

Я сохранил process.start для события нажатия кнопки.

Во время нажатия кнопки, если у меня есть

Process.Start(@"E:\Project\X\xyz.bat");

Мигает приглашение cmd, и ничего не происходит.

когда у меня

Process.Start(@"E:\Project\X\abc.exe");

я получаю диалоговое окно, которое я упомянул выше. И мне нужно выбрать файл .tct, о котором я упоминал выше.

Но я получаю такую ​​ошибку.

не удалось открыть "./input-background.gif": такого файла или каталога нет

Есть ли решение, в котором я могу запустить свою программу, включая файл .bat или файл .exe?

Ответы [ 3 ]

1 голос
/ 14 марта 2012

Если вы не предоставляете сообщения об ошибках из своих функций, трудно понять, что не так, в любом случае, вы можете попытаться запустить процессы, меняющие их текущий каталог (я думаю, они ищут что-то, чего не могут найти, например, input-background.gif). ). Как пример:

 ProcessStartInfo startInfo = new ProcessStartInfo("YourProgram.exe", "command line parameters");
 startInfo.WorkingDirectory = Application.StartupPath;
 Process.Start(startInfo);
0 голосов
/ 20 марта 2012

на самом деле, я думаю, что в вашем сценарии может быть какая-то запутанная проблема, поэтому я опубликую здесь типичную вызывающую программу bat:

    static void Main(string[] args) 
    { 
    ProcessStartInfo pst = new ProcessStartInfo("Your batch file","the arguments"); 
    Process p = new Process(); 
    p.StartInfo = pst; Console.WriteLine(p.StandardOutput); //Some info like error message in your batch file or comments. 
p.Start(); 
    }

, и вы можете заменить ваш командный файл исполняемым файлом иликомандный файл.Что касается вашей второй проблемы, может быть, есть какой-то ресурс в вашем пакетном файле, получите каталог с пробелом, вы можете добавить квоту вокруг него.Я предлагаю вам сначала протестировать ваш командный файл в командной строке Windows, а если он работает как положено, то перейти к коду процесса.Надеюсь, что поможет.

0 голосов
/ 14 марта 2012

Согласитесь с предыдущим ответом, и еще одна вещь, которую я хочу упомянуть: если ваше приложение работает под Windows7 или выше, обратите внимание на Windows User Account Control (UAC), выключите его или запустите приложение с правами администратора. В противном случае объект процесса не будет запущен.

...