![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#12
|
||||
|
||||
![]() Для будущих поколений: ссылка к прочтению, и куча инфы о том, как это всё преобразовывать.
Проблема решена. Обязательным условием должно быть то, что lpCommandLine - переменная (write acessable), а не константа. Функцией Код:
UniqueString(CommandLine); Код:
CreateProcessW(nil, PWideChar(CommandLine), nil, nil, false, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, si, pi); Новая проблема: в output и error пусто. ![]() Передаю я ей в качестве CommabdLine следующее: C:\Ruby200\bin\ruby.exe c:/Uni1.rb в Unit1.rb лежит Код:
puts 'hello world' ![]() Проблема тут: Код:
Stream := TMemoryStream.Create; try while true do if ReadFile(hPipeOutputRead, szBuffer, 256, dwNumberOfBytesRead, nil) then Stream.Write(szBuffer, dwNumberOfBytesRead) else break; Stream.Position := 0; Output.LoadFromStream(Stream); finally Stream.Free; end; Внутрь условия не заходит, т.е. ReadFile возвращает False;причина я так думаю всё в тех же Код:
szBuffer: array [0 .. 256] of Char; GetLastError вернул Код:
ERROR_BROKEN_PIPE 109 (0x6D) The pipe has been ended. Разобрался! Ошибка означает, что приложение уже закрылось ![]() Код:
ExecConsoleApp('cmd /K ruby c:/Unit1.rb', Output, error); Последний раз редактировалось Uniq!, 14.04.2013 в 14:08. |