• Thứ Hai, 22/12/2003 10:46 (GMT+7)

    Câu hỏi :
    Xin hướng dẫn cách viết 1 chương trình có thể chạy nền giống Just Click’n See hay VietKey bằng Visual C++ (MFC).

    Trả lời :
     

    Các chương trình VietKey, Just Click’n See chỉ là các ứng dụng bình thường như bao ứng dụng khác, do đó qui trình viết các ứng dụng này cũng giống như  khi viết những phần mềm khác. Trên Windows không có khái niệm ứng dụng TSR như trên DOS vì các ứng dụng đều có thể chạy đồng thời trên Windows, mỗi ứng dụng muốn chạy lâu hay mau tùy thích, lúc nào muốn ngừng thì ngừng. Tuy nhiên bạn có thể tạo các dịch vụ (service) nếu bạn chạy trên các WinNT, Win2000 hay WinXP. Các service là những module phần mềm phục vụ 1 chức năng nào đó nhưng được quản lý trực tiếp bởi Windows (bạn có thể thay đổi chế độ hoạt động của nó: Start, Stop,...). Ngoài ra trên bất kỳ môi trường Windows nào, bạn cũng có thể tạo các “virtual device driver”, mỗi VDD là 1 module phần mềm tích hợp vào Windows để tăng cường chức năng nào đó của Windows.

    Hỏi: Xin hướng dẫn cách sử dụng hook trong VB để luôn nhận được thông tin về chuột (move, click,...). Tôi có tham khảo bài “Win32 Hook” trong MSDN và dựa theo source code C trong đó nhưng chỉ nhận được thông tin khi chuột di chuyển trên phần form của tôi. Tôi cài đặt hook như sau:

    hhookReturn = SetWindowsHookEx (WH_MOUSE,AddressOf MouseHookProc,0&,App.ThreadID)

    Đáp: Windows cung cấp 2 loại hook khác nhau :

    • “Thread hook” chỉ ảnh hưởng đến ứng dụng thiết lập hook đó. Để tạo loại hook này, bạn chỉ cần viết hàm xử lý hook trong file chương trình và gọi hàm SetWindowsHookEx() như bạn đã làm.

    •  “System hook” ảnh hưởng đến mọi ứng dụng đang chạy. Để tạo được loại hook này, hàm xử lý hook phải nằm trong file *.dll (thư viện liên kết động). Qui trình đăng ký “system hook” cũng giống như qui trình đăng ký “thread hook” (gọi hàm SetWindowsHookEx() như bạn đã làm).

    Tóm lại, bạn hãy đưa hàm xử lý hook của bạn vào 1 file *.dll nào đó rồi đăng ký nó để có thể chặn được bất kỳ sự kiện nào về chuột được thực hiện bởi người dùng.

    Chuyên mục: Lập trình