Страница: 1 |
Страница: 1 |
Вопрос: Замена SendKeys
Добавлено: 19.09.04 13:09
Автор вопроса: Novichek
Пытаюсь создать прогу управлением ZoomPlayer'ом (пауза/регулировка громкости/max/min). В зуме, как и в винампе огромное количество горячих клавиш, но посылать их через SendKeys неудобно. Решил так:
Rem =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const ZP_PAUSE_PLAY = 515
Private hWnd_ZP As Long
Public Sub Play_Pause()
hWnd_ZP = FindWindow("TMainForm", vbNullString)
SendMessage hWnd_ZP, ZP_PAUSE_PLAY, 0, 0
End Sub
Rem =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
515 нащупал методом научного тыка, а вот остальное не могу.
Вот и возникли вопросы:
Существует замена SendKeys? Как найти то, что посылать другой программе? И как в своей программе зарезервировать то, что будет посылать другая программа?
P.S.
Наверное тупые вопросы, но голова уже совсем не работает.
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #1
Добавлено: 19.09.04 17:03
SendInput (API)
Примеры - см. API Guide.
Это в своём роде аналог SendKeys (только мощнее).
А вообще можно и так:
1. Если кнопка - это стандартный класс BUTTON, то посылай ей BM_CLICK. Хэндл кнопки узнай через FindWindow, зная её IDC (который постоянен и который можно подсмотреть в Spy++).
2. Если кнопка - на тулбаре, то используй TB_SETSTYLE (см. подробнее MSDN).
Номер ответа: 2
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #2
Добавлено: 19.09.04 23:09
keyb_event
mouse_event
Номер ответа: 3
Автор ответа:
Chill
ICQ: 554200
Вопросов: 101
Ответов: 343
Профиль | | #3
Добавлено: 20.09.04 00:58
Можно через PostMessage, SendMessage...
PostMessage(WinMP::FindMediaPlayer(), WM_KEYDOWN, (WPARAM)VK_F10, (LPARAM) paramDown);
PostMessage(WinMP::FindMediaPlayer(), WM_KEYUP, (WPARAM)VK_F10, (LPARAM) paramUp);
Номер ответа: 4
Автор ответа:
Novichek
Вопросов: 19
Ответов: 60
Профиль | | #4
Добавлено: 21.09.04 09:58
Всё получилось с PostMessage, кроме отправки сочитаний клавиш. Например Ctrl + G.
PostMessage(FindMediaPlayer(), WM_KEYUP, (WPARAM)VK_CTRL, VK_G) - так не катит.
keybd_event не подошел, т.к. окно должно быть ктивным.
А про SendInput ничего не нашл. Хотя, щас попробую по сайтам полазить.
Номер ответа: 5
Автор ответа:
Chill
ICQ: 554200
Вопросов: 101
Ответов: 343
Профиль | | #5
Добавлено: 21.09.04 12:21
Не знаю точно но посмотри в сторону WM_SYSKEYUP
Вот тут можешь почитать описание сообщений...
http://www.firststeps.ru/mfc/winapi/keyb/keyb2.html