Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

PostMessage(Edit.Handle,WM_KEYDOWN,code,0); [D7, XP]


Zilog ©   (2006-08-03 11:05:00) 

как мне сэмулировать нажатие клавиш клавиатуры?
 пробудю сделать так:

 Key = 'й';
 ...
 code := ord(Key);
 но так не работает
 PostMessage(Edit.Handle,WM_KEYDOWN,code,0);

подскажите где ошибся


Пусик   (2006-08-03 15:01:00) [1]

procedure WrShiftX;
begin
 Keybd_Event(VK_SHIFT,0,0,0);
 Keybd_Event(Ord('X'),0,0,0);
 Keybd_Event(VK_Menu,0,KEYEVENTF_KEYUP,0);
end;


Zilog   (2006-08-03 14:51:00) [2]

неужели нет ниу кого вариантов?


Zilog   (2006-08-03 14:17:00) [3]

Появился еще один вопрос - а как виртуально зажать клавишу Shift?

Вот этот способ не работает:

 PostMessage(Edit.Handle,WM_KEYDOWN,VK_SHIFT,0);
 PostMessage(Edit.Handle,WM_KEYDOWN,code,0);


Zilog   (2006-08-03 13:51:00) [4]

Вопрос решен - что бы VkKeyScan работал с русскими символами - необходимо, что бы была включена русская раскладка клавиатуры (RU).


Zilog   (2006-08-03 13:48:00) [5]

>Ketmar ©   (03.08.06 12:44) [8]

Здесь ничего не сказано пор русские буквы, кодировку и т.п.

Описание:
function VkKeyScan(AChar: Word): Word;

    Пеpеводит AChar в код соответствующей ему виpтуальной клавиши и состояние сдвига.

    Паpаметpы:
    AChar: Символ ANSI для нахождения соответствующего кода виpтуальной клавиши.

    Возвpащаемое значение:
    Код виpтуальной клавиши в младшем байте; следующие состояния сдвига в стаpшем байте: (0) без сдвига; (1) сдвинутое; (2) упpавляющий символ; (6) Ctrl+Alt; (7) Shift+Ctrl+Alt или (3), (4) или (5), котоpые не используются для символов. В случае ошибки оба байта содеpжат -1.


Сергей М.   (2006-08-03 12:53:00) [6]


> Zilog ©   (03.08.06 12:27) [7]


Ну и ?
Тебе надо программно переместить курсор (позицию ввода) в поле ввода, так ?


Ketmar   (2006-08-03 12:44:00) [7]

> [4] Zilog ©   (03.08.06 12:15)

внимательно покурить справку.


Zilog   (2006-08-03 12:27:00) [8]

не, не канает.
На форме кнопки-алфавит, тыкая по которым забивается текстовое поле.
Дело в курсорных клавишах - дожны быть возможность исправить букву в слове.

так что вопрос Zilog ©   (03.08.06 12:15) [4]
остается в силе


Сергей М.   (2006-08-03 12:23:00) [9]

А зачем тогда потребовалась эмуляция именно клавиатурноговвода ?
Что, Edit.Text = Edit.Text + 'й' совсем не канает ?)


Zilog   (2006-08-03 12:17:00) [10]

>>Сергей М. ©   (03.08.06 11:08) [1]

keybd_event() мне не подходит, т.к. надо устанавливать фокус.


Zilog   (2006-08-03 12:15:00) [11]

а как заставить работать  VkKeyScan() с русскими букавми?


Ketmar   (2006-08-03 11:13:00) [12]

читать в район VkKeyScan(), не забывать, что WM_KEYDOWN передаюёт константы VK_xxx, а вовсе не коды символов. кстати, не забывать делать WM_KEYUP.


Шпиён   (2006-08-03 11:10:00) [13]

или SendInput()


Сергей М.   (2006-08-03 11:08:00) [14]

см. keybd_event()


Наверх

Титульная страница Поиск, карта сайта Написать письмо