SendKey или SendMessage?
, Какой функцией удобнее послать "CTRL+C" и как именно?
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.164] |
|
|
Правила раздела Visual Basic: Общие вопросы
FAQ Сайта
FAQ Раздела
Кладовка
Наши Исходники
API-Guide
Поиск по Разделу
MSDN Library Online
Google
SendKey или SendMessage?
, Какой функцией удобнее послать "CTRL+C" и как именно?
|
Сообщ.
#1
,
|
|
|
|
SendMessage не пробовал.
SendKeys: если я посылаю Call SendKeys("^s") - буквы в кавычках пишутся не английским языком, а тем, который на текущий момент включен в системе. Пусть я исправляю это посредством Chr - но вопрос остается: какая функция стабильнее? И как при помощи SendMessage написать CTRL+S? |
|
Сообщ.
#2
,
|
|
|
|
А откуда именно данные надо скопировать?
Можно послать WM_COPY, можно сэмулировать Ctrl+C с помощью keybd_event, есть API для работы непосредственно с буфером обмена. Наконец можно напрямую получить текст из окна с помощью SendMessage(WM_GETTEXT) или GetWindowText. От задачи зависит. |
|
Сообщ.
#3
,
|
|
|
|
Я описался: мне только CTRL+S нужно. SendKeys оказался совсем зависимым от текущей раскладки клавиатуры. SendMessage мне не удалось запустить (код не сохранил).
Мне нужен пример: либо как при помощи SendMessage послать CTRL+S, либо какой командой API поменять DEFAULT-раскладку клавиатуры четко на EN (тоже с примером). |
|
Сообщ.
#4
,
|
|
|
|
Цитата Сергей85 @ Я описался В каком месте ударение? Цитата Сергей85 @ Мне нужен пример: либо как при помощи SendMessage послать CTRL+S Тебе нужен WM_COMMAND с соответствующим ID меню, а если меню нет -- SendInput с AttachThreadInput |
|
Сообщ.
#5
,
|
|
|
|
Я решил так. Перед Sendkey "CTRL+S" посылаю команду смены раскладки клавиатуры на EN (не по умолчанию). Делаю Sendkey, возвращаю раскладку назад.
![]() ![]() Private Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal flags As Long) As Long 'Смена раскладки клавиатуры. 17 Call LoadKeyboardLayout("00000409", 1) 'Смена раскладки на английскую для корректного CTRL+S. 18 Call SendKeys("^s", 1000) |