Предотвращение потери горячей клавиши после запроса UAC в Windows - PullRequest
1 голос
/ 13 сентября 2009

ФОН

  • Я написал приложение на C #, которое регистрирует горячие клавиши Windows (снимок экрана при нажатии PRINTSCREEN)
  • Мой код для регистрации горячей клавиши, экрана захвата и т. Д. Все работает. Там нет проблем.

ПРОБЛЕМА

  • Если мое приложение работает (и успешно зарегистрировало горячую клавишу), а затем я делаю что-то, что вызывает приглашение UAC - обычно это происходит, когда, например, я запускаю какую-то программу установки - тогда горячая клавиша теряется. Lost = впоследствии, когда я нажимаю на экран печати, событие никогда не возвращается в мое приложение. Я должен закрыть приложение и перезапустить.

ВОПРОСЫ

  • Почему теряется горячая клавиша?
  • Что можно и нужно делать по-другому при регистрации горячей клавиши?

ПРИМЕЧАНИЯ

  • Я видел такое поведение с другими приложениями, которые регистрируют горячие клавиши - запуск приложения с горячей клавишей с правами администратора предотвращает потерю горячей клавиши
  • Что можно и нужно делать по-другому при регистрации горячей клавиши?
  • Избегание приложений, таких как setup.exes, которые вызывают приглашение UAC, не является жизнеспособным решением - единственная цель моего снимка экрана - документировать процесс установки для нескольких приложений
  • У меня есть обходной путь, я могу запустить приложение с правами администратора - но я бы предпочел не делать так, чтобы пользователи делали это

КОД

Мой код очень похож на этот: http://www.codekeep.net/snippets/ea68475b-c33e-4a71-8008-90f63d7e918d.aspx

Ответы [ 2 ]

1 голос
/ 13 сентября 2009

Учитывая, что Print Screen уже делает снимок экрана и помещает его в буфер обмена, рассматривали ли вы вместо этого мониторинг буфера обмена на предмет изменений?

Посмотрите на функцию API SetClipboardViewer . Для пример .

0 голосов
/ 14 сентября 2009

Когда вы делаете что-то, что может вызвать UAC - почему бы сначала не отменить регистрацию горячей клавиши, а затем зарегистрировать ее снова?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...