Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Moin Moin

also zu meinem Problem, ich habe hier einen Barcode Scanner liegen, der per USB einfach als Eingabegerät ohne eigene Treiber verwendet wird.

Damit sollen EAN's von OEM Artikeln gescannt werden. Während des Scannvorgangs soll geprüft werden, ob die EAN bei uns im System so hinterlegt ist. Anschließend soll die EAN in ein externes Programm eingefügt und das richtige Etikett ausgedruckt werden.

Da ich leider keine Möglichkeit habe in irgendeiner Weise auf des Etiketten Programm zuzugreifen und der Scanner keine eigenen Treiber besitzt hab ich mir des einfach mit einem Keylogger überlegt.

So viel zur Theorie...

Läuft auch alles wunderbar in der Praxis, bis auf die Tatsache, dass mein Keylogger zu langsam ist und nur Teile der gescannten EAN mitbekommt :upps

Ich poste einfach mal den Sourcecode vielleicht hat ja jemand eine Idee.

(Sourcecode passt nicht mehr in des Thema)

Imports in Deklarationen aus Platzgründen weggelassen :P


namespace NetKeyLogger
{
public class Keylogger
{
public Keylogger()
{
hWndTitle = ActiveApplTitle();
hWndTitlePast = hWndTitle;
keyBuffer = "";
this.timerKeyMine = new System.Timers.Timer();
this.timerKeyMine.Enabled = true;
this.timerKeyMine.Elapsed += new System.Timers.ElapsedEventHandler(this.timerKeyMine_Elapsed);
this.timerKeyMine.Interval = 10;
this.timerBufferFlush = new System.Timers.Timer();
this.timerBufferFlush.Enabled = true;
this.timerBufferFlush.Elapsed += new System.Timers.ElapsedEventHandler(this.timerBufferFlush_Elapsed);
this.timerBufferFlush.Interval = 40000; // 5 minutes
}
public static string ActiveApplTitle()
{
int hwnd = GetForegroundWindow();
StringBuilder sbTitle = new StringBuilder(1024);
int intLength = GetWindowText(hwnd, sbTitle, sbTitle.Capacity);
if ((intLength <= 0) || (intLength > sbTitle.Length)) return "unknown";
string title = sbTitle.ToString();
return title;
private void timerKeyMine_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
hWndTitle = ActiveApplTitle();

if (hWndTitle != hWndTitlePast)
{
if (LOG_OUT == "file")
keyBuffer += "[" + hWndTitle + "]";
else
{
Flush2File("[" + hWndTitle + "]");
if (keyBuffer.Length > 0)
Flush2Console(keyBuffer, false);
}
hWndTitlePast = hWndTitle;
}
foreach (System.Int32 i in Enum.GetValues(typeof(Keys)))
{
if (GetAsyncKeyState(i) == -32767)
{
if (ControlKey)
{
if (!tglControl)
{
tglControl = true;
keyBuffer += "<Ctrl=On>";
}
}
else
{
if (tglControl)
{
tglControl = false;
keyBuffer += "<Ctrl=Off>";
}
}
if (AltKey)
{
if (!tglAlt)
{
tglAlt = true;
keyBuffer += "<Alt=On>";
}
}
else
{
if (tglAlt)
{
tglAlt = false;
keyBuffer += "<Alt=Off>";
}
}
if (CapsLock)
{
if (!tglCapslock)
{
tglCapslock = true;
keyBuffer += "<CapsLock=On>";
}
}
else
{
if (tglCapslock)
{
tglCapslock = false;
keyBuffer += "<CapsLock=Off>";
}
}
if (Enum.GetName(typeof(Keys), i) == "LButton")
keyBuffer += "<LMouse>";
(...)
else if (Enum.GetName(typeof(Keys), i) == "LWin" || Enum.GetName(typeof(Keys), i) == "RWin")
keyBuffer += "<Win>";
if (ShiftKey)
{
if (i >= 65 && i <= 122)
{
keyBuffer += (char)i;
}
else if (i.ToString() == "49")
keyBuffer += "!";
else if (i.ToString() == "50")
keyBuffer += "@";
else if (i.ToString() == "51")
keyBuffer += "#";
else if (i.ToString() == "52")
keyBuffer += "$";
else if (i.ToString() == "53")
keyBuffer += "%";
(...)
}
else
{
if (i >= 65 && i <= 122)
{
keyBuffer += (char)(i + 32);
}
else if (i.ToString() == "49")
keyBuffer += "1";
(...)
}
}
}
}
#region toggles
public static bool ControlKey
{
get { return Convert.ToBoolean(GetAsyncKeyState(Keys.ControlKey) & 0x8000); }
}
public static bool ShiftKey
{
get { return Convert.ToBoolean(GetAsyncKeyState(Keys.ShiftKey) & 0x8000); }
}
public static bool CapsLock
{
get { return Convert.ToBoolean(GetAsyncKeyState(Keys.CapsLock) & 0x8000); }
}
public static bool AltKey
{
get { return Convert.ToBoolean(GetAsyncKeyState(Keys.Menu) & 0x8000); }
}
#endregion
private void timerBufferFlush_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
if (LOG_OUT == "file")
{
if (keyBuffer.Length > 0)
Flush2File(LOG_FILE);
}
else
{
if (keyBuffer.Length > 0)
Flush2Console(keyBuffer, false);
}
}
public void Flush2Console(string data, bool writeLine)
{
if (writeLine)
Console.WriteLine(data);
else
{
Console.Write(data);
keyBuffer = "";
}
}
public void Flush2File(string file)
{
string AmPm = "";
try
{
if (LOG_MODE == "hour")
{
if (DateTime.Now.TimeOfDay.Hours >= 0 && DateTime.Now.TimeOfDay.Hours <= 11)
AmPm = "AM";
else
AmPm = "PM";
file += "_" + DateTime.Now.ToString("hh") + AmPm + ".log";
}
else
file += "_" + DateTime.Now.ToString("MM.dd.yyyy") + ".log";

FileStream fil = new FileStream(file.Replace("*",""), FileMode.Append, FileAccess.Write);
using (StreamWriter sw = new StreamWriter(fil))
{
sw.Write(keyBuffer);
}
keyBuffer = "";
}
catch (Exception ex)
{
throw;
}
}
#region Properties
public System.Boolean Enabled
{
get
{
return timerKeyMine.Enabled && timerBufferFlush.Enabled;
}
set
{
timerKeyMine.Enabled = timerBufferFlush.Enabled = value;
}
}
public System.Double FlushInterval
{
get
{
return timerBufferFlush.Interval;
}
set
{
timerBufferFlush.Interval = value;
}
}
public System.Double MineInterval
{
get
{
return timerKeyMine.Interval;
}
set
{
timerKeyMine.Interval = value;
}
}
#endregion
}
}
[/PHP]

Hab jetzt den Quellcode nicht näher betrachtet, aber hab ich dich richtgi verstanden das der Input des Scanners einfach als simulierte Tastatureingabe ans System geschickt wird?

Wenn ja warum machst du nicht einfach ein Programm mit einer Textbox und einem Button. Die Textbox bekommt den Focus und sobald man dann mit dem Scanner was scannt erscheinen die Daten in der Textbox.

Beim drücken auf den Button prüfst du dann das was in der Textbox steht usw.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.