1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Занятная проблемка :)

Тема в разделе "Apple Shake", создана пользователем -, 7 фев 2006.

Модераторы: Григорий Чаленко
  1. Guest

    Нужно перехватить консольный вывод из Shake for Win. Грубо говоря сграбастать StdOut и засовать в пайп, в файл или в сокет, начхать.
    Запускаю Shake через CreateProcess, ловлю хэндл, присваиваю хендл hStdOutput в файло, а там пусто :) Куда эта зараза пишет STDOUT???!!! :))) Даже если просто в консоли попробовать перенаправить вывод в файл (типа shake.... > blabla.txt), то всё равно не пашет.

    Мужики, может есть на этот счёт какие мысли? Если допишу хрень, для которой это необходимо, обещаю поделиться со всеми :)
     
  2. Guest

    Оно пишет в stderr.

    PS: Ловлю на слове ;)
     
  3. Guest

    Саня, Родина тебя не забудет!!!
    Правда мну не совсем понятна, на хрена это дело совать в StdErr, а как-же кхультура программирования, фсякие там "юних-вэй" и иже с ним? Гы гы гы.
    Для фсех интиресующихся привожу пример того, что я выгрыз из StartupInfo.hStdError Шейка :)

    info: rendering frame 1

    info: processing: 8%
    info: processing: 16%
    info: processing: 24%
    info: processing: 32%
    info: processing: 40%
    info: processing: 47%
    info: processing: 55%
    info: processing: 63%
    info: processing: 71%
    info: processing: 79%
    info: processing: 86%
    info: processing: 94%
    info: processing: 100%
    info: frame 1 rendered in 3.281s
    info: rendering frame 2

    info: processing: 8%
    info: processing: 16%
    info: processing: 24%
    info: processing: 32%
    info: processing: 40%
    info: processing: 47%
    info: processing: 55%
    info: processing: 63%
    info: processing: 71%
    info: processing: 79%
    info: processing: 86%
    info: processing: 94%
    info: processing: 100%
    info: frame 2 rendered in 3.188s
     
  4. aka_tt

    aka_tt Активный участник

    С нами с:
    22.04.2005
    Сообщения:
    93
    Симпатии:
    0
    Баллы:
    5
    я таки не понял как ловить шейковый консольный вывод. я тож ловил второй поток но при этом шейк у меня почему то не рендерил.. :(
    анпишите плз пример командной строки?
     
  5. Guest

    Могу тока сорц на Паскале :)
     
  6. Guest

    {Execution of Application}
    function ExecApplic: boolean;
    var
    param : string;
    t : PAnsiChar;
    buff: ARRAY [0..127] OF Char;
    prHandle : hWnd;
    StartEn : boolean;
    SecAtrtrs: TSecurityAttributes;
    hOut: THandle;
    dw: DWord;
    begin
    with SecAtrtrs do
    begin
    nLength := SizeOf(TSecurityAttributes);
    lpSecurityDescriptor := nil;
    bInheritHandle := true; //Наследуем рукоятку
    end;
    param := TaskName;
    hOut := CreateFile('shakeout.txt', GENERIC_WRITE, 0, @SecAtrtrs, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
    if (hOut = INVALID_HANDLE_VALUE) then RaiseLastWin32Error;
    //---------------------------------------
    //CreatePipe(StartupInfo.hStdError, hOut, @SecAtrtrs, 0);
    FillChar(StartupInfo, Sizeof(StartupInfo), #0);
    StartupInfo.cb := Sizeof(StartupInfo);
    StartupInfo.dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
    StartupInfo.wShowWindow := SW_HIDE; // Состояние окна запущенного приложения
    StartupInfo.hStdError := hOut; // Перехват StdError, мммм, НАДО ПОСТАВИТЬ ФЛАГ, ЧТО ЭТО ТОКА ДЛЯ ШАКИ!!!
    // <= Без этого приложение не стартует
    StartEn := CreateProcess(nil,
    PChar(param), { указатель командной строки }
    nil, { указатель на процесс атрибутов безопасности }
    nil, { указатель на поток атрибутов безопасности }
    true, { флаг родительского обработчика }
    CREATE_NEW_CONSOLE or { флаг создания }
    NORMAL_PRIORITY_CLASS,
    nil, { указатель на новую среду процесса }
    nil, { указатель на имя текущей директории }
    StartupInfo, { указатель на STARTUPINFO }
    ProcessInfo); { указатель на PROCESS_INF }
    //-----------------------------------------
    WaitforSingleObject(ProcessInfo.hProcess, INFINITE);
    Win32Check(CloseHandle(hOut));
    end;
     
  7. Guest

    Ключевая фигня вотъ ента
    StartupInfo.hStdError := hOut;
    То есть присобачивание рукоятки StdError рукоятке файла.

    Насколько мне известно стандартными средствами консоли Виндовоза перехватить StdError не получится.
     
  8. Sagroth

    Sagroth Пользователь сайта

    С нами с:
    26.07.2006
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    2
    Пардон, я не очень понимаю ваши code-игры, объясните пс-та, а чем не подходит в данном случае флаг vv?

    shake -vv -exec script.shk
     
  9. Константин Харитонов

    Константин Харитонов Мастер

    С нами с:
    20.04.2005
    Сообщения:
    23
    Симпатии:
    0
    Баллы:
    102
    >Насколько мне известно стандартными средствами консоли Виндовоза перехватить StdError не получится.
    Это бред, все обезательно получисться главное постораться!
    (можно ловить и stdout и stderror хоть оба за раз)
    Сори если глупый вопрос, а что за задача в целом, ну или хотябы чуть более практический смылс ?
     
  10. aka_tt

    aka_tt Активный участник

    С нами с:
    22.04.2005
    Сообщения:
    93
    Симпатии:
    0
    Баллы:
    5
    не знаю кому как а мне лог рендеринга смареть.
     
  11. Guest

    >Сори если глупый вопрос, а что за задача в целом, ну или хотябы чуть более практический смылс ?

    Всё просто, удалённый запуск и отслеживание что он там творит + логи есессна.
     
  12. Константин Харитонов

    Константин Харитонов Мастер

    С нами с:
    20.04.2005
    Сообщения:
    23
    Симпатии:
    0
    Баллы:
    102
    wpiggy Написал:
    -------------------------------------------------------
    > Всё просто, удалённый запуск и отслеживание что он
    > там творит + логи есессна.
    А это :)
    Да все должно быть ок, наша собсвена система рендринга по сети, отлично "ловит" output shake, да и alfred тоже справлеть с этим не плохо...
    Про другие системы сказать ничег не могу так как мало пользовался

     
  13. Guest

    "file 2>&1" direct both stdout and stderr to file.
     
Модераторы: Григорий Чаленко

Поделиться этой страницей