Ứ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
- Định dạng
- Dung lượng
- 255 KB
- Ngôn ngữ
- VI
- Lượt xem
- 216
- Bình luận
- 0
- Lượt tải
- 0
Đang tạo bản xem trước...
- Tên tài liệu
- Ứ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
- Mục lục
- Tài liệu không có mục lục rõ ràng.
- Số trang
- 10 trang
- Người đăng
- ThiNganHang
Bản tóm tắt chi tiết đang được tạo. Quay lại sau ít phút nhé.
Mô tả
Trích nội dung 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 trả về ứng dụng giá trị NULL. Ngay trước khi GetMessage và PeekMessage trả message về cho ứng dụng, hệ thống sẽ kiểm tra xem có sự tồn tại của hook WH_GETMESSAGE hay không. Nếu có một “Filter Function” (thực chất là 1 hàm) ứng với hook trên được cài đặt, hàm này sẽ được gọi. “Filter Function” không được gọi nếu PeekMessage không tìm thấy message và trả về NULL. PeekMessage với tùy chọn PM_NOREMOVE Theo mặc định, cả PeekMessage và GetMessage sẽ lấy message ra khỏi hàng đợi khi mỗi message được trả về cho ứng dụng. Tuy nhiên, có đôi lúc, ứng dụng có thể chỉ muốn vào hàng đợi để kiểm tra sự tồn tại của một messsage mà không muốn gỡ bỏ nó. Để làm được điều này, chương trình của ta sẽ gọi PeekMessage với tùy chọn PM_NOREMOVE, lúc này PeekMessage vẫn trả về message như thường lệ nhưng sẽ không lấy nó ra khỏi hàng đợi.(Chi tiết về GetMessage và PeekMessage có thể tham khảo tại Article “GetMessage and PeekMessage Internals” trong thư viện MSDN) II.Sự kiện bàn phím II.1.Mô hình chung Mỗi phím trên bàn phím được hệ thống gắn với một giá trị duy nhất gọi là mã quét (Scan Code), đây là một giá trị phụ thuộc thiết bị, tức là giá trị này sẽ lệ thuộc vào từng loại bàn phím cụ thể. Khi người dùng gõ một ph
Câu hỏi thường gặp
Làm sao để tải tài liệu này về?
Tài liệu “Ứ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” có giá 10.000đ. Bạn nạp tiền vào ví qua PayOS, sau đó bấm Tải xuống để mua và tải file gốc về máy.
Tài liệu dài bao nhiêu trang?
Tài liệu gồm 10 trang. Bạn có thể xem trước online trước khi tải.
Tôi có thể xem trước trước khi tải không?
Có. Bạn xem trước tài liệu ngay trên trang này bằng trình đọc online (một số trang đầu), rồi quyết định tải về.
Ứ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
Đang tạo bản xem trước...
[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 trả về ứng dụng giá trị NULL. Ngay trước khi GetMessage và PeekMessage trả message về cho ứng dụng, hệ thống sẽ kiểm tra xem có sự tồn tại của hook WH_GETMESSAGE hay không. Nếu có một “Filter Function” (thực chất là 1 hàm) ứng với hook trên được cài đặt, hàm này sẽ được gọi. “Filter Function” không được gọi nếu PeekMessage không tìm thấy message và trả về NULL. PeekMessage với tùy chọn PM_NOREMOVE Theo mặc định, cả PeekMessage và GetMessage sẽ lấy message ra khỏi hàng đợi khi mỗi message được trả về cho ứng dụng. Tuy nhiên, có đôi lúc, ứng dụng có thể chỉ muốn vào hàng đợi để kiểm tra sự tồn tại của một messsage mà không muốn gỡ bỏ nó. Để làm được điều này, chương trình của ta sẽ gọi PeekMessage với tùy chọn PM_NOREMOVE, lúc này PeekMessage vẫn trả về message như thường lệ nhưng sẽ không lấy nó ra khỏi hàng đợi.(Chi tiết về GetMessage và PeekMessage có thể tham khảo tại Article “GetMessage and PeekMessage Internals” trong thư viện MSDN) II.Sự kiện bàn phím II.1.Mô hình chung Mỗi phím trên bàn phím được hệ thống gắn với một giá trị duy nhất gọi là mã quét (Scan Code), đây là một giá trị phụ thuộc thiết bị, tức là giá trị này sẽ lệ thuộc vào từng loại bàn phím cụ thể. Khi người dùng gõ một ph
Đọc toàn bộ tài liệu
- Tên tài liệu
- Ứ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
- Mục lục
- Tài liệu không có mục lục rõ ràng.
- Số trang
- 10 trang
- Người đăng
- ThiNganHang
Bản tóm tắt chi tiết đang được tạo. Quay lại sau ít phút nhé.
Bình luận (0)
Chưa có bình luận nào. Hãy là người đầu tiên!
Bài tập Kinh tế học quốc tế (Có Đáp án)
15 bài tập Xác suất thống kê (có Lời giải)
Trắc nghiệm Đại số tuyến tính (Có Đáp án)
Bài tập Kinh tế nguồn nhân lực (KTNNL) 1 (Có lời giải)
So sánh nội dung trách nhiệm của người chuyên chở theo quy tắc Hague 1924, Hague Visby 1968 với quy tắc Hamburg 1978
Tiểu luận - Kinh tế phát triển - Phân tích nhận định "Việt Nam đã kiên định chọn hướng phát triển lấy con người làm trọng tâm ..."
600 Câu trắc nghiệm Tư tưởng Hồ Chí Minh
Đề cương - Luật vận tải
Tài liệu ôn tập Nguyên lý kế toán
Bài tập Xác suất thống kê đại học - có lời giải

Bình luận (0)
Chưa có bình luận nào. Hãy là người đầu tiên!