한 컴퓨터에는 일반 키보드와 키보드를 에뮬레이트하는 바코드 스캐너가 있습니다. 내 앱이 키보드 입력을 받으면 어떻게 그 입력이 바코드 스캐너 또는 실제 키보드에서 나오는지 확인할 수 있습니까?키보드 입력이 바코드 스캐너에서 오는 것인지 어떻게 알 수 있습니까?
답변
둘 다 입력을 받게됩니다. 아니 동시에, 물론. 그것은 모두 대기열에 배치되지만 Windows는 두 키보드의 키 이벤트를 처리합니다.
그러나, 도움이되지 마십시오. David Heffernan이 말했듯이 두 키보드를 컴퓨터에 연결하고 메모장을 열고 임의의 문자를 입력하여 어느 것이 입력을 생성하는지 쉽게 알 수 있습니다.
"C# 코드로 확인"하고 싶다고 대답했지만 그게 무슨 뜻인지는 알 수 없습니다. 키보드 입력을 읽고 화면에 표시하는 콘솔 앱을 만드는 방법은 어떻습니까?
using System;
class AdvancedKeyboardTester
{
static void Main(string[] args)
{
for (; ;)
{
Console.ReadKey();
}
}
}
을 눌러 Ctrl 키 + C 당신이 재미의 타이어가 프로그램을 종료 할.
편집 : 당신이 당신의 모든 키보드의 원료 인 에이블 입력하고 메시지를 전송하는 장치를 결정하기 위해 결과를 열거 할 수 있습니다 RegisterRawInputDevices
function을 찾고있는 것 같습니다. Using Raw Input from C# to handle multiple keyboards
편집 : 2 :
다행히 사람이 이미이에 대한 C#을 래퍼 라이브러리를 작성했습니다처럼, 그것은 코드 프로젝트에서 다운로드 가능한 보이는는 (이 정보는 단지에서 속여 유지 보인다 의견)
바코드 스캐너를 사용하는 경우 훨씬 편리합니다. 이러한 목적으로 명시 적으로 설계 되었기 때문에 거의 모든 것이 입니다. 표준 키보드가 아닌 바코드 스캐너에서 입력이 있음을 나타내는 일부 센티널 문자를 입력에 접두사 (및/또는 접미사)로 표시 할 수 있음을 의미합니다. (자세한 정보는 바코드 스캐너의 사용자 설명서를 확인하십시오.) 그런 다음 센티널 문자의 유무에 따라 키보드 입력을 필터링하면됩니다. 또한 접두어와 접미어 사이의 문자가 얼마나 빨리 입력되었는지 확인할 수 있습니다.
ok.you 진짜로 저를 도와주세요. 그러나 나는 이것을 이해할 수 없습니다. 당신이해야 할 일은 센티넬 문자의 존재 여부에 따라 키보드 입력을 필터링하는 것입니다. –
@raha : 기본적으로 컴퓨터에 기본적으로 "안녕하세요, 나"라고 말하는 문자를 보내도록 스캐너를 구성 할 수 있습니다. 입력 스트림에서 해당 문자를 볼 때 사용자가 키보드에서 입력 한 내용이 아니라 바코드 스캐너에서 정보가 전달된다는 것을 알고 있습니다. 바코드 스캐너와 함께 제공된 설명서를 확인 했습니까? 이에 대한 자세한 정보가 있어야합니다. –
감사합니다. 친애하는 코디 gray.i는 마침내 그것을 얻었다! 나는 그것을 점검 할 것이다. (나는 아직 그것을 가지지 않고있다!!). –
이것은 OS에 따라 다르지만 대부분의 최신 운영 체제에서는 두 가지 모두에서 동시에 입력 할 수 있습니다. 가장 좋은 방법은 플랫폼에서 실제로 시도하는 것입니다. 두 사람이 동시에 입력 할 필요
피)
나는 windows xp를 사용한다. –
마이크로 소프트의 멀티 포인트 SDK를 살펴 보자
(편집 :이 답변이 더 이상 적용 이제 문제는 명확하게 된 것을 내가 해요 없습니다. 다른 사람들이 발견 할 수 있도록 여기에 남겨 둡니다.)
ok.thanks.but Microsoft의 MultiPoint SDK에 대해 조금 설명해 주시겠습니까? –
** 키보드 **는 어떻게 작동합니까? –
http://en.wikipedia.org/wiki/Windows_MultiPoint_Mouse_SDK 참조 : "각 스테이션에 단일 모니터, USB 2.0 허브, 키보드 및 마우스를 연결하여 여러 스테이션을 WMS 2010 호스트 컴퓨터에 추가 할 수 있습니다." –
키 입력 사이의 시간 지연을 이벤트 수신기에서 확인하십시오. 키보드를 사용하는 사람의 입력은 비교적 느린 반면, 바코드 스캐너는 키 스트로크를 매우 빠르게 전송합니다. 웹 응용 프로그램에서 Javascript를 사용하여 이러한 작업을 수행했기 때문에 이것이 효과가 있다는 것을 알고 있습니다.
C# 프로그래밍에 대해 잘 모르겠습니다. 행복한 날!
시도 :
Dim PreviousKeyPressTime As DateTime = Nothing
Private Sub TextBox1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyCode = Keys.Enter Then
PreviousKeyPressTime = Nothing
TextBox1.Text = String.Empty
Else
If PreviousKeyPressTime = Nothing Then
PreviousKeyPressTime = DateTime.Now
End If
Dim startTime As DateTime = Now
Dim runLength As Global.System.TimeSpan = startTime.Subtract(CType(Me.PreviousKeyPressTime, DateTime))
Dim millisecs As Integer = runLength.Milliseconds
Dim secs As Integer = runLength.Seconds
Dim TotalMiliSecs As Integer = ((secs * 1000) + millisecs)
lblDiff.Text = TotalMiliSecs
If TotalMiliSecs <= 50 Then
lblMsg.Text = String.Empty
Else
lblMsg.Text = "keyboard Input not Allow"
End If
PreviousKeyPressTime = DateTime.Now
End If
End Sub
출처 :
게시 한 코드를 설명하는 것이 더 낫습니다.또한 블로그 링크는 글을 쓰는 시점에서 죽었습니다. –
이 코드는 얼마나 빨리 키가 들어 왔는지를 나타내고 너무 느리면 사람이 입력하는 것으로 결정합니다. 실제로 작동하는지는 알 수 없지만 이것이 코드의 의도입니다. – Hucker
거의 모든 바코드 리더는 그것을 읽고 어떤 접두사와 접미사로 구성 할 수 있습니다 http://itlearnerinsect.blogspot.com/. 예를 들어 접두사 "*"와 접미사를 사용하여 구성한 다음 C# 코드에서 입력 스트림에서 *를 가져오고이 텍스트 상자의 lostfocus 이벤트가 발생할 때마다 보이지 않는 텍스트 상자에 포커스를 강제로 적용하십시오 모든 코드를 입력하여 처리하십시오. 접두사로 선택한 문자는 키보드에 입력되지 않습니다. 또한 화면을 탐색 할 때 사용자가 객체에 도달하지 못하도록 텍스트 상자의 tabstop 속성을 false로 설정하십시오. 행운을 빕니다 !
다음은 @ asif의 대답으로 모델링 한 것입니다. 그것은 WPF 애플 리케이션에서 사용하기위한 C#이며 테스트를 거쳤습니다. 스톱워치는 datetime보다 정확하기 때문에 System.Diagnostics
네임 스페이스에서 찾을 수 있습니다.
특정 텍스트 상자가 아닌 앱에 포커스가있을 때 텍스트를 캡처하고 싶었 기 때문에 약간 다릅니다. 제대로 처리하기 위해서는 실제 문자가 삽입되는 것을 알지 못하기 때문에 Key
열거 형만 나타납니다. 1부터 10까지의 숫자를 주로 염두에두고 그 열거 형은 D1
, D2
등 이었기 때문에 필요할 때 D 부분을 제거합니다.
Stopwatch _inputStopwatch = new Stopwatch();
string _input = "";
private void Window_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
_inputStopwatch.Reset();
HandleBarcode(_input);
_input = "";
}
else
{
if (!_inputStopwatch.IsRunning)
_inputStopwatch.Start();
else if (_inputStopwatch.ElapsedMilliseconds > 50)
{
_inputStopwatch.Restart();
_input = "";
}
Console.WriteLine("DEBUG: " + e.Key + " - " + _inputStopwatch.ElapsedMilliseconds + "ms");
var keyString = e.Key.ToString();
if (keyString.Length == 2 && keyString.StartsWith("D"))
keyString = keyString[1].ToString();
//if (_inputStopwatch.ElapsedMilliseconds < 50)
_input += keyString;
//else
// _input = "";
_inputStopwatch.Restart();
}
}
private void HandleBarcode(string barcodeInput)
{
//do stuff with the barcode input
}
- 1. USB 바코드 스캐너에서 읽기
- 2. 바코드 스캐너에서 만료일을 어떻게 확인할 수 있습니까?
- 3. 바코드 스캐너에서 읽기
- 4. 사용자 입력이 바코드 스캐너 또는 키보드에서 온 것인지 확인하는 방법?
- 5. PHP를 사용하여 바코드 스캐너에서 데이터 가져 오기
- 6. realloc은 얼마나 복사 할 것인지 어떻게 알 수 있습니까?
- 7. 파이썬에 libmysqlclient.so의 어떤 버전을 사용할 것인지 어떻게 알 수 있습니까?
- 8. 키보드 에뮬레이트 바코드 리더
- 9. 어떻게 알 수 있습니까?
- 10. iPhone - scrollToRowAtIndexPath가 스크롤 할 것인지 알 수 있습니까?
- 11. PHP 프레임 워크를 어떻게 변경할 것인지, 어떻게 평가할 수 있습니까?
- 12. .net (C#) Windows 응용 프로그램의 바코드 스캐너에서 데이터를 읽습니다!
- 13. 블루투스를 사용하여 블루투스 바코드 스캐너에서 안드로이드 장치로 데이터를 읽는 방법?
- 14. , 어떤 페이지가 현재인지 어떻게 알 수 있습니까?
- 15. 다른 웹 사이트에서 오는 사용자의 출처를 어떻게 알 수 있습니까?
- 16. 데이터베이스에서 오는 키워드의 수를 어떻게 알 수 있습니까?
- 17. log4net이 config 파일을 가져 오는 위치를 어떻게 알 수 있습니까?
- 18. 벨소리로 노래를 가져 오는 sdcard의 URL을 어떻게 알 수 있습니까?
- 19. 사용자 탭 키보드 이벤트와 생성 된 키보드 이벤트의 차이점을 어떻게 알 수 있습니까?
- 20. 사용자가 로그인했는지 어떻게 알 수 있습니까?
- 21. 포인터가 NSObject인지 어떻게 알 수 있습니까?
- 22. mapView가로드되었는지 어떻게 알 수 있습니까?
- 23. ResourceBundle의 출처를 어떻게 알 수 있습니까?
- 24. AS3 키보드 입력이 자식 SWF에 할당
- 25. WP7에서이 바코드 라이브러리를 사용할 수 있습니까?
- 26. 예외가있을 수 있음을 어떻게 알 수 있습니까?
- 27. 요청이 프록시에서 오는 것인지 확인하는 방법은 무엇입니까?
- 28. 어떻게 현재 키보드 레이아웃을 그릴 수 있습니까?
- 29. 고객이 파일이 나에게서 온 것인지 어떻게 확인할 수 있습니까?
- 30. MC75 바코드 리더 문제
1. 메모장을 엽니 다. 2. 키보드에서 입력을 생성하는 키보드를 입력하십시오. –
감사하지만 C# 코드로 확인하고 싶습니다 !! –
@raha 왜 그렇게하고 싶습니까? –