|
Перезапуск приложения.
|
|||
---|---|---|---|
#18+
Требуется закрыть приложение и запустить его вновь с новым документом. Пытаюсь сделать это через: Код: vbnet 1. 2.
Процесс убивается на ура, а вот заново не запускается. Видимо taskkill.exe убивает и запускаемый процесс. Вероятно надо остановить выполнение taskkill.exe , но вот как это сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2017, 23:05 |
|
Перезапуск приложения.
|
|||
---|---|---|---|
#18+
Shell запускается асинхронно. Так что нужно либо дождаться завершения первого вызова функции, и только потом делать второй, либо использовать синхронные методы запуска дочернего процесса. Простейшим вариантом вижу цепное выполнение команд: Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2017, 23:18 |
|
Перезапуск приложения.
|
|||
---|---|---|---|
#18+
Akina... Простейшим вариантом вижу цепное выполнение команд: Код: vbnet 1.
Не сработало. На секунду вспыхивает командная строка и все, тишина. :( ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2017, 23:39 |
|
Перезапуск приложения.
|
|||
---|---|---|---|
#18+
Ну добавьте CMD /c. А ещё лучше CMD /k - чтобы увидеть, что происходит... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2017, 00:12 |
|
Перезапуск приложения.
|
|||
---|---|---|---|
#18+
AkinaНу добавьте CMD /c. А ещё лучше CMD /k - чтобы увидеть, что происходит... Извиняюсь за бестактный вопрос. Куда добавить? CorelDRAW VBA такого не понимает. (вроде) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2017, 00:23 |
|
Перезапуск приложения.
|
|||
---|---|---|---|
#18+
DryundelCorelDRAW VBAТа-а-ак... Правила раздела поди не читал, да? пункт первый... Чего мы ещё не знаем? DryundelКуда добавить? В строку запуска, ясен пень. Один оператор-то, вроде как мест, куда добавлять, явно меньше, чем три, а два варианта можно было и, не спрашивая, попробовать... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2017, 18:47 |
|
Перезапуск приложения.
|
|||
---|---|---|---|
#18+
AkinaТа-а-ак... Правила раздела поди не читал, да? пункт первый... Да, не досмотрел. Извиняюсь. Больше не буду. Если данный вопрос нарушает правила не очень сильно, пожалуйста помогите. AkinaВ строку запуска, ясен пень. Один оператор-то, вроде как мест, куда добавлять, явно меньше, чем три, а два варианта можно было и, не спрашивая, попробовать... Попробовал. Вот что пишет: Видимо не нравится путь к приложению с пробелами. Код: vbnet 1.
Но как теперь это исправить? Дополнительные кавычки не катят (ошибку выдает) скобки тоже не принимает. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2017, 02:22 |
|
Перезапуск приложения.
|
|||
---|---|---|---|
#18+
DryundelДополнительные кавычки не катят Чтобы в строковый литерал вставить двойную кавычку, её надо удвоить. Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2017, 07:54 |
|
Перезапуск приложения.
|
|||
---|---|---|---|
#18+
Вау! Заработало! Спасибо большое. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2017, 11:18 |
|
Перезапуск приложения.
|
|||
---|---|---|---|
#18+
DryundelВау! Заработало! Спасибо большое. Рано радовался. Без CMD работать отказывается а с CMD /c командная строка сама не закрывается, а висит пока не закроешь запущенное приложение. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2017, 12:26 |
|
Перезапуск приложения.
|
|||
---|---|---|---|
#18+
Замени вторую команду, добавь start. Тогда app.exe запустится в новом потоке, а окно консоли закроется. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2017, 13:31 |
|
Перезапуск приложения.
|
|||
---|---|---|---|
#18+
AkinaЗамени вторую команду, добавь start. Тогда app.exe запустится в новом потоке, а окно консоли закроется. Не работает с командой start. Запуск приложения, тот, что в двойных кавычках игнорируется. Исполняется только следующая часть команды (C:\Wrem\1.cmx), а она открывает указанный файл в родном (ассоциированном приложении), чего совсем не требуется. Сейчас строка выглядит так: Код: vbnet 1.
Как бы ее поправить что бы файл 1.cmx открывался в приложении app.exe ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2017, 21:30 |
|
Перезапуск приложения.
|
|||
---|---|---|---|
#18+
Может, надо всё-таки попросить справку по команде start? и подумать - в качестве какого параметра воспринимается имя исполняемого файла, обрамлённое кавычками... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2017, 21:34 |
|
Перезапуск приложения.
|
|||
---|---|---|---|
#18+
AkinaМожет, надо всё-таки попросить справку по команде start? и подумать - в качестве какого параметра воспринимается имя исполняемого файла, обрамлённое кавычками... Да, спасибо что ткнули носом. :) Разобрался Сделал так: Код: vbnet 1.
Все вроде как бы заработало, но снова проблема . Вероятно, т.к. app.exe открывается в новом потоке, то запуск не дожидается закрытия ранее открытого. Дело в том, что хасп подхватывает только один экземпляр приложения, поэтому дубль открывается в режиме демо. Именно по этой причине мне и требовалось сначала закрыть открытое приложение, а только потом запустить заново. Без start-а все было ок, не устраивала повисшая командная строка. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2017, 22:57 |
|
Перезапуск приложения.
|
|||
---|---|---|---|
#18+
Это происходит в VB/VBA? Тогда оставьте две команды, а между ними вставьте код получения информации о запущенном приложении в цикле. Условие завершения цикла - приложение не найдено в списке исполняемых. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2017, 07:54 |
|
Перезапуск приложения.
|
|||
---|---|---|---|
#18+
AkinaЭто происходит в VB/VBA? Тогда оставьте две команды, а между ними вставьте код получения информации о запущенном приложении в цикле. Условие завершения цикла - приложение не найдено в списке исполняемых. А можно это как то по проще. Поясните пожалуйста. Я не волшебник, а только учусь. Да, это VBA. Как хоть примерно выглядит такой код? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2017, 09:40 |
|
Перезапуск приложения.
|
|||
---|---|---|---|
#18+
Давайте не будем спешить. Сначала немного расскажите про это самое app.exe. Почему его надо выгружать именно taskkill-ом, да ещё форсить? оно что, не умеет само закрываться? да, оно на самом деле app.exe? а то тут что-то было говорено про Hasp... если речь идёт о штатном сервере ключа, то он прекрасно умеет выгружаться и даже емнип перестартовывать самостоятельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2017, 09:57 |
|
Перезапуск приложения.
|
|||
---|---|---|---|
#18+
AkinaДавайте не будем спешить. Сначала немного расскажите про это самое app.exe. Почему его надо выгружать именно taskkill-ом, да ещё форсить? оно что, не умеет само закрываться? да, оно на самом деле app.exe? а то тут что-то было говорено про Hasp... если речь идёт о штатном сервере ключа, то он прекрасно умеет выгружаться и даже емнип перестартовывать самостоятельно. Да, оно на самом деле app.exe и закрываться само оно тоже умеет. Но суть в том, что приложение запускаемое app.exe это не весь процесс. В нем запускаются дочерние приложения типа app2.exe в котором еще свои подпроцессы, и если закрыть app.exe нормальным способом, то и все дочерние процессы тоже захлопнутся, а на очередной запуск требуется время. Программа серьезная. Выгружая taskkill-ом мы не трогаем дочерние процессы, которые легко подхватываются вновь запущеным app.exe. Под Hasp-ом я имею в виду эмулятор ключа который всегда висит в процессах, он не выгружается и не перезапускается, но может подхватывать только один запускаемый app.exe и один app2.exe. Как оно работает я очень слабо представляю, если не сказать большего. Общая суть макроса в том, чтобы взять объект из одного приложения (в моем случае это CorelDRAW) сохранить его в промежуточном формате *.cmx , а потом открыть этот файл другим приложением app.exe (в моем случае это FlexiSIGN) Лучше если app.exe уже был запущен и при выгрузке его taskkill-ом новый запуск вместе с открытием файла занимает секунды. Наверное потому, что какие то субпроцессы еще висят. (это мои домыслы). Но существует вариант когда app.exe еще не запускался, поэтому в "цепочке" я использую "&" вместо "&&" В последнем варианте: Код: vbnet 1.
Как я уже писал Hasp не подцепляет app.exe видимо потому, что предыдущий дубль еще не успел выгрузится. Пробовал вставить в цепочку TIMEOUT на 3 секуны, тогда вроде все начинает работать, однако вылезает другая неприятность - перестает работать vbNormalFocus. Фокус остается на исходном приложении, а app.exe запускается в свернутом виде (значок на панели задач). И потом, TIMEOUT 3 секуны вероятно не на всех машинах будет проходить, а заведомо выставлять его 10 секунд тоже как то не комильфо. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2017, 13:13 |
|
Перезапуск приложения.
|
|||
---|---|---|---|
#18+
Идеальным вариантом было бы вообще не выгружать app.exe, а открыть файл в новом окне этого приложения, но как это организовать, я вообще не представляю, да и файл надо экспортировать из исходного приложения (в моем случае CorelDRAW) с каким то переменным именем или исходным, а потом убивать дабы не создавать растущего архива. В противном случае app.exe отказывается открывать одноименный файл, считая что он уже открыт. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2017, 13:23 |
|
|
start [/forum/topic.php?fid=60&msg=39410258&tid=2155317]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 315ms |
total: | 465ms |
0 / 0 |