Tôi đang sử dụng Delphi và cố gắng đọc từ máy quét mã vạch qua USB, để nó chỉ là một Thiết bị Giao diện Con người khác.Bàn phím Windows báo cáo mọi thứ hai lần
Tôi nhận được các chữ số chính xác, nhưng nhận được hai lần. Tôi tưởng tượng rằng đây là chìa khóa và chìa khóa.
Tôi có thể; kludge nó với một lá cờ và bỏ qua rất thứ hai đọc, nhưng thay vì làm điều đó propery.
Mã của tôi được điều chỉnh một chút từ this link.
Tôi có thể chỉ định rằng tôi chỉ muốn các sự kiện key_up khi gán móc?
KBHook := SetWindowsHookEx(WH_KEYBOARD,
@KeyboardHookProc,
HInstance,
GetCurrentThreadId()) ;
hoặc bằng cách nào đó kiểm tra cờ trong chính chức năng móc?
Cập nhật: Tôi đã cố gắng viết mã cho nó, nhưng có vẻ như tôi đã hiểu sai. Đây là những gì tôi đã cố gắng vào lúc bắt đầu chức năng móc tôi
// http://msdn.microsoft.com/en-us/library/windows/desktop/ms644984%28v=vs.85%29.aspx
if Code < 0 then
begin
Result := CallNextHookEx(KBHook, Code, WordParam, LongParam);
Exit;
end;
if (((LongParam and $80000000) <> $80000000) (* key is not being released *)
and ((LongParam and $40000000) <> $40000000)) (* key was not previously down *) then
begin
Result := CallNextHookEx(KBHook, Code, WordParam, LongParam);
Exit;
end;
[cập nhật thêm] Năm năm sau đó, và điều này vẫn không giúp đỡ, nhưng tôi thấy rằng tôi gốc follow-up question (q.v) does.
Cậu làm việc này? Nếu không, bạn có thể cung cấp chi tiết về máy quét không? –
+1 xin lỗi, tôi đã đi công tác. Sẽ kiểm tra vào thứ hai. Tôi đoán nó đã làm với tôi cũng kiểm tra trạng thái quan trọng trước đó - mà có lẽ không cần thiết khi đọc từ một máy quét mã vạch. – Mawg
Lolx !! Năm năm sau, tôi có cùng một vấn đề. Google & tìm một câu hỏi hoàn toàn phù hợp với vấn đề hiện tại của tôi - và đó là câu hỏi của tôi! Cảm ơn, Jim cho câu trả lời. – Mawg