2011-12-26 45 views
9

Tôi không biết cửa sổ móc hoạt động như thế nào ở "mức hệ thống". MSDN chỉ chạm vào những gì đang xảy ra rất ngắn gọn:Móc cửa sổ - Làm thế nào để chúng hoạt động?

Một móc là một điểm trong cơ chế hệ thống nhắn tin xử lý nơi một ứng dụng có thể cài đặt một chương trình con để theo dõi lưu lượng tin nhắn trong các loại hệ thống và quy trình nhất định của thông điệp trước khi họ đạt đến thủ tục cửa sổ mục tiêu .

đoán tốt nhất của tôi là một cái gì đó như dưới đây:

enter image description here

Trước khi mỗi tin nhắn sẽ được thêm vào hàng đợi thông điệp cho một cửa sổ, đầu tiên nó sẽ gửi thông điệp tới các móc toàn cầu/địa phương, có thể làm điều gì đó, tùy thuộc vào quy trình móc của họ. Sau tất cả các móc móc cục bộ và móc cục bộ, thông báo cuối cùng được thêm vào hàng đợi thông báo của cửa sổ.

Tuy nhiên, MSDN nói rằng đối với một số loại móc, nó sẽ giám sát events, notifications, vv

Một ví dụ là WH_MOUSE_LL móc:

Cài đặt một thủ tục hook theo dõi thu nhập thấp cấp chuột sự kiện đầu vào. Để biết thêm thông tin, hãy xem quy trình móc LowLevelMouseProc .

Khi họ nói events, chúng tôi đang nói về thông báo cửa sổ hay chúng có ý nghĩa gì khác?

Tôi có sai không?

+8

Điểm kiểu thưởng cho hình ảnh của biểu đồ tự do. – rkb

+1

Dưới đây là một số giải thích nhỏ http://b.1asphost.com/mmbaig/Tutorials/Windows_Hooks.html –

+2

Nhiều móc là thông điệp dựa trên. Nhưng không phải cái móc bạn đang nói đến, nó thực sự được kích hoạt bởi một "sự kiện". Nó chỉ chạy * trước * Windows tạo thông báo và đặt nó vào hàng đợi thông báo của cửa sổ có tiêu điểm. So sánh với WH_MOUSE, một hook toàn cầu chạy khi một ứng dụng gọi Get/PeekMessage và sắp lấy ra một thông điệp chuột từ hàng đợi tin nhắn. Do đó thực sự được kích hoạt bởi một tin nhắn. –

Trả lời

1

Có, đây là cơ chế cho thông điệp cửa sổ, bạn có thể xử lý dữ liệu này (tin nhắn) trước khi chúng đạt đến thủ tục cửa sổ mục tiêu (vòng lặp tin nhắn).

Nếu bạn muốn móc các cửa sổ quy trình khác, bạn có thể đơn giản làm điều này trong DLL và sử dụng DLL injection để tiêm thư viện của bạn cho quá trình khác.

Các vấn đề liên quan