|
21.12.2011, 05:23 | #1 |
Участник
|
Один экземпляр клиента AX на одного пользователя
Привет формучанам, есть вопрос, не раскрывшийся после сёрчинга по докам и Гуглю...
Можно ли как-то просто ограничить кол-во запускаемых клиентов AX на общедоступном компьютере с Windows Server 2003 - один юзер или хотя бы одна сессия=один запущенный клиент? Используется AX 2009, один AOS, удаленный пользователи работают через терминальный доступ к одному компьютеру с Windows Server 2003 - именно на этом компьютере и хотелось бы сделать так, чтобы один юзер не мог запустит больше одного экземпляра клиента AX. P.S. Citrix не подходит. Может вопрос не к AX напрямую и что-то можно решить средствами администрирования Windows Servers 2003... Последний раз редактировалось mvsenin; 21.12.2011 в 05:27. |
|
21.12.2011, 08:26 | #2 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: Ivanhoe (1), mvsenin (1). |
21.12.2011, 08:29 | #3 |
Участник
|
Спасибо!
|
|
21.12.2011, 11:34 | #4 |
Участник
|
А вот и засада - под Windows 7 код
X++: InfoLog.shutDown(true); Т.е., клиент запускается, вывдается алёрт, жмем ОК, окно клиента остается на экране, правда, без областей перехода, меню - просто серое окно с заголовком, причем, оно не закрывается даже по кресту... только через снятие процесса. Есть соображения? WinAPI? |
|
21.12.2011, 09:41 | #5 |
Участник
|
просто хочу добавить, что по ссылка посты 5 летней давности и дрвенее, так что на современных версиях AX могут быть проблемы, например в случае использования EP или Ролевых центров - там логинится еще один пользователь с типом "Web user"
|
|
|
За это сообщение автора поблагодарили: mvsenin (0). |
21.12.2011, 09:53 | #6 |
Участник
|
Да, это я уже заметил, но первый пример отсуда - Ограничение количества одновременных подключений под одним логином, вполне себе работает на AX 2009, она же 5.0.
Спасибо всем! |
|
21.12.2011, 12:30 | #7 |
Участник
|
позырьте по кросс-ссылкам, какой код исполняется по тайм-ауту (есть такой параметр в настройках пользователя)
|
|
22.12.2011, 02:02 | #8 |
Участник
|
... не понимаю, о чем Вы. Я малость затупил - проблема под Windows Server 2003, но от этого пока не легче. Под Windows XP все ровненько (клиент, запускаемый вторым, правда, достаточно долго висит на экране после нажатия ОК в алерте перед закрытием, секунд 5-7)
|
|
22.12.2011, 03:47 | #9 |
Участник
|
Вот он, всеработающий код, для закрытия повторно запускаемого клиента AX при запуске (условие может каждый выбрать себе сам, в данном примере ограничение сделано для запуска второго экземпляра клиента на компьютере с одним и тем же именем один и тем же пользователем):
X++: void startupPost() { xSession session; Session curSession; int counter; str warning; HWND AxClient; ; //--- CRM start if (!appl.isConfigMode()) { //--- Prevent call to smmInit during installation of Axapta //--- If not, code in the method below is run that uses a table that has not yet been created for (counter = 1; counter <= xSession::maxSessionId(); counter++) { session = new xSession(counter, true); if (session) { if (session.sessionId() != sessionid()) { if ((curuserid() == session.userId()) && (winapi::getComputerName() == session.clientComputerName())) { warning = strfmt("Под пользователем %1 АХ уже запущена на компьютере %2!", session.userId(), session.clientComputerName()); Box::warning(warning, "Доступ ограничен"); AxClient = winapi::getActiveWindow(); winapi::sendMessage(AxClient,274,61536,''); // = SendMessage(WHND, WM_SYSCOMMAND, SC_CLOSE, 0); } } } } SmmInit::construct(); } //--- CRM end } Последний раз редактировалось mvsenin; 22.12.2011 в 05:35. |
|
22.12.2011, 06:51 | #10 |
Участник
|
Одна остающаяся засада - если при старте AX выведет какой-то свой диалог, например, информацию о несоответствии часовых поясов, то закроется этот самый диалог, а не весь клиент , он (клиент) останется пустым-сереньким, незакрывающимся по кресту
|
|
|
|