|
Как запустить другое приложение и дождаться его завершения?
|
|||
---|---|---|---|
#18+
Как запустить другое приложение (к примеру IE) и приостановить выполнение программы дожидаясь завершения запущенного приложения? К примеру запускаем нашу прогу MY.exe, она открывает IE c адресом google.com делаем что нам необходимо, закрываем IE. После закрытия my.exe открывает к примеру блокнот. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2010, 16:50 |
|
Как запустить другое приложение и дождаться его завершения?
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2010, 17:01 |
|
Как запустить другое приложение и дождаться его завершения?
|
|||
---|---|---|---|
#18+
Э,....я по жизни использую другую функцию: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Что мне в ней последнее время перестало нравиться (типа стал обращать внимание на такие "мелочи"): пока она работает, грузит процессор на 50%. Что не понравилось в вашей. Как-то странно она работает. Ощущение, что подтормаживает при старте. И очень плохое ощущение из-за песочных часиков кот. достают, эдакий вирус за кадром чегой-то делает. Но процессор практически не грузит. Т.е. визуально "моя" мне нравится больше. Но 50% мне последнее время оч. не нравится, т.к. использую свою в серьезной проге где ресурсов много нужно совсем не на эти игрушки. Как быть? Скорее всего DoEvents=>50%, но чем заменить. Заменить по ходу можно простым VB-таймером, но надо бы чтоб это была ф-ция а не чудо-конструкция. М.б. можно таймер на ходу создать внутри ф-ции, но как быть с его Timer_Timer. Всякие API-Sleep использовать панически боюсь, т.к. эффект для всей системы может быть непредсказуем (проверено, больше не хочу)... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2010, 23:31 |
|
Как запустить другое приложение и дождаться его завершения?
|
|||
---|---|---|---|
#18+
Дмитрий77Всякие API-Sleep использовать панически боюсь, т.к. эффект для всей системы может быть непредсказуем (проверено, больше не хочу)... А SetTimer/KillTimer тоже к ним относится? В теме про дропдаун такая конструкция активно используется, тьфу-тьфу, вроде работает... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2010, 23:57 |
|
Как запустить другое приложение и дождаться его завершения?
|
|||
---|---|---|---|
#18+
Shocker.ProА SetTimer/KillTimer тоже к ним относится? Ну это код как минимум видеть надо. По поводу Sleep: у меня инсталлер запускает сишное приложение. Это сишное приложение устанавливает драйвера устройств и отслеживает конец этой установки, чтоб не двигаться дальше раньше времени. А т.к. установка драйверов это plug and play, личное дело OS, то приложение это очевидно не умеет отловить конец установки напрямую и видимо само использует ф-ции подобные описанным выше. Если предварительно запустить в VB Sleep, то вышеуказанное C-шное приложение будет сбито с толку и выйдет раньше, чем драйвера установятся. Ничего при этом не сломается, но гармония будет слегка нарушена. Поэтому Sleep-ов нам не надо. Sleep это достаточно опасная игра с OS и на сайте Microsoft в описании Sleep есть об этом предупреждение. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2010, 00:56 |
|
Как запустить другое приложение и дождаться его завершения?
|
|||
---|---|---|---|
#18+
Некоторым плагиатом (накатал как говорится на скору руку), кот. можно с осторожностью использовать, будет следующая комбинация: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2010, 01:01 |
|
Как запустить другое приложение и дождаться его завершения?
|
|||
---|---|---|---|
#18+
Дмитрий77Shocker.ProА SetTimer/KillTimer тоже к ним относится? Ну это код как минимум видеть надо. вот тут 9467398 , если интересно ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2010, 01:04 |
|
Как запустить другое приложение и дождаться его завершения?
|
|||
---|---|---|---|
#18+
Shocker.Pro, как то все там хитро и наворочено, но ощущения подсказывают что будет что-то типа окультуренного варианта, что я привел чуть выше, не претендующего однако на общность, что дают ShellAndContinue или ExecuteAndWait, т.е. стартовать-ждать-продолжить. Может я чего-нибудь не понял, но тогда надо вникать-разжевываться. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2010, 02:09 |
|
Как запустить другое приложение и дождаться его завершения?
|
|||
---|---|---|---|
#18+
> Автор: Konst_One > CloseHandle (proc.hProcess) Здесь ещё нужно закрывать хендл тренда Код: plaintext
обработка множества файлов в режиме 24/7 и отдельным процессом запускаелся архиватор, по прошествии какого-то времени(порядка дня) у системы заканчивались ресурсы. когда выгружал свою программу, ресурсы сразу освобождались. Т.е. раз в день приходилось перезапускать программу. В результате выяснилось что не закрывался хендл рабочего потока. > Автор: Дмитрий77 > Т.е. визуально "моя" мне нравится больше. Но 50% мне последнее время оч. не нравится, т.к. использую свою в > серьезной проге где ресурсов много нужно совсем не на эти игрушки. У Кости "идеологически" правильная функция и правильней пользоватся ей. + в том, что - стартонуть новый процесс можно под другой учетной записью, - переназначить StdIn, StdOut, StdErr и ловить вывод работы и что-то подавать на вход запускаемой программы. т.е. организовать интерактивность :) Хотя в свою, ты можешь поставить вместо цикла ожидания функцию ожиданя освобождения хендла: Код: plaintext 1. 2. 3.
> Что не понравилось в вашей. Как-то странно она работает. Ощущение, что подтормаживает при старте. И очень плохое > ощущение из-за песочных часиков кот. достают, эдакий вирус за кадром чегой-то делает. Но процессор практически не > грузит. В твоей функции вызов CreateProcessA закамуфлирован вызовом Shell. Возможно там есть какая-то оптимизация, которая позволяет быстрее отрабатывать. :) Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2010, 11:17 |
|
Как запустить другое приложение и дождаться его завершения?
|
|||
---|---|---|---|
#18+
Игорь ГорбоносХотя в свою, ты можешь поставить вместо цикла ожидания функцию ожиданя освобождения хендла:Вчера еще пробовал,не работает. Попробовал сейчас еще раз: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2010, 12:04 |
|
Как запустить другое приложение и дождаться его завершения?
|
|||
---|---|---|---|
#18+
> Автор: Дмитрий77 > Msgbox вылезает сразу, как запускается блокнот. Где подвох? Подвох в том, что гранаты у тебя не той конструкции :) Попробуй так: Код: plaintext
Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2010, 12:26 |
|
Как запустить другое приложение и дождаться его завершения?
|
|||
---|---|---|---|
#18+
Игорь ГорбоносПопробуй так: Код: plaintext
Видимо от этого всякие "песочные часики", но это надо проверять в контексте. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2010, 13:35 |
|
Как запустить другое приложение и дождаться его завершения?
|
|||
---|---|---|---|
#18+
INFINITE как раз и означает ждать до завершения. а то , что вы хотите , это совсем другое и называется запуск в фоновом режиме, вам надо копать в сторону отлова событий завершения чужого процесса, но смысла во всём этом я вообще не вижу. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2010, 14:18 |
|
Как запустить другое приложение и дождаться его завершения?
|
|||
---|---|---|---|
#18+
Konst_One, Смысл некоторый есть, т.к. я это частенько использую для запуска системных процессов, которые надо подождать (напр. запуск/остановка службы, запуск командного приложения, в инсталляторе). Если использовать ваш метод WaitForSingleObject, то в нек. частных случаях он м.б. и сойдет с нек.оговорками типа песочных часиков, но в более критических приложение просто станет и все... Мой "родной" ShellAndContinue как раз более устойчив в этом плане, загрузка процессора от DoEvents 50%(не 100 потому что Dual) на самом деле липовая ==бездействие системы. Но тем не менее сие может пугать умного (но не очень) юзера коих большинство и что хуже может (как вычитал) приводить к сбоям в "спецфункциях" компьютера, типа контроль температуры процессора и всякая прочая лабуда. кот. эти самые умные (но не очень) юзеры типа ценят. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2010, 15:21 |
|
Как запустить другое приложение и дождаться его завершения?
|
|||
---|---|---|---|
#18+
> Автор: Дмитрий77 Тогда может имеет смысл посмотреть на такой подход? Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2010, 16:00 |
|
Как запустить другое приложение и дождаться его завершения?
|
|||
---|---|---|---|
#18+
Добрый день,уважаемые форумчане! Хочу поднять еще раз эту тему вот в каком аспекте: Функция отслеживания замечательная, но вот у меня никак не получается задать параметр START.wShowWindow, чтобы не появлялось окна запускаемой программы. Вот что делаю: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92.
Подскажите в чем моя ошибка? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2013, 09:49 |
|
Как запустить другое приложение и дождаться его завершения?
|
|||
---|---|---|---|
#18+
Alex_men, а кажется понял не указал dwFlags. Пошел читать дальше про определение этого параметра ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2013, 09:55 |
|
Как запустить другое приложение и дождаться его завершения?
|
|||
---|---|---|---|
#18+
Alex_men, Извините за беспокойство вопрос снят. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2013, 09:59 |
|
Как запустить другое приложение и дождаться его завершения?
|
|||
---|---|---|---|
#18+
32sashaКак запустить другое приложение (к примеру IE) и приостановить выполнение программы дожидаясь завершения запущенного приложения? К примеру запускаем нашу прогу MY.exe, она открывает IE c адресом google.com делаем что нам необходимо, закрываем IE. После закрытия my.exe открывает к примеру блокнот.Простой вариант Код: vbnet 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2013, 14:36 |
|
|
start [/forum/topic.php?fid=60&msg=36991247&tid=2157183]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 314ms |
total: | 440ms |
0 / 0 |