powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Запуск другого процесса
10 сообщений из 10, страница 1 из 1
Запуск другого процесса
    #39903533
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, нужен совет.
Из своего приложения запускаю графический редактор Paint.Net ( или Word):
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
. . .
WindowState WndSt=0;
. . .
WndSt = App.Current.MainWindow.WindowState;  //-- WndSt <-- текущее состояние окна функционального приложения
. . .
//-- Формируем параметры вызова Paint.net 
startInfo = new ProcessStartInfo();
startInfo.FileName = "" + гп.Paint + "";
startInfo.Arguments = фд_док;
startInfo.WindowStyle = ProcessWindowStyle.Minimized;

//-- Запускаем paint.net
caption = "Работа с эмблемой договора";
using (Process paint = Process.Start(startInfo)) {
  App.Current.MainWindow.WindowState = WindowState.Minimized; //-- Минимизируем функциональное приложение
  startInfo.WindowStyle = ProcessWindowStyle.Normal;
  paint.WaitForExit(); 
}
App.Current.MainWindow.WindowState = WndSt;  //-- Восстановим состояние окна стартового приложения


Между

App.Current.MainWindow.WindowState = WindowState.Minimized; //-- Минимизируем функциональное приложение
и
startInfo.WindowStyle = ProcessWindowStyle.Normal;

"мертвый" экран секунд 8-10. Как показать пользователю, что комп здесь не "висит", а находится в состоянии ожидания?
...
Рейтинг: 0 / 0
Запуск другого процесса
    #39903700
vill_ager
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВМоисеев,

вместо минимизации - модальное окно без кнопки закрытия и с сообщением - "Загружается paint... Для продолжения работы закройте paint"

когда запускаемый процесс загрузится - он закроет собой родительское приложение
...
Рейтинг: 0 / 0
Запуск другого процесса
    #39905044
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>vill_ager, 16 дек 19, 20:15 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1320388&msg=22041559][22041559]
>вместо минимизации - модальное окно …
<статическая картинка модального окна - также не комфортно для пользователя
поступил так -
построил дополнительное приложение для отражения процесса ожидания, содержит:
- изображение звездного неба,
- анимационный файл вращения земли,
- полоску ProgresBar

с "тяжёлым" приложением работаю так:
1. активизирую приложение ожидания
info_Ожидание = new ProcessStartInfo() {FileName = "" + гп.Ожидание + "", Arguments = гп.tm_Запрос.ToString(),
WindowStyle = ProcessWindowStyle.Normal};
p_Ожидание = Process.Start(info_Ожидание); Thread.Sleep(3000);
2. переношу файл с файлового сервера в рабочий каталог клиентского компа
if (гп.blNetworkConnection)
using (new NetworkConnection(гп.uri_ХранилищеДФП, гп.theNetworkCredential)) { изШары_P();} else изШары_P();
3. активизирую "тяжелое" приложение
var info_Paint = new ProcessStartInfo() {FileName = "" + гп.Paint + "", Arguments = фд_док,
WindowStyle = ProcessWindowStyle.Normal};
p_App = Process.Start(info_Paint); Thread.Sleep(7000); //-- Запускаем paint.net
4. работаю с "тяжёлым" приложением
App.Current.MainWindow.WindowState = WindowState.Minimized; //-- Минимизируем функциональное приложение
p_Ожидание.Kill();
p_App.WaitForExit();
App.Current.MainWindow.WindowState = WindowState.Normal;
...
Рейтинг: 0 / 0
Запуск другого процесса
    #39916542
vill_ager
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВМоисеев,
решение не универсальное

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

Основная проблема - не замерзший экран, а выловить момент закрытия файла.
Например - из программы как-то открыли файл в Word,
потом пользователь самостоятельно открывает еще один файл.
Закрывает первый файл, а программа ждет завершения процесса,
ведь в нем все еще открыт второй файл.

+нужно как-то узнать, где этот word или paint лежит, лишняя морока.
Сделал так:
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
try:
	os.startfile(eFileName) #ОС сама выбирает приложение для редактирования
except:
	zzMess(u"Ошибка при запуске приложения для редактирования файла")
else:
	zzWaitShow(u"Ожидание завершения редактирования")#запускаем модальный бегунок, блокирующий нашу программу
	time.sleep(1) #время на запуск приложения и открытие файла
	while True: #пока файл открыт для редактирования 
		zzWaitStep()
		time.sleep(0.5)
		try:
			shutil.copy(eFileName,nFileName) #копируем файл
			os.remove(eFileName) #удаляем исходный
			break #если не было ошибки - редактирование файла завершено
		except:
			pass
	zzWaitClose() #Закрываем бегунок
	#тут можно обрабатывать файл nFileName
...
Рейтинг: 0 / 0
Запуск другого процесса
    #39916552
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>vill_ager, сегодня, 21:05 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1320388&msg=22063319][22063319]
>...решение не универсальное… Основная проблема - не замерзший экран, а выловить момент закрытия файла...
<
У меня несколько другая задача - прикладное приложении открывает word (или paint) для работы с файлом хранилища. Не важно, сколько ещё файлов откроет клиент в word-е, прикладное приложение активизируется вновь только после завершения собственно word, а не закрытия какого то файла в word-е.
...
Рейтинг: 0 / 0
Запуск другого процесса
    #39916562
vill_ager
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВМоисеев,
Думаю что пользователь не сразу сообразит,
почему он не может работать с Вашей программой
после завершения редактирования файла.
Нужно еще догадаться, что нужно закрыть все документы WORD.
...
Рейтинг: 0 / 0
Запуск другого процесса
    #39916591
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>vill_ager, вчера, 22:19 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1320388&msg=22063351][22063351]
>...Нужно еще догадаться, что нужно закрыть все документы WORD.
<
Рабочая инструкция
...
Рейтинг: 0 / 0
Запуск другого процесса
    #39916736
Zmeelov2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Рабочая инструкция
Не имеют. Если имеют - хранят в недоступном месте. Если доступна - не читают. Если читают, то не понимают прочитанное. Если понимают прочитанное - не могут сопоставить действия по инструкции с собственными. Только хардкор - крупная фраза не более чем из пяти слов на весь экран плюс две большие кнопки, все остальное заблокировано. Вот такое ограничение расширит возможности.
...
Рейтинг: 0 / 0
Запуск другого процесса
    #39916812
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Zmeelov2, сегодня, 12:09 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1320388&msg=22063607][22063607]
>Не имеют…
<
У меня несколько иной опыт - пользователи быстро понимают, - для того чтобы сохранить редактируемый документ word в хранилище, нужно закрыть ворд - ибо он работает с локальной копией.
...
Рейтинг: 0 / 0
Запуск другого процесса
    #39916835
Zmeelov2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
У меня несколько иной опыт - пользователи быстро понимают …
Вам повезло, у вас умные пользователи. Большинство встречавшихся в моей практике не поймут, что такое хранилище и локальная копия. Какие-то бессмысленные наборы звуков, похожие на слова. "На компьютере..." А документ это только то, что на бумаге с подписью и печатью. Хотя это брюзжание по большей части.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Запуск другого процесса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]