|
|
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Вообщем, нужно запустить на исполнение gbak, приостановить программу на период его исполнения, и дождавшись окончания процесса продолжить. Запускаю так: Код: pascal 1. 2. 3. 4. 5. 6. при этом остановки не происходит, сразу же отрабатывается следующий по ходу оператор, и.т.д., а gbak крутится в другом окне. Как вообще возможно приостановить исполнение кода, пока крутится внешнее окно? Если его контролировать с помощью таймера, то вообще непонятно по какому handle к нему обратится... Может кто что подскажет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 10:49 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 10:52 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
почему именно ShellExecute? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 10:57 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
BorodaOleg Может кто что подскажет? Если есть gbak, то проще api воспользоваться. Там немного больше контроля, чем за окошком следить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 11:06 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
05.12.2019 11:06, wadman пишет: > Если есть gbak, то проще api воспользоваться. Там немного больше > контроля, чем за окошком следить. api запускает процесс на СЕРВЕРЕ. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 11:13 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
https://www.gunsmoker.ru/2015/01/never-use-ShellExecute.html https://www.gunsmoker.ru/2009/07/createprocess.html // Ожидание завершение приложения while WaitforSingleObject(... и т.д.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 11:43 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Мимопроходящийapi запускает процесс на СЕРВЕРЕ. И это получается гораздо быстрее. Хотя, конечно, в нынешней кривоватой реализации локальный файл бэкапа и -v несовместимы. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 13:51 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
BorodaOleg Вообщем, нужно запустить на исполнение gbak, приостановить программу на период его исполнения, и дождавшись окончания процесса продолжить. Запускаю так: Код: pascal 1. 2. 3. 4. 5. 6. при этом остановки не происходит, сразу же отрабатывается следующий по ходу оператор, и.т.д., а gbak крутится в другом окне. Как вообще возможно приостановить исполнение кода, пока крутится внешнее окно? Если его контролировать с помощью таймера, то вообще непонятно по какому handle к нему обратится... Может кто что подскажет? Про *Ex уже написали. А зачем cmd.exe запускать, почему не сразу gbak? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 13:59 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за помощь. ShellExecuteEx подошел по всем параметрам. Вот решение, может кому ещё понадобится: Код: pascal 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. Использовать Pipe и соответственно CreateProcess - не прокатило, так как совершенно непонятной мне причине в этом случае gbak не стартует где-то в 50% случаев, а иногда стартует, но не возвращает лог. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 14:09 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
BorodaOleg, автор 'Файл захвачен другим пользователем'); "всем оставаться на местах" осторожнее... с такими сообщениями :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 14:16 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
решение - говно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 14:17 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Ну вот скажи - нахрена? BorodaOleg Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 14:33 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
05.12.2019 14:33, ёёёёё пишет: > Ну вот скажи - нахрена? я скажу. тупая копи-паста первого попавшегося примера. 90% кода в интернете - говно! Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 14:36 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
sql2012 BorodaOleg, автор'Файл захвачен другим пользователем'); "всем оставаться на местах" осторожнее... с такими сообщениями :) В описаловке так было, копировал не задумываясь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 14:45 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
05.12.2019 14:45, BorodaOleg пишет: > копировал не задумываясь О! Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 14:46 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий 05.12.2019 14:33, ёёёёё пишет: > Ну вот скажи - нахрена? я скажу. тупая копи-паста первого попавшегося примера. 90% кода в интернете - говно! Не знаю, меня удовлетворило. CMD выводит лог опроса, по окончании обработки окно закрывается, визуально видно что копия создана. А насчёт код - говно! Если он работает, и работает так как нужно, то почему он говно? Потому что тебя не устраивает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 14:51 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
05.12.2019 14:51, BorodaOleg пишет: > А насчёт код - говно! > Если он работает, и работает так как нужно, то почему он говно? Потому что тебя не устраивает? воняет же! Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 14:52 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
BorodaOleg, Есть множество граничных случаев. Как этот код поведет себя, если все эти случаи воспроизвести? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 14:52 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий 05.12.2019 14:45, BorodaOleg пишет: > копировал не задумываясь О! Не вырывайте текст из контекста уважаемый Там было сказано - копировал текст описания ошибки не задумываясь, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 14:53 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
X-Cite BorodaOleg, Есть множество граничных случаев. Как этот код поведет себя, если все эти случаи воспроизвести? Пока работает устойчиво, если полезут баги - буду думать что-то ещё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 14:55 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
05.12.2019 14:55, BorodaOleg пишет: > Пока работает устойчиво, если полезут баги - буду думать что-то ещё. не будешь. будешь искать очередное говно-решение. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 14:57 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
BorodaOleg CMD выводит лог опроса, по окончании обработки окно закрывается, визуально видно что копия создана. 1. Что за "лог опроса"? 2. А без cmd.exe - "окно не закрывается", "визуально не видно"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 15:04 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Кстати, может кому интересно, написал процедурку для вызова из консольной программы другой консольной команды. При этом вывод вызываемой команды идет в основную консоль. Код: pascal 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 15:17 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
05.12.2019 15:17, Sinemurius пишет: > вывод вызываемой команды идет в основную консоль. зайчем? (С) Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 15:19 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий 05.12.2019 15:17, Sinemurius пишет: > вывод вызываемой команды идет в основную консоль. зайчем? (С) "Потому что могу!" [spoiler] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 15:20 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий, Ну я же написал: может кому интересно. Вот мне было нужно... Кстати, легко переделать так, чтобы вывод шел куда нибудь в TMemo или еще куда при вызове из ГУИ-шной программы. И да, мне показалось, что это по теме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 15:26 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Sinemurius Вот мне было нужно... Не расскажешь, для чего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 15:27 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
05.12.2019 15:26, Sinemurius пишет: > Вот мне было нужно... а для зачем? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 15:27 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Для консольной программы, которая устанавливает библиотеку в IDE Delphi (для чего вызывает dcc32), устанавливает help для компонентов, перекомпилирует все исходники, демки и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 15:29 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
ёёёёё BorodaOleg CMD выводит лог опроса, по окончании обработки окно закрывается, визуально видно что копия создана. 1. Что за "лог опроса"? 2. А без cmd.exe - "окно не закрывается", "визуально не видно"? 1. Лог опроса - имеется в виду, что gbak выдаёт на экран в процессе компрессии/декомпрессии 2. Без cmd.exe почему-то не находится gbak. Несмотря на то, что я даже этот самый gbak в корень скопировал и маршрут к нему прописал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 15:33 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
05.12.2019 15:29, Sinemurius пишет: > Для консольной программы, которая устанавливает библиотеку в IDE Delphi (для чего вызывает dcc32), > устанавливает help для компонентов, перекомпилирует все исходники, демки и т.д. щас придумал? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 15:34 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
BorodaOleg ёёёёё пропущено... 1. Что за "лог опроса"? 2. А без cmd.exe - "окно не закрывается", "визуально не видно"? 1. Лог опроса - имеется в виду, что gbak выдаёт на экран в процессе компрессии/декомпрессии 2. Без cmd.exe почему-то не находится gbak. Несмотря на то, что я даже этот самый gbak в корень скопировал и маршрут к нему прописал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 15:46 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
BorodaOleg ёёёёё пропущено... 1. Что за "лог опроса"? 2. А без cmd.exe - "окно не закрывается", "визуально не видно"? 1. Лог опроса - имеется в виду, что gbak выдаёт на экран в процессе компрессии/декомпрессии 2. Без cmd.exe почему-то не находится gbak. Несмотря на то, что я даже этот самый gbak в корень скопировал и маршрут к нему прописал Код: pascal 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 15:55 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий, Нет. Это в входит в библиотеку: http://mraven.ru/files/Raven_Link_ver_1_7.zip Но вообще, я в принципе люблю консольные программы. Еще с того момента, когда я писал бухгалтерию на 580 ассемблере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 15:58 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
а вот это CloseHandle(ResultInfo.hThread); зачем? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 15:58 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий а вот это CloseHandle(ResultInfo.hThread); зачем? Это артефакт, местные тараканы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 15:59 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
05.12.2019 15:59, ёёёёё пишет: > > Это артефакт, местные тараканы. оно кстати, кочует по интернетам из FAQа в FAQ... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 16:01 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий 05.12.2019 15:59, ёёёёё пишет: > > Это артефакт, местные тараканы. оно кстати, кочует по интернетам из FAQа в FAQ... Ещё бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 16:02 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий, у нас поддержка win98 совсем недавно прекратилась, там много таких странностей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 16:04 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий а вот это CloseHandle(ResultInfo.hThread); зачем? https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessa Handles in PROCESS_INFORMATION must be closed with CloseHandle when they are no longer needed. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 16:06 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
05.12.2019 16:06, _Vasilisk_ пишет: > А что не так? а то, что ты закрываешь рукоятки дохлого процесса. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 16:09 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий 05.12.2019 16:06, _Vasilisk_ пишет: > А что не так? а то, что ты закрываешь рукоятки дохлого процесса. Сейчас вроде как уже пофиг, разве что мусор в системе остается: https://devblogs.microsoft.com/oldnewthing/?p=38363 А в старых виндах какая-то фигня была. Мы при завершении старательно освобождали все ресурсы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 16:18 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий а то, что ты закрываешь рукоятки дохлого процесса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 16:22 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
05.12.2019 16:22, _Vasilisk_ пишет: > Время жизни хэндлов потока и процесса никак не связано с временем жизни объекта ты их не аллокировал. их отдала тебе винда. при завершении процесса все егойные рукоятки освобождаютя. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 16:29 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
поковырял msdn. у них в примере тоже закрываются рукоятки. https://docs.microsoft.com/ru-ru/windows/win32/procthread/creating-processes ладно, пусть будет. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 16:38 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий ты их не аллокировал. их отдала тебе винда. при завершении процесса все егойные рукоятки освобождаютя. Те, которые созданы (выделены, аллокированы) в том процессе. А эти хендлы, в твоем процессе - будут жить, пока не закроется твой процесс, или до CloseHandle. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 16:41 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий 05.12.2019 16:22, _Vasilisk_ пишет: > Время жизни хэндлов потока и процесса никак не связано с временем жизни объекта ты их не аллокировал. их отдала тебе винда. при завершении процесса все егойные рукоятки освобождаютя. Может быть, какие-то внутренние буфера, которыми ты формально владеешь в результате выполнения CreateProcess(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 16:44 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
05.12.2019 16:41, YuRock пишет: > А эти хендлы, в твоем процессе - будут жить, пока не закроется твой процесс да, логично. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 16:44 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
BorodaOleg А без консоли вывод слабо сделать? незачот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 17:09 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Док, переводить вывод консольных приложений в мемо(и т.п.) чревато искажениями. "Консолька" не всегда лишь просто печатает текст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 17:16 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
05.12.2019 17:16, ёёёёё пишет: > переводить вывод консольных приложений в мемо(и т.п.) чревато искажениями. > "Консолька" не всегда лишь просто печатает текст. gbak этим не страдает. в отличие от dcc32 Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 17:20 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий оно кстати, кочует по интернетам из FAQа в FAQ... ёёёёё Код: pascal 1. 2. Эти комменты тоже так кочуют? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 17:41 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
white_nigger, не, это совсем свежая лажа. А у меня там еще вместо бесконечного ожидания периодическая обработка событий, и еще древний косяк нашелся... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 17:43 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
А, нет, это древнее зло: http://delphirus.com/article32.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 17:51 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Sinemurius Кстати, может кому интересно, написал процедурку для вызова из консольной программы другой консольной команды. При этом вывод вызываемой команды идет в основную консоль. Код: pascal 1. 2. 3. А если прога пишет не в oem, то вывод превратится в тыкву ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 17:52 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Василий 2 А если прога пишет не в oem, то вывод превратится в тыкву Не знаю насчёт проги, но cmd.exe, собака, в консоль пишет в оем, даже если в скрипте есть команда 'chcp 1251' и вывод идёт в ANSI. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 18:26 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
alekcvp Не знаю насчёт проги, но cmd.exe, собака, в консоль пишет в оем, даже если в скрипте есть команда 'chcp 1251' и вывод идёт в ANSI. Там, видимо, тоже прогеры такого типа были, вкорячили безусловный AnsiToOem ))) upd Проверил, всё нормально он пишет. chcp 1251 && cmd /? > outp дает правильную кодировку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 18:59 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Код: pascal 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 23:04 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Василий 2 upd Проверил, всё нормально он пишет. chcp 1251 && cmd /? > outp дает правильную кодировку Я через программное перенаправление вывода брал, хотя может уже забыл чего за давностью, но точно помню что OemToAnsi() вызывать приходилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2019, 23:17 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
a-gulia69 Код: pascal 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2019, 00:47 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
alekcvp Я через программное перенаправление вывода брал, хотя может уже забыл чего за давностью, но точно помню что OemToAnsi() вызывать приходилось. Есть вероятность, что chcp влияет только на вывод в консоль ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2019, 10:52 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Рекомендую вместо интернета чаще в жедаевские либы заглядывать. большинство распространенных проблем там уже решены и достаточно качественно: https://github.com/Makhaon/jcl/blob/4199a5554797359974e48c4abd825a2250980971/jcl/source/windows/JclMiscel.pas#L210 https://github.com/Makhaon/jcl/blob/4199a5554797359974e48c4abd825a2250980971/jcl/source/windows/JclMiscel.pas#L236 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2019, 00:56 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
makhaon Рекомендую вместо интернета чаще в жедаевские либы заглядывать. большинство распространенных проблем там уже решены и достаточно качественно: https://github.com/Makhaon/jcl/blob/4199a5554797359974e48c4abd825a2250980971/jcl/source/windows/JclMiscel.pas#L210 https://github.com/Makhaon/jcl/blob/4199a5554797359974e48c4abd825a2250980971/jcl/source/windows/JclMiscel.pas#L236 Код: pascal 1. 2. 3. Вот за это я не люблю JCL/JVCL. Добавляешь юнит ради 1-2 процедур или компонентов, получаешь +2-3 мегабайта к экзешнику в нагрузку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2019, 18:01 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
alekcvp, можно же аккуратненько выкусить нужное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2019, 19:46 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
ёёёёё alekcvp, можно же аккуратненько выкусить нужное. Ну так о том и речь, что проще свою сделать, чем тянуть этот чемодан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2019, 10:46 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
09.12.2019 10:46, alekcvp пишет: > > Ну так о том и речь, что проще свою сделать, чем тянуть этот чемодан. да ну его нафиг, он же без ручки! Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2019, 12:09 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
alekcvp ёёёёё alekcvp, можно же аккуратненько выкусить нужное. Ну так о том и речь, что проще свою сделать, чем тянуть этот чемодан. Нужная функция вполне автономна, к тому же она 1) уже готова 2) вероятно, протестирована ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2019, 13:44 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
09.12.2019 13:44, Василий 2 пишет: > > Нужная функция вполне автономна, к тому же она > 1) уже готова > 2) вероятно, протестирована а нахрена там WaitForInputIdle(... INFINITE ) перед WaitForSingleObject() ? и почему результат WaitForSingleObject() проверяется на WAIT_OBJECT_0 а не на WAIT_FAILED ? ы? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2019, 13:56 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий а нахрена там WaitForInputIdle(... INFINITE ) перед WaitForSingleObject() ? и почему результат WaitForSingleObject() проверяется на WAIT_OBJECT_0 а не на WAIT_FAILED ? WaitForInputIdle тут лишний - возможно, копипаст или наследие давних времен. Ну а WaitForSingleObject просто запускают, и только в случае успешного завершения с WAIT_OBJECT_0 возвращают код выхода процесса. В остальных случаях просто проваливаются ниже (а что еще делать, если Wait вернула FAILED?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2019, 11:29 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
10.12.2019 11:29, Василий 2 пишет: > > Ну а WaitForSingleObject просто запускают, и только в случае успешного завершения с WAIT_OBJECT_0 возвращают код выхода процесса. не совсем так. WaitForSingleObject не только к процессам применяется - там и мьютексы, и таймеры, и семафоры и т.д. https://docs.microsoft.com/ru-ru/windows/win32/sync/using-mutex-objects по хорошему, нужно делать CASE на результат вызова. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2019, 11:56 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий не совсем так. WaitForSingleObject не только к процессам применяется - там и мьютексы, и таймеры, и семафоры и т.д. https://docs.microsoft.com/ru-ru/windows/win32/sync/using-mutex-objects по хорошему, нужно делать CASE на результат вызова. *чешу в затылке* А это ты к чему вообще? Тут же вызывают для хэндла процесса. И какие варианты возврата вообще могут быть? WAIT_ABANDONED - не применимо, судя по описанию (только для мутексов) WAIT_OBJECT_0 - ОК, штатно завершился. Получить exit code WAIT_TIMEOUT - таймаут, но в данном случае не возникнет, т.к. infinite WAIT_FAILED - а тут вообще хз, что случилось. Лучшее, что можно сделать, это закрыть хэндлы. Да и в остальных случаях, кроме штатного завершения, это единственная мера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2019, 12:22 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
10.12.2019 12:22, Василий 2 пишет: > WAIT_FAILED - а тут вообще хз, что случилось. вот в этом случае как раз имеет смысл таки "спросить" GetLastError, что ж там такое произошло. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2019, 12:26 |
|
||
|
ShellExecute: задержка выполнения программы до отработки внешней программы
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий вот в этом случае как раз имеет смысл таки "спросить" GetLastError, что ж там такое произошло. Согласен, но тут уж функция так сделана, если получили отлуп - так и получили. По-хорошему, если уж им не хотелось кидать исключение, то надо получать lasterror и устанавливать его после CloseHandle (т.к. она обнуляет lasterror) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2019, 14:24 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2038787]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
141ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
100ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 504ms |

| 0 / 0 |
