Показать сообщение отдельно
Старый 16.09.2010, 19:44   #18  
someOne is offline
someOne
Участник
Аватар для someOne
 
174 / 432 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Для запуска на стороне сервера различных консольных exe написал такую функцию (для DAX2009) в классе WinAPIServer.

Позволяет также управлять временем ожидания выполнения приложения.
Возвращает результат (успешное / не успешное завершение)

X++:
static server boolean shellExecuteWait(str _commandLine, str _arguments = "", int _waitTime = -1)
{
    System.Diagnostics.Process          process;
    System.Diagnostics.ProcessStartInfo startInfo;
    InteropPermission                   permission = new InteropPermission(InteropKind::ClrInterop);
    System.Exception                    exception;
    Boolean                             exited;
    ;
    permission.assert();

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

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

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

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

        exited = process.get_HasExited();

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

            return false;
        }

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

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

            exception = exception.get_InnerException();
        }

        return false;
    }
}
За это сообщение автора поблагодарили: gl00mie (2), player (1).