Ứng Dụng Cơ Chế Hook Để Xây Dựng Chương Trình Hỗ Trợ Gõ Tiếng Việt Trên Hệ Điều Hành Window 32 Bit
Số trang: 10
Loại file: pdf
Dung lượng: 255.49 KB
Lượt xem: 133
Lượt tải: 0
Thông tin tài liệu
[Programming] Ứng dụng cơ chế Hook - Phần 1 Ứng dụng cơ chế Hook để xây dựng chương trình hỗ trợ gõ Tiếng Việt trên Hệ Điều Hành Windows 32 Bit - Phần 1 I.Sự kiện và thông điệp trên HĐH Windows I.1.Giới thiệu Ngày nay, Windows có lẽ không còn xa lạ với người sử dụng PC. Nhắc đến Windows, người ta thường nghĩ về nó như một Hệ Điều Hành (HĐH) dễ sử dụng, ở đó, tương tác giữa người dùng với các ứng dụng cũng như với các thành phần tiện ích của Windows thông qua giao diện đồ họa (GUI), bằng các thao tác trên keyboard, mouse vô cùng đơn giản. Một câu hỏi được đặt ra là : “Các ứng dụng làm thế nào để phân loại, lưu giữ cũng như đáp lại những tương tác đó cho người dùng ?”. Đối với Windows vấn đề này được giải quyết một cách trọn vẹn : HĐH đưa ra cơ chế thông điệp (message) cùng với tập hợp các cấu trúc dữ liệu và các hàm API hỗ trợ ứng dụng trong việc giao tiếp với người dùng. I.2.Hai loại hàng đợi thông điệp trên Windows Trước hết, ta cần phải biết làm thế nào HĐH Windows lưu trữ các thông điệp. Hai loại hàng đợi trong Windows phục vụ cho mục đích này : + Hàng đợi hệ thống (The System Queue) + Hàng đợi thông điệp của ứng dụng (Application Queue) Hàng đợi hệ thống (The System Queue) Windows có các trình điều khiển thiết bị (Drivers) chịu trách nhiệm cho các dịch vụ ngắt từ thiết bị phần cứng mouse và keyboard. Tại mỗi thời điểm ngắt phát sinh, các Driver này gọi một điểm vào (hàm) đặc biệt trong USER.EXE để chỉ ra rằng một sự kiện vừa xảy ra. Tất cả các sự kiện mouse, keyboard được lưu trong một hàng đợi được gọi là hàng đợi hệ thống (The System Queue). Đây là hàng đợi dùng chung cho toàn hệ thống , mọi tiến trình đang chạy đều chia xẻ hàng đợi này. Nhiệm vụ độc nhất của nó là ghi nhận lại những sự kiện phần cứng (mouse actions, keystrokes) khi chúng xảy ra. Hàng đợi thông điệp của ứng dụng (Application Queue) Khi một tiến trình được khởi tạo, một hàng đợi đại diện cho nó được tạo ra, hàng đợi này (đôi khi được gọi là hàng đợi tác vụ) được dùng để chứa những thông điệp sẽ được gởi cho các cửa sổ của ứng dụng. Những thông điệp này là những thông điệp được gởi một cách tường minh bằng một trong hai hàm sau : + PostMessage + PostAppMessage (Lưu ý : Hàm PostQuitMessage không gởi thông điệp vào hàng đợi ứng dụng Ứng dụng có thể dùng hai Primitive là GetMessage và PeekMessage doWindows cung cấp để khảo sát hàng đợi của mình. Hai hàm này cho phép ứng dụng “Lấy một message ra khỏi hàng đợi” để từ đó phân loại và có những “Trả lời” thích hợp với người dùng. I.3.Bàn thêm về GetMessage và PeekMessage Bên trong HĐH Windows, GetMessage và PeekMessage thi hành cùng mã lệnh. Điểm khác biệt chính giữa 2 hàm là trong trường hợp không có message nào được trả về cho ứng dụng. Trong trường hợp này, GetMessage đặt ứng dụng vào trạng thái “Sleep” trong khi PeekMessage...
Xem thêm