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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.09.2012, 15:51   #1  
michel1971 is offline
michel1971
Участник
 
77 / 78 (3) ++++
Регистрация: 14.01.2011
определяем ID процесса
X++:
static int GetCurrentProcessId()
{
    Dll             kernel32          = new Dll(#KERNELDLL);
    DllFunction     processId         = new DllFunction(kernel32, "GetCurrentProcessId");
    ;
    processId.returns(ExtTypes:: DWord);

    return processId.call();
}
затем убиваем его
X++:
static void TerminateProcess(int    _processId)
{
    Dll             kernel32            = new Dll(#KERNELDLL);
    DllFunction     closeHandle         = new DllFunction(kernel32, "CloseHandle");
    DllFunction     terminateProcess    = new DllFunction(kernel32, "TerminateProcess");
    DllFunction     openProcess         = new DllFunction(kernel32, "OpenProcess");

    int             hProcess;

    closeHandle.returns(ExtTypes:: DWORD);
    closeHandle.arg(ExtTypes:: DWORD);

    terminateProcess.returns(ExtTypes:: DWord);
    terminateProcess.arg(ExtTypes:: DWord, ExtTypes:: DWord);

    openProcess.returns(ExtTypes:: DWord);
    openProcess.arg(ExtTypes:: DWord, ExtTypes::DWord, ExtTypes:: DWord);

    hProcess = openProcess.call(1, false, _processId);

    terminateProcess.call(hProcess, 1);

    closeHandle.call(hProcess);
}
Старый 04.09.2012, 16:11   #2  
f18 is offline
f18
Участник
Аватар для f18
Дети Юза
 
188 / 101 (4) +++++
Регистрация: 09.08.2005
Если не сложно, для людей не сильно понимающих разницу - в чем принципиальная разница?
Старый 04.09.2012, 16:26   #3  
michel1971 is offline
michel1971
Участник
 
77 / 78 (3) ++++
Регистрация: 14.01.2011
Цитата:
Сообщение от f18 Посмотреть сообщение
Если не сложно, для людей не сильно понимающих разницу - в чем принципиальная разница?
видимо из-за этого: "Функцию TerminateProcess следует использовать только в исключительных случаях, когда исчерпаны все другие способы воздействия на процесс, поскольку она не позволяет потокам процесса выполнить очистку или сохранить данные, а также не оповещает загруженные DLL о завершении процесса."
За это сообщение автора поблагодарили: f18 (1).
Старый 04.09.2012, 16:40   #4  
f18 is offline
f18
Участник
Аватар для f18
Дети Юза
 
188 / 101 (4) +++++
Регистрация: 09.08.2005
Цитата:
Сообщение от michel1971 Посмотреть сообщение
видимо из-за этого: "Функцию TerminateProcess следует использовать только в исключительных случаях, когда исчерпаны все другие способы воздействия на процесс, поскольку она не позволяет потокам процесса выполнить очистку или сохранить данные, а также не оповещает загруженные DLL о завершении процесса."
Ок, спс! Если у меня аксапта работает след образом
Преднастроенный терминальный клиент с автозапуском аксапты, если аксапта закрывается - закрывается терминальный клиент. Правильно ли я понимаю, что используя TerminateProcess и, как следствие, выход из терминальной сессии, я гарантирую коректность закрытия dll?
Старый 04.09.2012, 17:53   #5  
michel1971 is offline
michel1971
Участник
 
77 / 78 (3) ++++
Регистрация: 14.01.2011
Цитата:
Сообщение от f18 Посмотреть сообщение
Ок, спс! Если у меня аксапта работает след образом
Преднастроенный терминальный клиент с автозапуском аксапты, если аксапта закрывается - закрывается терминальный клиент.
а что есть такие настройки? Про автозапуск понятно, а вот про закрытие первый раз слышу.
Цитата:
Сообщение от f18 Посмотреть сообщение
Правильно ли я понимаю, что используя TerminateProcess и, как следствие, выход из терминальной сессии, я гарантирую коректность закрытия dll?
мне кажется что у меня написано ровно противоположное
Старый 05.09.2012, 01:10   #6  
f18 is offline
f18
Участник
Аватар для f18
Дети Юза
 
188 / 101 (4) +++++
Регистрация: 09.08.2005
Цитата:
Сообщение от michel1971 Посмотреть сообщение
а что есть такие настройки? Про автозапуск понятно, а вот про закрытие первый раз слышу.
Если прописать Подключение к удаленному рабочему столу\Закладка программы\Автозапуск программы, то при закрытии запущеной программы закрывается система.
Старый 05.09.2012, 09:59   #7  
michel1971 is offline
michel1971
Участник
 
77 / 78 (3) ++++
Регистрация: 14.01.2011
Цитата:
Сообщение от f18 Посмотреть сообщение
Если прописать Подключение к удаленному рабочему столу\Закладка программы\Автозапуск программы, то при закрытии запущеной программы закрывается система.
что-то у меня такого не наблюдается. Win Server 2003 Sp2
Старый 04.09.2012, 18:16   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от f18 Посмотреть сообщение
Ок, спс! Если у меня аксапта работает след образом
Преднастроенный терминальный клиент с автозапуском аксапты, если аксапта закрывается - закрывается терминальный клиент. Правильно ли я понимаю, что используя TerminateProcess и, как следствие, выход из терминальной сессии, я гарантирую коректность закрытия dll?
ужас-ужас-ужас!!!
Старый 05.09.2012, 01:41   #9  
f18 is offline
f18
Участник
Аватар для f18
Дети Юза
 
188 / 101 (4) +++++
Регистрация: 09.08.2005
Цитата:
Сообщение от mazzy Посмотреть сообщение
ужас-ужас-ужас!!!
извините, не понял. Можете или объяснить свою позицию или направить на ресурс в котором обьясняется почему это ужас?
Старый 05.09.2012, 02:10   #10  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от f18 Посмотреть сообщение
извините, не понял. Можете или объяснить свою позицию или направить на ресурс в котором обьясняется почему это ужас?
Цитата:
Сообщение от f18 Посмотреть сообщение
используя TerminateProcess и, как следствие, выход из терминальной сессии, я гарантирую коректность закрытия dll?
с одной стороны, глупых вопросов не бывает - глупыми бывают только ответы.
с другой стороны, сама мысль о том, что TerminateProcess можно использовать в ERP-системе... Причем использовать, чтобы гарантировать корректность... Она отдает такой степенью извращенности, в которую страшно заглянуть.

Поэтому и ужас-ужас-ужас
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как сильно модифицировано ваше приложение Аксапты? mazzy DAX: Прочие вопросы 30 14.04.2011 17:26
Вставка строк в таблицы Аксапты сторонними средствами Андре DAX: База знаний и проекты 1 07.05.2009 16:49
Программный запуск Аксапты из Аксапты DreamCreator DAX: Программирование 11 04.05.2009 10:05
Экспорт / импорт Help topics и запуск второй сессии Аксапты из-под себя DmitrySt DAX: Программирование 0 25.11.2004 00:22
Реальный сетевой трафик Аксапты Seismic DAX: Прочие вопросы 12 21.11.2003 12:06

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 06:57.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.