#c# #windows #modal-dialog
#c# #Windows #модальный диалог
Вопрос:
На моем рабочем месте мне нужно создать анкету, обязательную для заполнения пользователем. Цель состоит в том, чтобы сделать его как можно более ненавязчивым для пользователя и связать его с его учетной записью Windows. Затем результаты будут сохранены в базе данных, где на основе ответов можно создавать отчеты.
Предлагалось загружать анкету во время входа в систему, то есть когда пользователь входит в систему на компьютере. Мне пришлось бы сделать окно эксклюзивным, чтобы ни с какими другими окнами нельзя было взаимодействовать.
Мой вопрос, как бы мне это сделать? Можно ли это сделать с помощью WPF или мне понадобится XNA или что-то подобное?
Кроме того, есть ли какие-либо другие предложения о том, как я мог бы соответствовать всем критериям с другой реализацией?
Есть ли способ запустить / активировать приложение при разблокировке экрана?
Комментарии:
1. Если это обязательно, то это навязчиво.
2. @Peter Of The Corn — Я согласен, пытаюсь найти баланс, загружая его при входе в систему, и все еще сталкиваюсь с некоторыми проблемами даже с этим решением.
3. XNA кажется немного излишним для этого. Возможно, лучше использовать какое-нибудь развернутое окно без границ, расположенное сверху.
Ответ №1:
Вы можете создать приложение с помощью WinForms или WPF. Я не знаю о XNA. 🙂 И вы можете загрузить его при запуске; с помощью реестра. Возможно, вам потребуется вручную отключить ALT Tab, используя API, чтобы отключить взаимодействие между другими окнами.
Комментарии:
1. Смогу ли я, однако, заблокировать экран для этого приложения, запретив пользователю взаимодействовать с другими приложениями? Я видел комментарии в другом месте о том, что это невозможно с WPF, не уверен насчет Winforms.
Ответ №2:
Во-первых, похоже, что у вас могут быть противоречивые требования — «ненавязчивый» и «обязательный» — к пользователю, любое прерывание которого может рассматриваться как нарушение их священного времени 🙂
Я бы использовал развернутое окно WPF, которое допускает прозрачность, не имеет стиля окна, достаточно прозрачное, чтобы казалось, что фон отключен. Область «форма» будет располагаться по центру экрана. После заполнения форма закроется и установит пользовательское состояние в файле settings.config, чтобы гарантировать, что при следующем входе пользователя в систему она больше не появится.
Anuraj имеет право пытаться отключить как можно больше взаимодействий посредством подавления специальных нажатий клавиш.
Я бы подавил нажатия клавиш, пометив KeyEventArgs как обработанные при вызове события PreviewKeyDown.
Я никогда не делал этого на нескольких мониторах, хотя и не знаю, как это будет выглядеть.
Ответ №3:
Обязательность достигается, как вы говорите, путем привязки его к учетным записям домена, а затем выдачи письменного предупреждения любому, кто не заполнил анкету в течение определенного периода времени.
Если вы не готовы подкреплять свои «обязательные» требования реальными дисциплинарными процедурами, то внедрение технических препятствий — пустая трата времени. При наличии дисциплинарных процедур технические препятствия не нужны для достижения соответствия.
Фактическую реализацию, вероятно, лучше всего было бы выполнить на сервере корпоративной интрасети в виде веб-формы.
Это, конечно, требует, чтобы компания была достаточно зрелой, чтобы использовать какой-либо центральный сервер входа (контроллер домена, если Windows) и имела корпоративную интрасеть.
Возможно, сейчас самое подходящее время начать.