Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: перехват комбинации ctrl + W  (Прочитано 12244 раз)
0 Пользователей и 1 Гость смотрят эту тему.
sruslan
Гость
« : 20-05-2008 05:06 » 

здравствуйте уважаемые. помогите решить пожалуйста следующую задачку. Надо перехватить комбинацию клавиш ctrl w
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 20-05-2008 09:29 » 

sruslan, мало данных для понимания твоего вопроса.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
sruslan
Гость
« Ответ #2 : 20-05-2008 09:45 » 

Уважаемый RXL, . Надо чтобы программа отпределяла нажатие комбинации клавиш ctrl w  и  все.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 20-05-2008 10:02 » 

sruslan, с таким подходом можно большим начальником быть или генералом, но не программистом. Халява так же не раздается.
Настоятельно рекомендую прочесть правила - там есть полезные рекомендации по заданию вопросов.

Где программа работает, в какое среде?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
sruslan
Гость
« Ответ #4 : 20-05-2008 10:16 » 

уважаемый RXL, , я не надеюсь на халяву, я готов оплатить ваши услуги. программа рабоает в windows x. да и не  начальник я и не генерал, а простой студент. Прсто задание звучит именно так. Написать программу для определения нажатия комбинации клавиш ctrl + w.
Записан
yurza
Гость
« Ответ #5 : 21-05-2008 05:02 » 

Ну попробуй для начало HOOK
Записан
Robo
Гость
« Ответ #6 : 29-05-2008 00:33 » 

на сообщение WM_KEYBOARD
Записан
Robo
Гость
« Ответ #7 : 29-05-2008 00:45 » new

А как сообщения редактировать? o_O

Немного ошибся в предыдущем посте, сообщение называеться - WH_KEYBOARD. Должна вызываться из сторонней библиотеки, дабы хук был зарегистрирован во всей системе! Вот пример такой библтотеки:

Код:
.386
.model flat,stdcall
option casemap:none

include C:\masm32\include\windows.inc
include C:\masm32\include\user32.inc
include C:\masm32\include\kernel32.inc

includelib C:\masm32\lib\user32.lib
includelib C:\masm32\lib\kernel32.lib

.data
Msg db "Это перехват Пробела",0
Tittle db "Hook Message",0
.data?
dllhandle  dd ?
hHook dd ?
hWnd dd ?
.code
DllEntry proc hInstDLL:HINSTANCE, reason:DWORD, reserved1:DWORD

mov  eax,TRUE
push hInstDLL
pop dllhandle
ret

DllEntry Endp



Hook proc nCode:DWORD, wParam:DWORD, lParam:DWORD


invoke CallNextHookEx,hHook,nCode,wParam,lParam


mov eax,wParam
.if eax==20h

invoke MessageBox,hWnd,addr Msg,addr Tittle,MB_OK+MB_ICONINFORMATION
.endif

ret

Hook endp
InstallHook proc hwnd:DWORD
push hwnd
pop hWnd

invoke SetWindowsHookEx,WH_KEYBOARD,addr Hook,dllhandle,NULL
mov hHook,eax
ret

InstallHook endp

End DllEntry

Вызываеться из приложения так:

Код:
invoke LoadLibrary,addr LibraryName
.if eax==NULL
jmp @@Error
.else
mov hLib,eax
invoke GetProcAddress,hLib,addr ProcName
mov HookProc,eax
invoke GetProcAddress,hLib,addr InstallProcName
mov InstallProc,eax
call [InstallProc]

где соответственно, ProcName и InstallProcName - указатели на массивы где твоя процедура из длл, вернее её имя и соответственно её адрес который ты сохраняешь для вызова. Это всё реализованно на перехват пробела. Тоесть на нажатие и на отжатие. Если нужно залью полный сорец, или могу послать тебе на почту.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines