-
06-03-2011, 11:47 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
có 2 WM_KEYDOWN trong 1 lần nhấn phím?
Mã:#include <WINDOWS.h>MSG msgd;HHOOK adres;LRESULT CALLBACK fillfunc(int code,WPARAM wparam,LPARAM lparam){ if((code==HC_ACTION)&&(!(lparam>>31))){ MessageBox(NULL,"keydown","notice",MB_OK); }else{ return CallNextHookEx(NULL,code,wparam,lparam);} return CallNextHookEx(NULL,code,wparam,lparam);}int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd ){ adres=SetWindowsHookEx(13,fillfunc,hInstance,0); while(GetMessage(&msgd,NULL,0,0)){ TranslateMessage(&msgd); DispatchMessage(&msgd); } UnhookWindowsHookEx(adres); return 0 ;}
View more random threads:
- Cryptography Next Generation Cách nào chạy trên windows XP ?
- mọi người cho em hỏi với ạ hook messagebox
- Hàm tìm kiếm tất cả các file loại trừ một số thư mục?
- Làm sao để xoay ngược ảnh Bitmap khi sử dụng Webcam?
- Lỗi khi thay đổ kích thước cửa sổ!
- ý nghĩa của HDC trong c++ ?
- Tạo Phím tắt trong nội bộ ứng dụng ???
- Phân biệt _cdecl và _stdcal
- Cách Sử Dụng Lớp ListView và ComboBox trong win32 API
- Làm cách nào để nhận biết messagebox của 1 ứng dụng đang chạy?
-
07-03-2011, 04:08 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
em đã giải quyết được vấn đề trên nhưng giờ em có thêm một câu hỏi la vi sao em sử dụng KBDLLHOOKSTRUCT lại báo lỗi 'KBDLLHOOKSTRUCT' : undeclared identifier' mặc dù đã include<winuser.h>
nhưng vẫn không được
-
08-03-2011, 04:24 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mã:#include <WINDOWS.h>MSG msgd;HHOOK adres;LRESULT CALLBACK fillfunc(int code,WPARAM wparam,LPARAM lparam){ if((code==HC_ACTION)&&(!(lparam>>31))){ MessageBox(NULL,"keydown","notice",MB_OK); }else{ return CallNextHookEx(NULL,code,wparam,lparam);} return CallNextHookEx(NULL,code,wparam,lparam);}int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd ){ adres=SetWindowsHookEx(13,fillfunc,hInstance,0); while(GetMessage(&msgd,NULL,0,0)){ TranslateMessage(&msgd); DispatchMessage(&msgd); } UnhookWindowsHookEx(adres); return 0 ;}
Mã:(DWORD)lParam & 0x40000000
em đã giải quyết được vấn đề trên nhưng giờ em có thêm một câu hỏi la vi sao em sử dụng KBDLLHOOKSTRUCT lại báo lỗi 'KBDLLHOOKSTRUCT' : undeclared identifier' mặc dù đã include<winuser.h>
nhưng vẫn không được
-
31-03-2011, 03:12 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Bạn sửa bấm 1 phím ra 2 lần MessageBox như thế nào ? Mình cũng bị giống vậy [IMG]images/smilies/21.gif[/IMG]
-
31-03-2011, 04:24 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Peter đã chỉ phía trên rồi đấy chứ! Cậu đọc lại.
-
31-03-2011, 05:06 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
oh .. nó chạy đúng rồi ... Peter ơi, tại sao phải thêm cái điều kiện đó vào thế ?
-
31-03-2011, 05:19 PM #7Junior Member
- Ngày tham gia
- Sep 2015
- Đang ở
- 24 Rạch Bùng Binh , P10,Q3 , HCM
- Bài viết
- 0
Cậu cứ xem MSDN sẽ rõ, khi cậu nhấn thì cuối cùng cũng phải nhả phím! Vậy thì cái cậu cần là WM_KEYDOWN hay WM_KEYUP??? Vì thế nên phải lọc bằnng thằng lParam.
-
23-04-2011, 08:38 AM #8Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Tớ muốn bắt mousewheel trong khi đang bấm ctrl thì phải làm thế nào hả peter?
-
01-05-2011, 10:14 AM #9Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Nếu mình sử dung WH_KEYBOARD_LL thì wParam của nó để xác định là keyup hay keydown(Mình đọc ở trong MSDN thấy nó ghi là vậy).
Còn sử dụng WH_KEYBOARD thì wParam dùng để xác định phím của mình. Nên mình làm thử cái của peter là (DWORD) lParam & 0x40000000. Thấy nó vẫn ra 2 cái messagebox nhưng lúc xác định wParam == 0x0100 thì nó chỉ xác định keydown thôi.
Đúng không Peter nhỉ?
-
01-05-2011, 01:07 PM #10Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
wa cái topic này em lập một năm rồi mà vẫn còn đông vui we.Hồi trước em viết cái này thật ra la một con Keylog đơn giản , vì muốn gọn nhẹ nên mới dùng cái WH_KEYBOARD_LL nay để khỏi phải đụng tới dll nhưng lại gặp vấn đề bấm 1 cái ra 2 cái .Đợi lâu quá không thấy ai rep đành lên google search và cuối cùng tìm được trang này : http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
Thấy trong đó có phần nói về cái biến wparam :
Mã:wParam [in] Type: WPARAM The identifier of the keyboard message. This parameter can be one of the following messages: WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, or WM_SYSKEYUP.
Mã:if((ncode==HC_ACTION)&&(wparam==WM_KEYDOWN))//chỉ lấy các kí tự thường bỏ các phím hệ thống
Mã:typedef struct tagKBDLLHOOKSTRUCT { DWORD vkCode; DWORD scanCode; DWORD flags; DWORD time; ULONG dwExtraInfo; //chổ này trên MSDN là ULONG_PTR nhưng tren VC6++ không thấy đành đổi lại thành ULONG } KBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT, *LPKBDLLHOOKSTRUCT;
Ngọc Bích xanh bản chất thuộc dòng đá đá hoa (jade). Và cẩm thạch là tên gọi chung của ngọc bích. Vì thực chất chúng thuộc dòng đá đa khoáng được hình thành từ chất Silicat dưới dạng dioxy. Ngọc bích...
Chia sẻ Vòng tay ngọc bích xanh là...