Переключение языка ввода НЕ ДЛЯ текущего окна.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Pokesoft
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 03.02.2003 (Пн) 13:02
Откуда: Russia

Переключение языка ввода НЕ ДЛЯ текущего окна.

Сообщение Pokesoft » 02.05.2005 (Пн) 21:05

Господа программеры!

Нашел на этом форуме топик, там было описано, как можно переключаться на рус. или англ. язык.
http://bbs.vbstreets.ru/viewtopic.php?t ... 0%C4%CA%C8

Теперь суть проблемы.
Дело в том, что описанный способ переключает язык ввода, но ДЛЯ ТЕКУЩЕЙ ФОРМЫ.

Либо, в кач-ве лучшей альтернативы, как можно съэмулировать нажатие на кнопки клавы, но С УЧЁТОМ ЯЗЫКА ВВОДА, иными словами послать набор слова именно на русском (английском) языке БЕЗ УЧЁТА текущего языка ввода.

Если я выразил что-то неясно, могу описать, зачем мне всё это нужно -
сейчас просто не хочу захламлять форум.

>HPLC<
Hacker_Pokesoft

Джеффи
Бывалый
Бывалый
 
Сообщения: 256
Зарегистрирован: 06.03.2005 (Вс) 0:26

Сообщение Джеффи » 02.05.2005 (Пн) 21:10

SendKeys :roll:

Pokesoft
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 03.02.2003 (Пн) 13:02
Откуда: Russia

Сообщение Pokesoft » 02.05.2005 (Пн) 21:16

