จำกัดการป้อนข้อมูลไปยังอุปกรณ์เฉพาะใน C#

ฉันมีอุปกรณ์สองเครื่อง (KeyBoard และ BarCodeScanner) และกล่องข้อความ 2 กล่อง (กล่องข้อความ 1 และกล่องข้อความ 2)

ตอนนี้ฉันต้องการจำกัดผู้ใช้ว่าเขาสามารถใช้ได้เฉพาะแป้นพิมพ์ในกล่องข้อความ 1 และเครื่องสแกนบาร์โค้ดในกล่องข้อความ 2

สิ่งนี้เป็นไปได้อย่างไรใน C #?


person Zain Ali    schedule 25.04.2011    source แหล่งที่มา
comment
เป็นไปได้ที่ซ้ำกันของ ฉันจะทำอย่างไร บอกว่าการป้อนข้อมูลด้วยแป้นพิมพ์มาจากเครื่องสแกนบาร์โค้ดหรือไม่ เมื่อเราทราบแล้วว่าจริงๆ แล้วผู้ชายคนนี้ต้องการอะไร ฉันคิดว่าการแก้ไขที่ฉันทำกับคำตอบนั้นค่อนข้างครอบคลุม   -  person Cody Gray    schedule 25.04.2011


คำตอบ (3)


คุณควรดูสิ่งนี้: อ่านข้อมูล จากเครื่องสแกนบาร์โค้ดในแอปพลิเคชัน Windows .net (C#)!

ดังนั้นเครื่องสแกนของคุณอาจส่งอักขระพิเศษเพื่อช่วยคุณระบุได้ว่าอินพุตนั้นมาจากเครื่องสแกน หรือบางทีอาจมีไลบรารีเพิ่มเติมที่คุณสามารถใช้เพื่อตรวจจับเหตุการณ์ดังกล่าว สมมติว่าเครื่องสแกนทำงานเหมือนกันกับคีย์บอร์ดโดยไม่มีอักขระพิเศษใดๆ เพื่อช่วยให้คุณรู้ว่าเครื่องสแกนนั้นมาจากเครื่องสแกนและไม่มีไลบรารีเพิ่มเติมจากไซต์ผู้ผลิตที่คุณสามารถใช้ได้ สิ่งที่คุณสามารถใช้คือ: วัดความเร็วในการพิมพ์ในเหตุการณ์ KeyDown ของกล่องข้อความที่สอง

ฉันสงสัยว่าเครื่องสแกนจะป้อนรหัสทันที ดังนั้นคุณจึงสามารถวัดความเร็วในการพิมพ์ได้อย่างมาก

จากนั้น หากความเร็วในการพิมพ์มากกว่าเกณฑ์ ( เช่น สำหรับมนุษย์ บันทึกความเร็วโลกอยู่ที่ประมาณ 1,000 ตัวอักษรต่อนาที) คุณจะลบข้อความที่ป้อน มันแฮ็ก แต่ฉันไม่มีความคิดที่ดีกว่านี้

person Liviu Trifoi    schedule 25.04.2011
comment
ลำดับอักขระพิเศษจะแตกต่างกันไปสำหรับเครื่องสแกนทุกเครื่อง ดังนั้นแอปพลิเคชันของฉันจึงขึ้นอยู่กับโมเดลบาร์โค้ด ฉันสามารถสรุปลักษณะนี้ด้วยวิธีใดก็ได้หรือไม่ - person Zain Ali; 27.04.2011
comment
ไม่ใช่ในลักษณะที่เชื่อถือได้ 100% แนวคิดเดียวที่ฉันมีคือตรวจจับสิ่งนี้โดยการวัดเมื่อมีคนป้อนอักขระด้วยความเร็วที่สูงกว่าความเร็วในการพิมพ์ของมนุษย์อย่างที่ฉันอธิบายไว้ในส่วนที่สองของคำตอบ แต่มันแฮ็ค - person Liviu Trifoi; 27.04.2011

ฉันทำงานกับเครื่องสแกนบาร์โค้ดเพียงครั้งเดียว ในเครื่องสแกนของฉันสามารถบังคับให้สร้างลำดับการควบคุมพิเศษก่อนที่จะส่งข้อมูลไปยังคอมพิวเตอร์ พฤติกรรมนี้ได้รับการควบคุมผ่านซอฟต์แวร์เนทิฟของเครื่องสแกนเนอร์ แต่ฉันไม่สามารถระบุรายละเอียดใดๆ ได้เนื่องจากฉันไม่ได้มีส่วนร่วมในการปรับแต่ง - เพื่อนร่วมงานของฉันปรับแต่งมันก่อนหน้าฉัน
ในเครื่องสแกนเคสของฉันส่ง Ctrl+J ก่อนวันที่สแกน และฉันสามารถกำหนดได้ว่าอินพุตจากแหล่งใดมาจากแป้นพิมพ์หรือจาก เครื่องสแกนบาร์โค้ด.

person Anton Semenov    schedule 25.04.2011

ฉันเดาว่ามันขึ้นอยู่กับวิธีการเชื่อมต่อสแกนเนอร์ หากเพียงเชื่อมต่อระหว่างคอมพิวเตอร์และแป้นพิมพ์ คุณจะโชคไม่ดี เนื่องจากไม่มีวิธีใดที่เชื่อถือได้ในการแยกแยะอินพุตของแป้นพิมพ์จากอินพุตของเครื่องสแกน

หากเชื่อมต่อแยกกัน จะต้องมีวิธีการบางอย่างในการรับข้อมูลสแกนเนอร์ อาจเป็นผ่านคลาสที่ซอฟต์แวร์สแกนเนอร์จัดเตรียมไว้ให้ ดังนั้นคุณต้องใช้สิ่งที่ให้ไว้ที่นั่นและใส่สิ่งที่คุณได้รับลงใน TextBox2.Text สำหรับการปิดการใช้งานอินพุตคีย์บอร์ดสำหรับกล่องนี้ คุณเพียงแค่ ป้องกันการป้อนข้อมูลใด ๆ โดยการตั้งค่า TextBox2.ReadOnly = true

person takrl    schedule 25.04.2011