Tôi làm việc trên một dự án có tên là UAWKS (Hỗ trợ bàn phím không dây của Apple không chính thức) giúp người dùng Windows sử dụng bàn phím bluetooth của Apple. Một trong những mục tiêu chính của UAWKS là để trao đổi các Cmd chủ chốt (mà cư xử như WinKey trong Windows) với Ctrl, cho phép người dùng làm Cmd + C cho sao chép, Cmd + T cho tab mới, v.v.Bàn phím mức thấp Hooks/SendInput với Winkey + L có thể? (khóa máy trạm bị chặn trong Vista và cao hơn)
Nó hiện đang được phát triển bằng cách sử dụng AutoHotkey, hoạt động khá tốt trong Windows XP. Tuy nhiên, trên Vista và Windows 7, Cmd + L gây ra vấn đề:
- Bất kể móc bàn phím ở mức độ thấp, Win + L luôn bị chặn lại bởi Windows và thường khóa các máy trạm. ..
- Bạn có thể vô hiệu hóa máy trạm khóa với this registry hack, nhưng nhấn Win + L vẫn không thể hồi phục trong AHK
- Nhấn Giành chiến thắng + L để Winkey ở trạng thái Keydown cho đến lần tiếp theo (bổ sung) Winkey Up. Mô phỏng một sự kiện Keyup dường như không hoạt động!
Dường như Win + L là một hợp âm đặc biệt mà messes mọi thứ khác lên.
Tôi đã xem xét mã nguồn AHK và cố gắng giải quyết vấn đề này trong SendKey()
trong keyboard_mouse.cpp (gần dòng 883 trong v1.0.48.05), nhưng nó không hoạt động. Tôi đã viết ứng dụng hook bàn phím mức thấp của riêng mình trong C# và tôi thấy cùng một vấn đề.
Có ai khác chạy vào điều này không? Có cách giải quyết nào không?
Tôi nên thêm rằng có các bài đăng trên diễn đàn tại AutoHotkey.com, nhưng các giải pháp là lỗi thời hoặc không chính xác (xem bên dưới). Ngoài ra, câu hỏi của tôi không thực sự giới hạn đối với AutoHotkey. Cuối cùng tôi muốn thực hiện lại toàn bộ chương trình trong C#. Đây là một câu hỏi về cách Windows Vista và Windows 7 xử lý Winkey + L một cách khác nhau, và nếu có ai đã xem/giải quyết vấn đề này trước đây. http://www.autohotkey.com/forum/viewtopic.php?t=27554&highlight=winkey http://www.autohotkey.com/forum/viewtopic.php?t=15513&postdays=0&postorder=asc&start=0 –