2011-01-12 2 views
0

У меня есть приложение C#, которое использует Sendkeys.send для отправки текста другим приложениям. При выполнении на окнах 7 через некоторое время Sendkeys перестают отвечать и не отправляют текст. Это никогда не происходит в Windows XP. Я подозревал антивирус, но это происходит и при запуске без антивируса. Любые идеи, что может вызвать это? Благодарим вас за помощь.SendKeys.send заблокирован

ответ

4

Какую версию .NET Framework вы компилируете? Если вы все еще используете версию до 2.0, скорее всего, вы столкнетесь с проблемами совместимости в Windows 7 в результате улучшения модели безопасности UAC.

Метод SendKeys.Send был обновлен в версии 3.0 Framework для правильной работы с Windows Vista и новее. Смотрите documentation:

Класс SendKeys был обновлен для .NET Framework 3.0 для того, чтобы использовать его в приложениях, работающих на Windows Vista. Повышенная безопасность Windows Vista (известная как Контроль учетных записей пользователей или UAC) предотвращает работу предыдущей реализации как ожидалось.

Необходимо обновить; версия 3.5 уже включена в Windows 7.

В противном случае P/Invocation SendMessage function, предоставленный Windows API, является опцией, если вам нужно отправить данные в другие приложения. Проверьте pinvoke.net на объявление, которое вам нужно будет назвать на C#.

0

Существует а (для меня, по крайней мере) довольно странного замечания о MSDN documentation for the SendKeys.Send методе:

Внимание
Если приложение предназначено для международного использования с различными клавиатурами, в использование Отправить может дать непредсказуемые результаты, и следует избегать .

Я не понимаю причину утверждения, но, возможно, это (одна) причина для поведения, которое вы испытываете?

В самом низу той же страницы MSDN, они также заявляют:

... В SendKeys класс чувствителен к вопросов, касающихся сроков, которые некоторые разработчики были вынуждены работать вокруг. Обновленный реализация по-прежнему восприимчивы к вопросов, касающихся сроков, но немного быстрее и может потребовать изменений в обходные ...

Кажется мне, что SendKey функция, чтобы избежать при любых обстоятельствах.

Смежные вопросы