2011-05-11 2 views
0

키 로크 이후 가상 키를 변경하려면 원시 입력을 사용하여 장치 정보를 가져 왔습니다. Actulay 나는 두 개의 키보드 (키보드와 바코드 스캐너)를 가지고 있으며, 원시 입력을 통해 키 스토크가 하나의 키 입력과 함께 제공 될 수 있습니다. 그러나 바코드 스캐너에서 온 가상 키를 변경해야합니다. 그것들을 "KeyChar = Convert.ToChar(0);" 으로 변경하면 어떻게 될까요?키로크 후 가상 키 변경 및 응용 프로그램에 보내기

답변

0

당신이 무엇을 요구하고 있는지, 정확한 환경인지 모르겠지만 Winforms를 사용하는 바코드 스캐너로 작업 해왔고, 스캔 한 텍스트를 먼저 가져와야한다는 내용이 있습니다. 그것을 양식에 보냅니다. 키 스트로크 캡처는 쉽지만 바코드 스캐너 나 키보드에서 키 스트로크가 있는지 어떻게 알 수 있습니까?

내가 사용한 트릭은 바코드 형식입니다. 그들은 보통 $와 같은 시작과 멈춤 기호를 가지고 있습니다. 스캐너를 사용하여 메모장에 무엇인가를 스캔하면 보게 될 것입니다.

그런 다음이 기호를 키 스트로크 캡처 시작 방법으로 사용하십시오. 그래서 매 $마다 다음 키 스트로크마다 캡쳐를 시작합니다. 다음 번에 캡쳐를 멈추고 해당 문자열을 가져 와서 원하는대로 할 수 있습니다. SendKeys를 사용하여 결과를 다시 폼에 저장하십시오 (적어도 시작/중지 기호를 제거했다고 가정).

참고 :이 코드는 code-xxx 바코드에서만 작동합니다. GTIN 표준의 경우 시작 또는 정지 신호를 사용하지 않아서 조금 더 까다 롭습니다.

+0

알았어. 그런데 어떻게 바코드 스캐너의 입력을 다른 어플라이언스로 보내는 것을 멈출 수 있습니까? –

+0

@raha 아 좋아, 스캐너와 다른 응용 프로그램 사이에서 스캔 한 데이터를 가로 채길 원한다는 것을 몰랐다. 스캐너가 자신의 응용 프로그램에 데이터를 전송했다고 가정했습니다. 아마도 다른 뭔가가 필요할 것입니다. –

+0

@ Kristoffer Jansson : 도움을 주셔서 감사합니다. –

0

PreProcessMessage을 덮어 쓰고 키보드 메시지를 처리하십시오.

+0

어떻게 PreProcessMessage로 가상 키를 바꿀 수 있습니까? –

+0

메시지에 대체하십시오 – jgauffin

+0

thanks.can 당신이 그것을 설명합니다. 이 오른쪽 : if (m.Msg == WM_KEYDOWN) { m.WParam = (IntPtr) ((키) Convert.ToChar (65)); } return base.PreProcessMessage (ref m); –

관련 문제