Как мне сделать окно обязательным для пользователя для ввода некоторой информации?

#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) и имела корпоративную интрасеть.

Возможно, сейчас самое подходящее время начать.