AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.06.2011, 19:00   #21  
someOne is offline
someOne
Участник
Аватар для someOne
 
173 / 429 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Вот исправленный текст функции shellExecuteWaitInfo.

В прошлом варианте не работала настройка waitTime - время ожидания окончания процесса...

X++:
static client server str shellExecuteWaitInfo(str _commandLine, str _arguments = "", int _waitTime = -1)
{
    System.String                       outputInfo;
    System.IO.StreamReader              streamReader;
    System.Diagnostics.Process          process;
    System.Diagnostics.ProcessStartInfo startInfo;
    InteropPermission                   permission = new InteropPermission(InteropKind::ClrInterop);
    System.Exception                    exception;
    Boolean                             exited;

    System.Text.Encoding                encoding;
    System.Text.Encoding                encoding866;
    System.Text.Encoding                encodingUTF;

    System.Byte[]                       tmp;
    str                                 ret;
    ;
    permission.assert();

    encodingUTF = System.Text.Encoding::get_Unicode();
    encoding866 = System.Text.Encoding::GetEncoding(866);


    startInfo   = new System.Diagnostics.ProcessStartInfo(_commandLine);
    process     = new System.Diagnostics.Process();

    if (_arguments)
    {
        startInfo.set_Arguments(_arguments);
    }

    try
    {
        startInfo.set_UseShellExecute(false); // для отключения диалога безопасности доступа к сетевым файлам
        startInfo.set_RedirectStandardOutput(true);

        process.set_StartInfo(startInfo);
        process.Start();

        streamReader = process.get_StandardOutput();

        encoding = streamReader.get_CurrentEncoding();

        process.WaitForExit(_waitTime);

        exited = process.get_HasExited();

        if (exited == false)
        {
            process.Kill();

            return "";
        }

        outputInfo = streamReader.ReadToEnd();

        tmp = encoding.GetBytes(outputInfo);

        tmp = System.Text.Encoding::Convert(encoding866, encodingUTF, tmp);

        ret = encodingUTF.GetString(tmp);

        if (ret)
            return ret;

        return "ok";
    }
    catch (Exception::CLRError)
    {
        exception = CLRInterop::getLastException();

        while (exception)
        {
            error(exception.get_Message());

            exception = exception.get_InnerException();
        }

        return "";
    }
}
За это сообщение автора поблагодарили: Logger (5), Link (4).
Теги
64-bit, aos, ax2009, dllfunction, winapi, zip

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Connection к другому SQL Server Poleax DAX: Программирование 5 19.10.2010 10:49
emeadaxsupport: Unable to validate the AX 2009 Workflow Webservice URL on a Windows Server 2008 R2 x64 Blog bot DAX Blogs 0 05.01.2010 19:16
chrisfie: Project Server 2007 TechNet Webcasts recordings and decks Blog bot DAX Blogs 0 21.07.2009 10:05
dynamicsusers: SQL Server: x64 vs x86 Blog bot DAX Blogs 0 28.06.2007 17:00
aEremenko: Диагностика проблем при установке Microsoft Dynamics Ax 4.0 на Microsoft SQL Server 2005 Blog bot DAX Blogs 0 28.10.2006 16:01

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:07.