SendKeys не канает, в том и дело :(
SendKeys посылает только коды клавиш, а не букв :( То есть, к примеру, я программно переключаюсь на редактируемый через VB-прогу документ (WordApp) и выполняю
SendKeys "qwerty".
А в зависимости от некущего языка, может беспрепятственно получиться вместо "qwerty" "йцукен"...

>HPLC<
Hacker_Pokesoft

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 02.05.2005 (Пн) 21:19

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

Для начала - в поиск по словам GetKeyboardLayoutName.

Pokesoft
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 03.02.2003 (Пн) 13:02
Откуда: Russia

Сообщение Pokesoft » 02.05.2005 (Пн) 21:23

Подходящих тем не найдено :(

P.S.: допустим, таблица есть, это технически не сложно. А вот как, если не через SendKeys, всё это отправить в открытый Word???

>HPLC<
Hacker_Pokesoft

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 02.05.2005 (Пн) 21:27

http://www.yandex.ru/yandsearch?text=GetKeyboardLayoutName+description&stype=www

Либо через SendInput, либо через keyb_event. М.б. и другие варианты. За справкой по функциям к Яндексу, а лучше к Api-Guide (о5 же в поиск).

Pokesoft
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 03.02.2003 (Пн) 13:02
Откуда: Russia

Сообщение Pokesoft » 02.05.2005 (Пн) 21:36

Функция GetKeyboardLayoutName извлекает данные об имени активного идентификатора языка ввода (прежде называемом раскладкой символов на клавиатуре).

Нет, это не подходит, т.к. мне и не надо знать текущую раскладку, мне надо, чтобы "qwerty" всегда было "qwerty"...

Про SendInput щас гляну - название интригует, вроде то что надо :)

>HPLC<
Hacker_Pokesoft

kirrun
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 06.04.2005 (Ср) 15:41
Откуда: Питер

Сообщение kirrun » 02.05.2005 (Пн) 22:57

Через SendKeys можно и Ctrl+Shift спокойно послать...
"Единственный безопасный компьютер - это тот, который выключен из электросети, закрыт в сейфе, который зарыт 20 футов под землей в засекреченной местности. И то я не уверен относительно его безопасности."
(Деннис Хьюджес, ФБР)

kirrun
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 06.04.2005 (Ср) 15:41
Откуда: Питер

Сообщение kirrun » 02.05.2005 (Пн) 22:59

Извращенный метод:

Переключаемся на нуное окно
Посылаем клавишу q/й
Посылаем клавишу Ctrl+влево, Ctrl+C
Проверяем что там. Если q - то продолжаем писать. Если й - стираем что было, посылаем Ctrl+Shift, Alt+Shift (мыж не знаем как там переключается) и пишем что нада....

Метод действительно оч извращенный...
"Единственный безопасный компьютер - это тот, который выключен из электросети, закрыт в сейфе, который зарыт 20 футов под землей в засекреченной местности. И то я не уверен относительно его безопасности."
(Деннис Хьюджес, ФБР)

CodeName33
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 297
Зарегистрирован: 01.09.2004 (Ср) 13:25
Откуда: SPb

Сообщение CodeName33 » 03.05.2005 (Вт) 8:23

kirrun, а не проще ли тогда уж сразу в Clipboard нужный текст копировать и послать окну Ctrl+V или Shift+Insert.
Программисты не глючат - глючат компиляторы...

Pokesoft
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 03.02.2003 (Пн) 13:02
Откуда: Russia

Сообщение Pokesoft » 03.05.2005 (Вт) 13:01

А как тогда получить из буфера скопированный по Ctrl+C текст?
Hacker_Pokesoft

CodeName33
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 297
Зарегистрирован: 01.09.2004 (Ср) 13:25
Откуда: SPb

Сообщение CodeName33 » 03.05.2005 (Вт) 13:16

Pokesoft, а зачем тебе его получать? Или ты хочешь сохранить, то что там было, чтобы потом восстановить? Clipboard.GetText
Программисты не глючат - глючат компиляторы...

Pokesoft
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 03.02.2003 (Пн) 13:02
Откуда: Russia

Сообщение Pokesoft » 03.05.2005 (Вт) 13:53

Кароче, такая тема.
Моя VB-прога должна редактировать Word-шаблон.
Она открывает его AS NEW WordApp, после чего для удобства предусмотрена такая функция, как автодобавление в этот шаблон переменных - строк типа #Сторона_1# или #Покупатель#.
Чтобы юзверь не набивал это сам, желательно было бы, чтобы достаточно было подвести курсор к нужному месту в тексте и нажать на одну из строк списка, выдаваемого прогой (например, тот же #Покупатель#), после чего данная строка вставлялась бы в текст ворд-документа.
Сам "помощник для набора" устроен таким образом, что постоянно расположен поверх любых остальных окон.
Т.е. юзверь нажимает переменную на помощнике, прога автоматом переключается на редактируемый ворд-документ, устанавливает нужную для ввода раскладку и вставляет переменную.

>HPLC<
Hacker_Pokesoft

kirrun
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 06.04.2005 (Ср) 15:41
Откуда: Питер

Сообщение kirrun » 03.05.2005 (Вт) 17:26

Pokesoft

Ну ты даешь!

Clipboard.GetText
"Единственный безопасный компьютер - это тот, который выключен из электросети, закрыт в сейфе, который зарыт 20 футов под землей в засекреченной местности. И то я не уверен относительно его безопасности."
(Деннис Хьюджес, ФБР)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 03.05.2005 (Вт) 18:35

Pokesoft писал(а):Кароче, такая тема.
Моя VB-прога должна редактировать Word-шаблон.
Она открывает его AS NEW WordApp, после чего для удобства предусмотрена такая функция, как автодобавление в этот шаблон переменных - строк типа #Сторона_1# или #Покупатель#.
Чтобы юзверь не набивал это сам, желательно было бы, чтобы достаточно было подвести курсор к нужному месту в тексте и нажать на одну из строк списка, выдаваемого прогой (например, тот же #Покупатель#), после чего данная строка вставлялась бы в текст ворд-документа.

А для чего, спрашивается, у Ворда есть объектная модель? :roll:
Вот именно для того, чтобы эта задача решалась просто и без заморочек с апями.
Изображение


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 124

    TopList