Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: hw.t-k.ru
 Профиль | | #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

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам