Программирование >>  Автоматически обновляемые приложения 

1 ... 84 85 86 [ 87 ] 88 89 90 ... 170


; Листинг 8.13. Переключение раскладок клавиатуры

using System.Globalization;

InputLanguage.CurrentlnputLanguage =

InputLanguage.FromCulture(new Cultureinfо( ru-RU

Если нужно переютючиться на английский язык, то используйте строчку InputLanguage.CurrentlnputLanguage =

InputLanguage.FromCulture(new Cultureinfо( en-US ));

Если вам нужно переключиться в другую раскладку (украинскую, белорусскую или финскую), то поищите названия соответствующих раскладок в до-

Работа с клавиатурой

Клавиатура является одной из важных составляющих компьютера. Если вы отключите клавиатуру и попробуете включить машину, то появится сообщение об ошибке и система откажется загружаться. Клавиатура позволяет вводить информацию в компьютер с помощью клавиш. Несмотря на разнообразие моделей и количества клавиш на них, у всех клавиатур имеется определенный стандарт клавиш. Прежде всего, это ряд клавиш с буквами и цифрами, клавиши-модификаторы, функциональные клавиши и цифровой блок. Таюке у клавиатур имеются индикаторы со светодиодами, которые могут загораться и выключаться при нажатии некоторых клавиш.

Как переключать раскладки клавиатуры?

в отличие от американцев, нам приходится использовать две раскладки клавиатуры, а то и больше. Таким образом, у вас периодически возникает потребность переключения раскладки. Пользователь может изменить раскладку вручную, нажав комбинацию клавиш <Alt>+<Shift> (или другую комбинацию, определенную настройками системы). В последнее время появились программы, которые автоматически переключают раскладку, пытаясь определить нужный язык по вводимым словам. Но если эти программы способны программно переключать раскладки, то почему бы и нам не сделать то же

самое. Для этого нужно воспользоваться свойством CurrentlnputLanguage класса System.windows.Forms.InputLanguage. В ЛИСТИНГе 8.13 приведен КОД,

переключающий язык ввода на русский.



Примечание

Пример работы с раскладками клавиатур находится в папке Keyboard на прилагаемом диске.

Как послать нажатия клавиш программно?

с помощью класса sendKeys, который находится в пространстве имен System. Windows. Forms, можно программно эмулировать нажатис определенной комбинации клавиш активному приложению, используя его метод sendwait. Так как не существует управляемых методов для активирования других приложений, то для передачи фокуса другому приложению воспользуемся функциями Windows API FindWindow и SetForegroundWindow. Связка

кументации. Кроме того, в главе 14 более подробно рассказано о глобализации и локализации программ, в которых используются возможности пространства имен System.Globalization.

Как получить текущий язык ввода?

Мы рассмотрели только что пример, как программно переключить раскладку клавиатуры. Если вам необходимо сначала узнать текущую раскладку, то используйте код, приведенный в листинге 8.14.

Листинг 8.14. Получение текущего языка ввода

private void Forml Load(object sender, EventArgs e) {

InputLanguage myDefaultLanguage = InputLanguage.DefaultInputLanguage; InputLanguage myCurrentLanguage = InputLanguage.CurrentInputLanguage; textBoxl.Text = Текущий язык ввода: +

myCurrentLanguage.Culture.EnglishName+ \r\n ; textBoxl.Text += Язык ввода по умолчанию: +

myDefaultLanguage.Culture.EnglishName + \r\n ;

вьшодим текущий язык ввода InputLanguage myCurrentLanguage2 =

InputLanguage.CurrentInputLanguage; textBoxl.Text += Новый текущий язык ввода: +

myCurrentLanguage2.Culture.EnglishName;



[ Листинг 8.15. Программные нажатия на клавиши

[Dlllmport( USER32.DLL )]

static extern IntPtr FindWindow(string IpClassName, string IpWindowName); [Dlllmport( USER32.DLL )]

static extern bool SetForegroundWindow(IntPtr hWnd);

private void Forml Load(object sender, EventArgs e) {

Process note = Process.Start( notepad.exe ) ; note.WaitForlnputldle() ;

IntPtr notepadHandle = FindWindow(null, Блокнот ); Другой вариант

IntPtr notepadHandle = FindWindow( Notepad , null);

SetForegroundWindow(notepadHandle);

SendKeys.SendWait( C# );

SendKeys.SendWait( Народные советы );

SendKeys.SendWait( ~ ) ;

SendKeys.SendWait( Обалдеть! );

При запуске программы автоматически запустится новая копия программы Блокнот, в которой будут напечатаны нужные слова.

Примечание

Пример программного нажатия на клавиши находится в папке SendKeys-Demo на прилагаемом диске.

Как включать и выключать индикаторы клавиш <Caps Lock>, <Num Lock> и <Scroll Lock>?

Ha большинстве клавиатур имеются светодиоды-индикаторы, которые позволяют пользователю отслеживать состояние клавиш <Caps Lock>,

этих функций с классом sendKeys ПОЗВОЛИТ нам, например, запустить программу Блокнот и напечатать несколько слов (листинг 8.15).



1 ... 84 85 86 [ 87 ] 88 89 90 ... 170

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.072
При копировании материалов приветствуются ссылки.
Яндекс.Метрика