2010-04-09 15 views
5

Một câu hỏi tương tự đã được hỏi, vì vậy tôi sẽ không lãng phí thời gian tái giải thích nó, một cuộc thảo luận hiện tại có thể được tìm thấy ở đây: ToAscii/ToUnicode in a keyboard hook destroys dead keysLàm thế nào tôi có thể sử dụng ToUnicode mà không phá vỡ hỗ trợ khóa chết?

Lý do tôi đăng một câu hỏi mới tuy nhiên được rằng Tôi dường như đã đi qua một 'giải pháp', nhưng tôi không hoàn toàn chắc chắn làm thế nào để thực hiện nó.

bài

Blog này dường như đề xuất một giải pháp cho vấn đề của ToUnicode giết chết hỗ trợ-key: http://www.siao2.com/2005/01/19/355870.aspx

Tuy nhiên tôi không chắc chắn làm thế nào để thực hiện các giải pháp đề nghị. Một cú đẩy đúng hướng sẽ được đánh giá cao.

Để được rõ ràng, phần tôi đề cập đến là:

Có hai cách để làm việc xung quanh này:

1) Bạn có thể tiếp tục gọi ToUnicode với các thông tin tương tự cho đến khi nó được xóa và sau đó gọi lại một lần nữa để đặt trạng thái trở lại vị trí nếu bạn chưa bao giờ nhập bất kỳ thứ gì hoặc

2) Bạn có thể tải tất cả thông tin bàn phím trước và sau đó nhập thông tin có thể tra cứu trong bộ nhớ cache thông tin của riêng bạn ý nghĩa của các tổ hợp phím, mà không cần phải gọi các API trễ r.

Tôi không chắc chắn làm cách nào để thực hiện một trong những điều đó (bàn phím và quốc tế hóa cách xa điểm mạnh của tôi), vì vậy mọi trợ giúp sẽ được đánh giá cao.

Cảm ơn

Trả lời

4

Phần đầu của câu trả lời là hoàn toàn thông tin miễn phí. Tuy nhiên, phần thứ hai không có ý nghĩa. ToUnicode()nên là một hàm thuần túy, chỉ hoạt động như một tra cứu. Tuy nhiên, nó không phải là. Nhưng bạn có thể gọi nó lặp đi lặp lại cho tất cả các đầu vào dự kiến, lưu trữ chúng trong bảng tra cứu của riêng bạn và truy cập vào đó.

Tôi khuyên bạn nên thêm một cờ lookDontTouch vào thông số wFlags; đó sẽ là một bản sửa lỗi API không phá vỡ tầm thường.

+5

nhưng sửa API win32 sẽ là tiền lệ nguy hiểm để đặt. Hãy suy nghĩ về số lượng công việc họ sẽ có trước họ nếu họ bắt đầu xuống * đó * con đường. – jalf

+0

@jalf: Tôi không chắc liệu đó có phải là châm biếm hay không. i18n/l10n của Windows đang hoạt động tích cực. Đối với bit này đặc biệt họ có lẽ không muốn. Net code (xử lý bàn phím là khá thấp cấp) để sửa chữa các API Win32 là một đề xuất hợp lý, có thể là người duy nhất. – MSalters

+0

Bất kỳ cơ hội nào của một ví dụ mã để đẩy tôi đi đúng hướng? Tôi xấu hổ khi nói rằng tôi vẫn còn một chút mất mát. Ugh, tôi ghét mấy thứ bàn phím này lắm. Cảm ơn. – RaptorFactor

0

Nếu bạn mở rộng tìm kiếm của mình để bao gồm key logging, bạn có thể nhận được một số câu trả lời. Phương pháp được trình bày trong liên kết cực kỳ cồng kềnh so với ToUnicode, nhưng nó hoạt động. Nó phát triển xung quanh việc tìm kiếm bố trí bàn phím hoạt động hiện tại từ registry và sau đó tự nạp và phân tích cú pháp DLL thích hợp.

Lưu ý cảnh báo, tôi đã thấy phần tải không thành công đáng tiếc trên Windows 64 bit.

+0

Tôi đã chạy một số thử nghiệm nhanh và có vẻ như mã thực sự không thành công trong phiên bản x64 của Windows trừ khi mã được biên dịch nguyên bản cho x64. Ugh, đây là tất cả nỗi đau trong mông. Xin cảm ơn, đây có vẻ là một lựa chọn thú vị. – RaptorFactor

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