tag:blogger.com,1999:blog-1702873441071265539.post5789450435632835544..comments2023-05-29T19:02:20.570+03:00Comments on Блог GunSmoker-а: Когда CreateProcess завершается с ошибкой ERROR_SUCCESSGunSmokerhttp://www.blogger.com/profile/15611696588191431330noreply@blogger.comBlogger14125tag:blogger.com,1999:blog-1702873441071265539.post-24459367001870379382020-07-28T16:33:15.504+03:002020-07-28T16:33:15.504+03:00Я сейчас уже не вспомню, в каком окружении это был...Я сейчас уже не вспомню, в каком окружении это было.<br /><br />> Может в "Простая обёртка к CreateProcess, функция-обёртка WinExec" следует поменять SetLastError(ERROR_INVALID_PARAMETER) на SetLastError(ERROR_DIRECTORY), для соответствия?<br /><br />Нет, ведь это сделано для "всех прочих, непредусмотренных ситуаций". Т.е. не факт, что именно для этой ситуации. Она - просто одна из возможных (да, она единственная известная мне, но сути это не меняет).GunSmokerhttps://www.blogger.com/profile/15611696588191431330noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-81295184601016304522020-07-28T15:46:23.349+03:002020-07-28T15:46:23.349+03:00Да, видимо они подправили.
Delphi 7 на Windows 10 ...Да, видимо они подправили.<br />Delphi 7 на Windows 10 x64 - при указании несуществующего каталога в lpCurrentDirectory ошибка ERROR_DIRECTORY (The directory name is invalid, == 267).<br />Может в "Простая обёртка к CreateProcess, функция-обёртка WinExec" следует поменять SetLastError(ERROR_INVALID_PARAMETER) на SetLastError(ERROR_DIRECTORY), для соответствия?<br />Хотя зачем там вообще что-либо - там ведь ни в каком виде не предусмотрено указание lpCurrentDirectory, оно прописано строго как "nil".Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-54361328170692602252017-01-14T18:21:15.924+03:002017-01-14T18:21:15.924+03:00Windows 7 с почти последними обновами + Delphi XE2...Windows 7 с почти последними обновами + Delphi XE2.<br />"SetLastError(ERROR_INVALID_PARAMETER);" не ставил.<br />И получаю такой код ошибки:<br />0x0000010B - Неверно задано имя папкиAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-59409285782893898092016-12-09T22:43:29.701+03:002016-12-09T22:43:29.701+03:00Ну так в том коде по ссылке в переменной записана ...Ну так в том коде по ссылке в переменной записана константа: строковый литерал 'что-то-там'. Это область памяти read only. Когда CreateProcess в неё попробует записать - получит отлуп в виде Access Violation.GunSmokerhttps://www.blogger.com/profile/15611696588191431330noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-78756459681707999602016-12-09T22:38:32.886+03:002016-12-09T22:38:32.886+03:00Эээ... я полагал, что передаю переменную, а не кон...Эээ... я полагал, что передаю переменную, а не константу. UniqueString сделал, все завелось, большое спасибо! =)) Но в чем ошибка была я так и не понял.Agat330noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-74459167631487852016-12-09T20:26:46.897+03:002016-12-09T20:26:46.897+03:00Цитирую: "Второй параметр не может быть конст...Цитирую: "Второй параметр не может быть константой".<br /><br />UniqueString своему CmdLine сделайте.GunSmokerhttps://www.blogger.com/profile/15611696588191431330noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-83918295680513483242016-12-09T18:48:32.752+03:002016-12-09T18:48:32.752+03:00Прошу прощения за некропостинг, но возникла вот та...Прошу прощения за некропостинг, но возникла вот такая проблема, не могу понять, почему код не работает.<br />http://www.cyberforum.ru/delphi-winapi/thread1872690.htmlAgat330noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-54071139126322037002015-07-23T21:32:20.710+03:002015-07-23T21:32:20.710+03:00Автор не совсем прав https://msdn.microsoft.com/en...Автор не совсем прав https://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspxAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-53076579955333481142015-02-07T14:38:06.493+03:002015-02-07T14:38:06.493+03:00"Блог умер. Пичаль... "
Да, вроде как н..."Блог умер. Пичаль... "<br /><br />Да, вроде как нет. Но автор почти год был сильно занят на других проектах и новых статей не выходило. При том, что у автора невероятно высокий уровень статей можно понять причину такой задержки. На написание каждой статья тратится огромное количество времени и усилий.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-24394701360567521432014-12-13T17:38:52.832+03:002014-12-13T17:38:52.832+03:00Блог умер. Пичаль...Блог умер. Пичаль...Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-77910823618351651692014-04-11T13:06:36.298+04:002014-04-11T13:06:36.298+04:00А что случилось с EurekaLog ? Проект живой или нет...А что случилось с EurekaLog ? Проект живой или нет ?Anonymoushttps://www.blogger.com/profile/15115754511380410710noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-8109228328157080292014-03-13T03:53:14.284+04:002014-03-13T03:53:14.284+04:00Потому что операторы перенаправления вывода - это ...Потому что <a href="http://www.transl-gunsmoker.ru/2014/03/command-line-redirection-command-line-interpreter.html" rel="nofollow">операторы перенаправления вывода - это функция командного интерпретатора</a>.<br /><br />Если вы хотите запустить консольную программу и получить в переменную её вывод, то вам нужно использовать перенаправление вывода. Это можно сделать двумя способами. <br /><br />Способ первый описан по ссылке (использовать операторы перенаправления) - не самый красивый способ, т.к. включает в себя "лишний" файл. Но зато очень простой. <br /><br />Способ второй - использовать <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms686331(v=vs.85).aspx" rel="nofollow">перенаправление вывода, предоставляемое самой функцией CreateProcess</a> (см. поля hStdInput и hStdOutput). Это сложнее, но более правильно: вывод попадает к вам напрямую, минуя промежуточный файл. Не сложно найти в интернете и пример - по ключевым словам "delphi перенаправление вывода".GunSmokerhttps://www.blogger.com/profile/15611696588191431330noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-49949192216341643922014-03-12T22:08:40.771+04:002014-03-12T22:08:40.771+04:00подскажите пожалуйста, почему не работает такой ва...подскажите пожалуйста, почему не работает такой вариант: <br />CreateProcess(nil, 'ping -a 11.111.12.38 > D:\file.txt', 0, 0, false, CREATE_NO_WINDOW, 0, 0, SI, PI), выдает ошибку: неверный параметр >. А вариант CreateProcess(nil, 'ping -a 11.111.12.38', 0, 0, false, CREATE_NO_WINDOW, 0, 0, SI, PI) работаетМаратnoreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-71450649907960020332014-03-06T12:00:20.157+04:002014-03-06T12:00:20.157+04:00С этой проблемой я столкнулся, когда перешел с D6 ...С этой проблемой я столкнулся, когда перешел с D6 на D2010, и достаточно быстро решил ее аналогичным способом. На D6 сей проблемный эффект у меня не наблюдался.Anonymousnoreply@blogger.com