Процедура КомандаСистемы() без отображения окна командного интерпритатора

ProxyInspector 53 2 3

При решении различных задач программирования 1С, иногда возникает необходимость выполнения программ операционной системы. Для этого используются функции 1С КомандаСистемы() или ЗапуститьПриложение(). Однако при выполнении этих команд видно открытие окна командного интерпритатора. При периодичном вызове этих процедур это создает мерзкое впечатление. Используя WshShell, эту проблему можно обойти.

Процедура КомандаСистемыWshShell(Команда, ИмяКаталога = "", ЗакрыватьОкно = Истина, ПоказыватьОкно = Ложь, ОжидатьЗавершения = Истина)	
	//В командной строке можно выполнить несколько команд
	//В этом случае команды отделяются " && "
	
	Отладка = Ложь;
	Если Отладка = Истина Тогда
		ЗакрыватьОкно = Ложь; 
		ПоказыватьОкно = Истина;
	КонецЕСли;
	
	WshShell = Новый COMОбъект("WScript.Shell");

	СтрокаКоманды = Команда;
	Если ЗначениеЗаполнено(ИмяКаталога) Тогда
		МассивПодстрок = СтрРазделить(ИмяКаталога, ":\",Ложь);
		Если МассивПодстрок.Количество() = 2 Тогда
			ИмяДиска = МассивПодстрок.Получить(0)+":";
			КомандаСменитьКаталог = " "+ИмяДиска + " && " + " cd " + ИмяКаталога;
			
			СтрокаКоманды = КомандаСменитьКаталог + " && " + СтрокаКоманды;
		КонецЕСли;
	КонецЕсли;
	
	Если ЗакрыватьОкно = Истина Тогда
		СтрокаКоманды = "cmd /c "+СтрокаКоманды;
	Иначе
		СтрокаКоманды = "cmd /k "+СтрокаКоманды;
	КонецЕСли;
	
	//Запустить командный Интерпритатор, установить каталог по умолчанию, запустить программу, закрыть Окно интерпритатора (ключ /с)
	//     cmd /c c: && cd c:\OpenSSL && OpenSSL.exe
	//
	//Запустить командный Интерпритатор, использовать каталог по умолчанию, запустить программу, НЕ закрывать Окно интерпритатора (ключ /k)
	//     cmd /k OpenSSL.exe
	//
	
	Если ПоказыватьОкно = Истина Тогда
		WshShell.Run(СтрокаКоманды, 1,ОжидатьЗавершения);
	Иначе
		WshShell.Run(СтрокаКоманды, 0,ОжидатьЗавершения);
	КонецЕСли;
	
КонецПроцедуры

Процедура ПодписатьOpenSSL()
	
	ИмяКаталога 			= "c:\OpenSSL";
	ИмяФайлаДляПодписания 	= "Тест.txt";
	ИмяФайлаПодписано 		= "Sign.txt";
	ИмяФайлаПриватногоКлюча = "Server.key";

	СтрокаКоманды = "openssl.exe dgst -sha256 -sign "+ИмяФайлаПриватногоКлюча+" -out "+ИмяФайлаПодписано+" " + ИмяФайлаДляПодписания;	
	
	ЗакрыватьОкно = Истина;
	ПоказыватьОкно = Ложь;
	ОжидатьЗавершениеКоманды = Истина;
	
	КомандаСистемыWshShell(СтрокаКоманды,ИмяКаталога, ЗакрыватьОкно, ПоказыватьОкно, ОжидатьЗавершениеКоманды);
	
КонецПроцедуры
1
{6} Условие всегда Ложь
Орфографическая ошибка в интерпритатора (найдено 4): интерпритатора
Орфографическая ошибка в Интерпритатор (найдено 2): Интерпритатор
Орфографическая ошибка в openssl: openssl
Орфографическая ошибка в dgst: dgst

Комментарии

См. также

ПоследняяВерсияОтображенияИзмененийСистемы (БСП)

ДействияПриНачалеРаботыСистемыВИнтеграционнойПроцедуре (БСП)

ПриНачалеРаботыСистемы (БСП)

ОткрытьОкно (БСП)

ДобавитьИзФайловойСистемыБезРасширенияПослеЗагрузкиФайла (БСП)

ДействияПриНачалеРаботыСистемыОбработкаЗавершения (БСП)

ДействияПередЗавершениемРаботыСистемы (БСП)

ДействияПередНачаломРаботыСистемыВИнтеграционнойПроцедуре (БСП)

Модератору