SendKeys.send заблокирован - PullRequest
       31

SendKeys.send заблокирован

0 голосов
/ 12 января 2011

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

Ответы [ 2 ]

4 голосов
/ 12 января 2011

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

Метод SendKeys.Send был обновлен в версии 3.0 платформы для правильной работы с Windows Vista и новее. См. документацию :

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

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

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

0 голосов
/ 12 января 2011

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

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

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

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

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

Мне кажется, что SendKey - это функция, которую следует избегать при любых обстоятельствах.

...