Как подавить DOS-окно (cmd.exe)

Bronza

Client
Регистрация
22.11.2010
Сообщения
51
Благодарностей
7
Баллы
8
На шаге "выполнить программу" - запускается .exe-шник с параметрами - вылетает DOS-окно (вроде как cmd.exe, не успеваю посмотреть, т.к. открывается на мгновение)... Пытался запускать этот ехе-шник через bat-файл, прописав в нем и "echo off" и r ехе-шнику дописав ">> anyfile.txt" - окно все равно вылетает...

Вопрос - как подавить всплытие\появление этого DOS-окна? В 10 потоков сами представляете - постоянно вылетают эти окна, фокус Винды переключается на них, ну и работать на компе невозможно соответственно.

Плиз хелпми!! )
 

Bronza

Client
Регистрация
22.11.2010
Сообщения
51
Благодарностей
7
Баллы
8
Есть кто живой и с опытом? ))) Понимаю, НГ на носу... Но работа встала, сижу уже четвертый час, и из шарпа пробовал, ну и BAT-ник перенаправлять пытался - окна так и вылетают... Ну а С# он как бэ не работает, если вот так делаю:

System.Diagnostics.ProcessStartInfo start = new System.Diagnostics.ProcessStartInfo();
start.FileName = @"D:\!!!!Zenno\!!!exiftool\{-Variable.randnamefile-}.bat";
start.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
System.Diagnostics.Process.Start(start );

При этом в С# я совсем не шарю - взял код из соседней ветки... Код этот или не работает, или срабатывает со второго раза - в режиме отладки (в PM) сначала пишет "файл не найден", жму еще раз "Далее" - и он срабатывает, BAt-ник исполняется! Ну а в Зенно, ессно, выдается ошибка, и шаб останавливается... Бррр, голова уже квадратная! ПАМАГИТИииии!!
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
А если в общих чертах... а батник то что делает? может там что нибудь плевое, что проще из зенки сделать чем отдельный батник старотовать?
 

darkdiver

Administrator
Команда форума
Регистрация
13.01.2009
Сообщения
2 285
Благодарностей
2 731
Баллы
113
Как-то так:
JavaScript:
System.Diagnostics.ProcessStartInfo p = new System.Diagnostics.ProcessStartInfo();
p.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized;
p.FileName = project.Variables["path"].Value;
p.Arguments = project.Variables["param"].Value;
p.UseShellExecute = true;
p.CreateNoWindow = true;
var process = System.Diagnostics.Process.Start(p);
 

Вложения

  • 10,1 КБ Просмотры: 27
  • Спасибо
Реакции: eagleowl

Bronza

Client
Регистрация
22.11.2010
Сообщения
51
Благодарностей
7
Баллы
8
Не работает... Вот мой код, там мало что поменялось:

System.Diagnostics.ProcessStartInfo p = new System.Diagnostics.ProcessStartInfo();
p.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized;
p.FileName = project.Variables["{-Variable.nameofbatfile-}"].Value;
p.Arguments = project.Variables[""].Value;
p.UseShellExecute = true;
p.CreateNoWindow = true;

var process = System.Diagnostics.Process.Start(p);

Ошибка вот:

04:06:26 Компиляция кода Ошибка в действии "CS1009" "Нераспознанная управляющая последовательность". [Строка: 3; Cтолбец: 36]
04:06:26 Компиляция кода Ошибка в действии "CS1009" "Нераспознанная управляющая последовательность". [Строка: 3; Cтолбец: 46]
04:06:26 Компиляция кода Ошибка в действии "CS1009" "Нераспознанная управляющая последовательность". [Строка: 3; Cтолбец: 58]

Переменную "{-Variable.nameofbatfile-}" проверял - там все ок, полный путь до BAT-файла...
Выглядит она вот так: d:\!!!!Zenno\!!!exiftool\83follmf5.bat (т.е. полный путь до папки+имя сгенерированного bat-файла)

Аргументы не передаются BAT-нику, поэтому там где "param" в образце - я сделал строку пустой - все по параметрам внутри уже есть в BAT-нике, его просто запустить надо, без всплытия окна.

Всё, опять тупик у меня ))) Попинайте скрипт еще етот пжл!!!
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
это конечно врядли может являться причиной.. но сдается мне что сочетания типа \! воспринимаются как экранирование...
Если Вам не сложно, попробуйте один батничек положить в другую папочку с нормальным названием... маловероятно, что поможет, но вдруг)))))
 

darkdiver

Administrator
Команда форума
Регистрация
13.01.2009
Сообщения
2 285
Благодарностей
2 731
Баллы
113
Не работает... Вот мой код, там мало что поменялось:

System.Diagnostics.ProcessStartInfo p = new System.Diagnostics.ProcessStartInfo();
p.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized;
p.FileName = project.Variables["{-Variable.nameofbatfile-}"].Value;
p.Arguments = project.Variables[""].Value;
p.UseShellExecute = true;
p.CreateNoWindow = true;

var process = System.Diagnostics.Process.Start(p);

Ошибка вот:

04:06:26 Компиляция кода Ошибка в действии "CS1009" "Нераспознанная управляющая последовательность". [Строка: 3; Cтолбец: 36]
04:06:26 Компиляция кода Ошибка в действии "CS1009" "Нераспознанная управляющая последовательность". [Строка: 3; Cтолбец: 46]
04:06:26 Компиляция кода Ошибка в действии "CS1009" "Нераспознанная управляющая последовательность". [Строка: 3; Cтолбец: 58]

Переменную "{-Variable.nameofbatfile-}" проверял - там все ок, полный путь до BAT-файла...
Выглядит она вот так: d:\!!!!Zenno\!!!exiftool\83follmf5.bat (т.е. полный путь до папки+имя сгенерированного bat-файла)

Аргументы не передаются BAT-нику, поэтому там где "param" в образце - я сделал строку пустой - все по параметрам внутри уже есть в BAT-нике, его просто запустить надо, без всплытия окна.

Всё, опять тупик у меня ))) Попинайте скрипт еще етот пжл!!!
1. Вот так, если параметров нет то их не надо передавать
2. Указывается ТОЛЬКО имя переменной, а не макрос.
3. Если вы хотите вписать путь полностью, вместо имени переменной d:\!!!!Zenno\!!!exiftool\83follmf5.batто писать надо вот так d:\\!!!!Zenno\\!!!exiftool\\83follmf5.bat

System.Diagnostics.ProcessStartInfo p = new System.Diagnostics.ProcessStartInfo();
p.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized;
p.FileName = project.Variables["nameofbatfile"].Value;
p.UseShellExecute = true;
p.CreateNoWindow = true;

var process = System.Diagnostics.Process.Start(p);

я же приложил пример, вам нужно в нем было казать только значение переменной path, а переменную парам оставить пустой ((
 
  • Спасибо
Реакции: defcon и alekwuy

eagleowl

Client
Регистрация
03.11.2012
Сообщения
263
Благодарностей
30
Баллы
28
Запускать консольный exe можно также?
 
  • Спасибо
Реакции: LightWood

darkdiver

Administrator
Команда форума
Регистрация
13.01.2009
Сообщения
2 285
Благодарностей
2 731
Баллы
113
да, без разницы какой exe.
 

eagleowl

Client
Регистрация
03.11.2012
Сообщения
263
Благодарностей
30
Баллы
28
Работает, спасибо!
 

svaminar

Client
Регистрация
21.08.2013
Сообщения
834
Благодарностей
379
Баллы
63
Реально пиздато.
Получилось запустить ярлик.
Спасибо большое
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)