Как отправить значение о нажатии 2х клавиш в программу
шифт и 1
[COLOR="Navy"] // Имитация нажатия шифт+1[/COLOR]
PostMessage(hwnd,WM_KEYDOWN, VK_SHIFT ,0);
PostMessage(hwnd,WM_KEYDOWN, 0x31 ,0);
PostMessage(hwnd,WM_KEYUP, VK_SHIFT ,0);
PostMessage(hwnd,WM_KEYUP, 0x31 ,0);
//--------------------------------------------------//
Пробую так но у меня ничего не получается, клавиши нажимаются в другой программе по отдельности
помогите кто знает
вот
Можешь также использовать keybd_event:
keybd_event('1', 0, 0, 0);
keybd_event('1', 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
GetKeyboardState(keys);
keys[17] = 128;
SetKeyboardState(keys);
keybd_event(49, 0, 0, 0);
[COLOR="Blue"]keybd_event(); [/COLOR]
сообщения о нажатии в другие приложения не отправляет, а может отправить только в текущее (в то приложение окно которого активно на момент выполнения команды, а мне надо чтобы сообщение о нажатии дошло в любом случае, даже если окно не активно)
Поясните пожалуйста
По теме:там же,в MSDN,ничего не написано,что keybd_event работает только для активного окна
По теме:там же,в MSDN,ничего не написано,что keybd_event работает только для активного окна
работаю в C++Builder 2007, у меня keybd_event работает только для активного на данный момент окна
поменял, написал так
// Имитация нажатия шифт+1
PostMessage(hwnd,WM_KEYDOWN, VK_SHIFT ,0);
PostMessage(hwnd,WM_KEYDOWN, 0x31 ,0);
PostMessage(hwnd,WM_KEYUP, 0x31 ,0);
PostMessage(hwnd,WM_KEYUP, VK_SHIFT ,0);
//--------------------------------//
всё равно не работает
1. Скорее всего, не туда шлете. Ищите дочерние окна.
2. Попробуйте WM_CHAR. Проходит?
3. Либо все таки используйте keybd_event
SetForegroundWindow(hwndTarget);
keybd_event ...
SetForegroundWindow(hwndForeground);
Поясните пожалуйста
эта строчка просто говорит о том что и обычная клавиатура, грубо говоря, вызывает эту функцию. но так было раньше и они немного лукавят. совсем чуть-чуть :)
2. Попробуйте WM_CHAR. Проходит?
3. Либо все таки используйте keybd_event
SetForegroundWindow(hwndTarget);
keybd_event ...
SetForegroundWindow(hwndForeground);
Шлю туда куда нужно, просто у меня там нажимается сначала шифт, а потом нажимается 1, а мне надо чтобы они нажимались как комбинация клавиш шифт +1, а не по отдельности
Вопрос, а зачем вам это нужно? Сделать это простым PostMessage'м не удастся, а keybd_event доставит данные о нажатии лишь активному окну. Может стоит использовать WM_CHAR, если это конечно возможно?
А Shift+1 это по-твоему что? Отдельная клавиша на клавиатуре?