2011-08-29 25 views
6

Tôi đang sử dụng một biểu mẫu đơn giản được tạo bởi VS 2010 chứa 2 nút, bắt đầu và dừng. Khởi động trình kích hoạt WH_MOUSE_LL bằng SetWindowsHookEx và dừng dừng móc. Móc hoạt động tốt và tôi mange để "thay thế" nút chuột giữa nhấp chuột với nhấp đúp, vấn đề duy nhất tôi có là nhấp vào nút Thu nhỏ/Tối đa hóa/Đóng của biểu mẫu, có vẻ như có một số loại "sự kiện đua" giữa móc và các sự kiện được gọi bằng các nút được đề cập ở trên. Nó phản ánh trên thực tế là khi bạn nhấn một trong các nút đó, nó sẽ bị "ép" một lúc trước khi nó hoàn thành hành động của nó (ví dụ: hình thức thu nhỏ). Khi tôi nhấp chuột phải vào biểu mẫu và chọn một trong những hành động đó, nó sẽ phản hồi ngay lập tức khi tôi dừng móc và nhấn một trong các nút được đề cập ở trên. Có ai gặp phải hành vi như vậy không?C# móc chuột cấp thấp và xử lý sự kiện theo mẫu

+3

Bản năng đầu tiên của tôi là bạn có thể đang sử dụng công cụ sai cho công việc - Tôi không thể nghĩ nhiều trường hợp khi bạn cần sử dụng móc nối Windows. Có lẽ nếu bạn có thể quay trở lại vấn đề dẫn đến việc bạn triển khai giải pháp này và đăng câu hỏi về điều đó thay thế? –

+1

Xin chào, theo như tôi biết và tôi đã thực hiện một nghiên cứu trước khi tiếp cận phương pháp này nếu tôi muốn chuột chung của mình tạo ra nhấp đúp khi tôi nhấp vào nút chuột giữa là "chặn" nhấp chuột giữa và mô phỏng hai lần nhấp chuột trái cho cùng một x, y của chuột và nếu tôi muốn nó hoạt động ngay cả khi ứng dụng của tôi. không nằm trong tiêu điểm hoặc được thu nhỏ (hoặc ở khay hệ thống) là cách duy nhất. Bất kỳ cách nào tôi là lập trình viên c/C++ tôi chỉ muốn sử dụng C# vì sự đơn giản của việc tạo ra một GUI. – Alex

+1

@Alex - Nghiên cứu của bạn dẫn bạn đến kết luận sai. Chỉ cần nắm bắt nút chuột giữa và thực hiện sự kiện tương tự như sự kiện chuột nhấp đúp (thực sự chỉ là một sự kiện nhấp chuột). Bên cạnh đó không phải tất cả những con chuột đều có nút chuột giữa nên hãy thận trọng về điều đó. –

Trả lời

2

Tôi cũng đã trải nghiệm điều này trước đây. Tôi không chắc chắn về nguyên nhân chính xác, nhưng tôi đã luôn giải quyết vấn đề bằng cách lắng nghe các sự kiện được kích hoạt khi chuột vào và rời khỏi khu vực khách hàng của biểu mẫu, cửa sổ, bất cứ điều gì. Bạn có thể sử dụng những sự kiện đó để móc và tháo chuột, và sau đó bạn sẽ nhận được hành vi bình thường.

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