![]() |
|
Модераторы: Akina |
![]()
|
|
| Dad |
|
|||
|
Unregistered |
ниже приведенная муть эмулирует нажатие клавиши, а
как послать нажатие клавиши конкретному окну (неактивному) Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, _ ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Const KEYEVENTF_EXTENDEDKEY = &H1 Const KEYEVENTF_KEYUP = &H2 Const VK_Enter = &HD ''''''''''''''''''''''''''''''''''''''''''' Private Timer1_Timer() keybd_event VK_Enter, 0, 0, 0 ' нажимаем keybd_event VK_Enter, 0, KEYEVENTF_KEYUP, 0 ' отпускаем надо послать неактивному конкретному окну, кто играл в Ультиму Онлайн тот поймет, я хочу зделать себе макркр который не будет захватывать управление компом, чтоб я мог играть и лазить в инете одновременно.... |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
SendMessage
PostMessage -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Dad |
|
|||
|
Unregistered |
ну блин, сенк конечно, но это я сам врубился, просто очень давно не писал... мне подробней надо вот как я написал так же напиши плиз.....
1) декларация: SendMessage PostMessage 2) пример вызова: SendMessage PostMessage |
|||
|
||||
| Dad |
|
|||
|
Unregistered |
ой извини за прошлый топик это я чет втупил... давно не писал...
короче задаю вопрос по другому : как послать нажатие клавиши НЕ АКТИВНОМУ окну зная его hwnd и заголовок вот такая фича, закрыть это окно я могу , а вот эмулировать нажатие F1 не получается, че я неправильно делаю мне надо чтоб в НЕ АКТИВНОМ окне (игра) по таймеру нажимались клавиши(F1, F2, ...) может вообше можно как то по другому нажатие клавишь ловило НЕ АКТИВНОЕ окно. это для игры Ультима Онлайн, там на клавиши можно написать макрос и нажимая клавишу будет выполняться действие, но это занимает комп, я видел для нее самопальные проги, которые жмут клавиши в неактивном окне игры, но они хреново написаны и слишком тормозят комп... '------------------------------------------ Private Declare Function FindWindow Lib "user32" _ Alias "FindWindowA" (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Private Declare Function PostMessage Lib "user32" _ Alias "PostMessageA" (ByVal hwnd As Long, _ ByVal wMsg As Long, ByVal wParam As Long, _ ByVal lParam As Long) As Long '''''''''Const VK_F1 = &H70 '''''''''Const WM_QUIT = &H12 Dim hW As Long '---------------------------------------------- Private Sub tim1_Timer() hW = FindWindow(vbNullString, "Безымянный - Блокнот" & Chr(0)) Call PostMessage(hW, &H12, 0, 0) 'работает блокнот закрывается !!!!! ''' Call PostMessage(hW, &H70, 0, 0) 'НЕ РАБОТАЕТ !!!!! |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
VK_F1 - это не сообщение, это код клавиши, а сообщение - WM_KEYDOWN и WM_KEYUP
Лично я это не делал, так что практическую консультацию не дам. Вот отрывок из хэлпа по WM_KEYDOWN The WM_KEYDOWN message is posted to the window with the keyboard focus when a nonsystem key is pressed. A nonsystem key is a key that is pressed when the ALT key is not pressed. WM_KEYDOWN nVirtKey = (int) wParam; // virtual-key code lKeyData = lParam; // key data Parameters nVirtKey Value of wParam. Specifies the virtual-key code of the nonsystem key. lKeyData Value of lParam. Specifies the repeat count, scan code, extended-key flag, context code, previous key-state flag, and transition-state flag, as shown in the following table: Value Description 0-15 Specifies the repeat count. The value is the number of times the keystroke is repeated as a result of the user holding down the key. 16-23 Specifies the scan code. The value depends on the original equipment manufacturer (OEM). 24 Specifies whether the key is an extended key, such as the right-hand ALT and CTRL keys that appear on an enhanced 101- or 102-key keyboard. The value is 1 if it is an extended key; otherwise, it is 0. 25-28 Reserved; do not use. 29 Specifies the context code. The value is always 0 for a WM_KEYDOWN message. 30 Specifies the previous key state. The value is 1 if the key is down before the message is sent, or it is 0 if the key is up. 31 Specifies the transition state. The value is always 0 for a WM_KEYDOWN message. Return Values An application should return zero if it processes this message. -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Dad |
|
|||
|
Unregistered |
мда... ну то что это не сообшене дошло, но толку от хелпа мало...
ниче у меня не вышло.... |
|||
|
||||
| Dad |
|
|||
|
Unregistered |
мде... все просто оказалось....
const WM_KEYDOWN = &H100 const VK_F1 =&H70 Call PostMessage(hW, WM_KEYDOWN , VK_F1 , 1) и работает как в сказке ! |
|||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
A не подскажите, как тому-же окну послать сообщение о нажатии и отпуске клавиши [W]?
-------------------- (С) kapbepucm |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Найди константу от этой буквы в том же MSDN...
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Tectoder |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 202 Регистрация: 13.3.2007 Репутация: нет Всего: 8 |
Call PostMessage(hW, WM_KEYDOWN , VK_F1 , 1)
... Call PostMessage(hW, WM_KEYUP , VK_F1 , 1) ? |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Это вопрос?
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
"Найди константу от этой буквы в том же MSDN... "
Как я понял, здесь последний параметр играет большую роль. В данном случае функциональная клавиша [F1] "работает как в сказке", но написав нижеприведённое, поменяв на [W], как вы предложили: Dim HWND As Long Shell "c:\windows\system32\notepad.exe", vbMaximizedFocus HWND = GetForegroundWindow PostMessage HWND, WM_KEYDOWN, VK_W, 1 PostMessage HWND, WM_CHAR, VK_W, 1 PostMessage HWND, WM_KEYUP, VK_W, 1 результата я не увидел. Помогите разобраться с последним параметром для PostMessage c WM_KEYDOWN! -------------------- (С) kapbepucm |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Код покажи полностью...
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| kapbepucm |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
В идеале я хочу, что-бы в текстовом редакторе вывелась буква "W", ещё лучше, если-бы вывелась в неактивном окне (для активнивного- kbd_event подходит). Для клавиши[F1] "работает как в сказке":
...но если вместо VK_F1 написать VK_W, то результата я не ощущаю :( код, который не работает:
Короче, разъясните непонятливым, что написать в lParam (проблема явно там), ну хотя-бы для активного окна, но обязательно используя PostMessage! Это сообщение отредактировал(а) kapbepucm - 18.6.2007, 15:49 -------------------- (С) kapbepucm |
||||
|
|||||
| bom |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 329 Регистрация: 22.2.2004 Где: Казахстан, Алматы Репутация: 4 Всего: 6 |
Тренируйся:
Добавлено через 8 минут и 38 секунд
|
||||
|
|||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |