Laden...

Wenn ein bestimmter Barcode eingescannt wird - ALT TAB simulieren

Erstellt von C#Gustl vor 10 Jahren Letzter Beitrag vor 10 Jahren 2.838 Views
C
C#Gustl Themenstarter:in
36 Beiträge seit 2012
vor 10 Jahren
Wenn ein bestimmter Barcode eingescannt wird - ALT TAB simulieren

Guten Abend,

ich hatte die Idee ALT-TAB in einem Barcode zu speichern, wobei man diesen dann nur mit einem Barcodescanner abscannen muss um in das andere Fenster zu switchen. Soweit die Idee.

Da ich aber im Web gelesen habe das dies nicht möglich ist, habe ich mir gedacht ich schreibe ein kleines Programm welches dann beim Einscannen eines bestimmten Strings ALT-TAB simuliert.

Das Programm sollte dann im Hintergrund darauf hören was gerade eingescannt wird und dann bei richtigem String ALT-TAB auslösen.

ALT-TAB mit C# zu simulieren ist ja denkbar einfach:

SendKeys.Send("%{TAB}");

Aber ich benötige ja das WindowsEvent das ausgelöst wird. Und genau da komme ich nicht weiter. Wie frage ich das ab? Ist es überhaupt möglich? Gibt es für meinen Fall vielleicht auch eine einfachere Lösung?

Freue mich auf Antworten.

Gruß Gustl

5.658 Beiträge seit 2006
vor 10 Jahren

Hi C#Gustl,

was genau ist deine Frage? Wie man einen Barcode-Scanner mit C# ausliest? Dazu gibt es bereits jede Menge Beiträge im Forum, einfach mal die Suchfunktion ausprobieren. Falls das nicht hilft, bitte nochmal genau erklären, wo dein Problem liegt, was du bereits ausprobiert hast, und wobei du nicht weiterkommst.

Christian

Weeks of programming can save you hours of planning

16.832 Beiträge seit 2008
vor 10 Jahren

Wieso suchst Du Dir nicht das Handle des Fensters sobald Dein bestimmter Code gefunden wurde und setzt dann einfach das auf den aktiven Fokus?
Das wär mir mit Alt-Tab viel zu unsicher, dass auch das Programm gerade in der Reihenfolge ist, wo ichs erwarte...

C
C#Gustl Themenstarter:in
36 Beiträge seit 2012
vor 10 Jahren

Hallo,

das Programm soll ja im Hintergrund laufen.

Ja, ich hab das Problem den eingescannten String zu überprüfen, und zwar egal welches Programm gerade aktiv ist.

Mein Ziel ist es eben einen 2D Barcode am unteren Bildschirmrand zu kleben welches bei einem Scan das Fenster, quasi via ALT-TAB (Windows), switcht.

Und genau da weiß ich nicht welches Event ich da benötige.
Wenn zb ein anderes Programm mit einer Textbox geöffnet ist und ich da einen Nummer quasi mit dem Scanner einscanne erscheint sie auch ganz normal in der Textbox. Aber wenn der String zb.: #+***+# eingescsnnt wird, soll er eben nicht in der Textbox erscheinen sondern das Fenster wechseln.

Hoffe ich habe es verständlich erklärt. So etwas gibt es vielleicht auch schon, würde ich dann auch nehmen.

Gruß Gustl

771 Beiträge seit 2009
vor 10 Jahren

Das sollte mittels P/Invoke auf die Funktion keybd_event gehen:


[DllImport("user32.dll")]
public static extern void keybd_event(byte bVk,byte bScan,int dwFlags,int dwExtraInfo);

public const int VK_DELETE = 0x2E;
public const int VK_F4 = 0x73;
public const int VK_TAB = 0x9;
public const int VK_MENU = 0x12;
public const int KEYEVENTF_EXTENDEDKEY = 0x1;
public const int KEYEVENTF_KEYUP = 0x2;
public const int VK_CONTROL = 0x11;
public const int VK_ESCAPE = 0x1B;

//send alt+tab

keybd_event(VK_MENU,0,0,0);
keybd_event(VK_TAB,0,0,0);
keybd_event(VK_TAB,KEYEVENTF_KEYUP,0);
keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);

//send control+esc

keybd_event(VK_CONTROL,0,0,0);
keybd_event(VK_ESCAPE,0,0,0);
keybd_event(VK_ESCAPE,KEYEVENTF_KEYUP,0);
keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);

s.a. Keyboard Events Simulation using keybd_event() function

211 Beiträge seit 2008
vor 10 Jahren

Kontakt & Blog: www.giesswein-apps.at

212 Beiträge seit 2008
vor 10 Jahren

Also, ich habe unsere Scanner dafür auf RS232 umgestellt. Wenn der Code XYZ reinkommt, dann geht es intern an das Programm (das ist auch von mir) , sonst wird die Eingabe über SendKeys weitergeleitet.

Gruß
Christoph