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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.09.2012, 14:34   #1  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Зачем сразу убийства?.. ExitProcess()
За это сообщение автора поблагодарили: f18 (2).
Старый 04.09.2012, 14:57   #2  
f18 is offline
f18
Участник
Аватар для f18
Дети Юза
 
188 / 101 (4) +++++
Регистрация: 09.08.2005
lvan
Я бы смотрел в сторону убийства процесса AX32.exe, например через те же winapi функции

>> не знал функци, поэтому и спросил :-)


Интересно узнать, зачем вам это понадобилось?

>> это сложно. Очень грубо говоря багфиксинг.


gl00mie Зачем сразу убийства?.. ExitProcess()

>> Спасибо - попробую, отпишусь.
Старый 04.09.2012, 15:27   #3  
f18 is offline
f18
Участник
Аватар для f18
Дети Юза
 
188 / 101 (4) +++++
Регистрация: 09.08.2005
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Зачем сразу убийства?.. ExitProcess()
Работает великолепно (а главное оч быстро)!
Спасибо большое!
Старый 04.09.2012, 15:51   #4  
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   #5  
f18 is offline
f18
Участник
Аватар для f18
Дети Юза
 
188 / 101 (4) +++++
Регистрация: 09.08.2005
Если не сложно, для людей не сильно понимающих разницу - в чем принципиальная разница?
Старый 04.09.2012, 16:26   #6  
michel1971 is offline
michel1971
Участник
 
77 / 78 (3) ++++
Регистрация: 14.01.2011
Цитата:
Сообщение от f18 Посмотреть сообщение
Если не сложно, для людей не сильно понимающих разницу - в чем принципиальная разница?
видимо из-за этого: "Функцию TerminateProcess следует использовать только в исключительных случаях, когда исчерпаны все другие способы воздействия на процесс, поскольку она не позволяет потокам процесса выполнить очистку или сохранить данные, а также не оповещает загруженные DLL о завершении процесса."
За это сообщение автора поблагодарили: f18 (1).
Старый 04.09.2012, 16:40   #7  
f18 is offline
f18
Участник
Аватар для f18
Дети Юза
 
188 / 101 (4) +++++
Регистрация: 09.08.2005
Цитата:
Сообщение от michel1971 Посмотреть сообщение
видимо из-за этого: "Функцию TerminateProcess следует использовать только в исключительных случаях, когда исчерпаны все другие способы воздействия на процесс, поскольку она не позволяет потокам процесса выполнить очистку или сохранить данные, а также не оповещает загруженные DLL о завершении процесса."
Ок, спс! Если у меня аксапта работает след образом
Преднастроенный терминальный клиент с автозапуском аксапты, если аксапта закрывается - закрывается терминальный клиент. Правильно ли я понимаю, что используя TerminateProcess и, как следствие, выход из терминальной сессии, я гарантирую коректность закрытия dll?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как сильно модифицировано ваше приложение Аксапты? 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, время: 08:06.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.