yo Leute,
ich muss in einem Programm Zahlen über die Tastatur (eigentlich von einem Handscanner) auswerten.
Dazu fand ich die tolle Funktion
Damit diese Funktion auch funktioniert muss man diese über einen Timer laufen lassen (Polling).
Gibt es dafür eine andere Möglichkeit außer Polling, da ich irgendwie nicht will, dass ständig ein Timer auf so kurzen Intervall laufen muss?
Anbei mein derzeitiger Code:
Spoiler anzeigen
ich muss in einem Programm Zahlen über die Tastatur (eigentlich von einem Handscanner) auswerten.
Dazu fand ich die tolle Funktion
GetAsyncKeyState
.Damit diese Funktion auch funktioniert muss man diese über einen Timer laufen lassen (Polling).
Gibt es dafür eine andere Möglichkeit außer Polling, da ich irgendwie nicht will, dass ständig ein Timer auf so kurzen Intervall laufen muss?
Anbei mein derzeitiger Code:
C#-Quellcode
- using System;
- using System.Windows.Forms;
- using System.Text.RegularExpressions;
- using System.Runtime.InteropServices;
- using System.Collections.Generic;
- namespace WindowsFormsApplication1
- {
- public partial class Form1 : Form
- {
- [DllImport("user32.dll")]
- public static extern int GetAsyncKeyState(Int32 i);
- string code = string.Empty;
- string identifier = "97838";
- List<Keys> keys;
- public Form1()
- {
- InitializeComponent();
- }
- private void Form1_Shown(object sender, EventArgs e)
- {
- keys = new List<Keys>();
- keys.Add(Keys.D0);
- keys.Add(Keys.D1);
- keys.Add(Keys.D2);
- keys.Add(Keys.D3);
- keys.Add(Keys.D4);
- keys.Add(Keys.D5);
- keys.Add(Keys.D6);
- keys.Add(Keys.D7);
- keys.Add(Keys.D8);
- keys.Add(Keys.D9);
- keys.Add(Keys.Return);
- timer1.Interval = 3;
- timer1.Start();
- }
- private void timer1_Tick(object sender, EventArgs e)
- {
- foreach(var item in keys)
- {
- int keyState = GetAsyncKeyState((int)item);
- if(keyState == 1 || keyState == -32767)
- {
- if(item == Keys.Enter)
- {
- if(code.StartsWith(identifier))
- textBox1.Text = "OK";
- else
- textBox1.Text = "NICHT OK";
- //listBox1.Items.Clear();
- code = "";
- break;
- }
- code += Regex.Match(((Keys)item).ToString(), @"\d+").Value;
- listBox1.Items.Add(code);
- break;
- }
- }
- }
- }
- }
ScheduleLib 0.0.1.0
Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten