hallo,
ich habe ein problem mit dem Verhalten eines kleinen Programmes, welches ich geschrieben habe.
aber zunächst noch etwas mehr Erleuterungen dazu:
ich lese mit einem Sensorsystem Barcodes aus. Mein Programm simuliert einen Server, an den die Information aus dem Barcode gelesen wird ( funktioniert über standard winsock code). desweiteren nimmt mein Programm den benötigten Teil des Informationsstrings heraus und schickt diesen per Sendkeys an ein anderes Programm.
dies funktioniert auch bestens. Normalerweise müsste man jetzt noch diese Codeeingabe in dem anderen Programm mit Enter bestätigen. Dies würde ich auch gerne automatisieren, indem ich an die andere Anwendung noch ein Enter schicke. Und genau hier liegt mein Problem.
wenn ich das Enter einfach an den String anhänge ( durch "{Enter}") wird im anderen programm zwar auch das Enter ausgelöst, jedoch meldet dieses andere Programm dann einen Error. Ich nehme an, dass also der Code nicht richtig oder vollständig eingelesen wurde, bevor das Enter gesendet wurde.
ich habe auch schon diese methode versucht um windows die möglichkeit zu übergeben noch aktionen auszuführen:
allerdings ist hier der fall, dass es manchmal funktioniert, wie es soll, allerdings in der mehrzahl der Fälle das Programm wieder einen Error meldet.
ebenfall hab ich versucht, an das Sendkeys "CodeString", das wait = True anzuhängen, um zu warten, das die Zeichenfolge erst abgearbeitet wird. jedoch auch ohne erfolg
Durch Sleep() das programm für kurze zeit anzuhalten, bis die zeichenfolge gesendet worden wäre, hat ebenfalls nicht funktioniert.
Hier noch der Code, wenn mein Programm von dem Scanner den String erhält und ihn an das andere Programm weiterschickt:
so langsam bin ich wirklich am verzweifeln. Vielleicht fällt euch ja eine lösung dafür ein, oder könnt mir wenigstens sagen wieso es sich so verhält....
gruß Kmaisch
ich habe ein problem mit dem Verhalten eines kleinen Programmes, welches ich geschrieben habe.
aber zunächst noch etwas mehr Erleuterungen dazu:
ich lese mit einem Sensorsystem Barcodes aus. Mein Programm simuliert einen Server, an den die Information aus dem Barcode gelesen wird ( funktioniert über standard winsock code). desweiteren nimmt mein Programm den benötigten Teil des Informationsstrings heraus und schickt diesen per Sendkeys an ein anderes Programm.
dies funktioniert auch bestens. Normalerweise müsste man jetzt noch diese Codeeingabe in dem anderen Programm mit Enter bestätigen. Dies würde ich auch gerne automatisieren, indem ich an die andere Anwendung noch ein Enter schicke. Und genau hier liegt mein Problem.
wenn ich das Enter einfach an den String anhänge ( durch "{Enter}") wird im anderen programm zwar auch das Enter ausgelöst, jedoch meldet dieses andere Programm dann einen Error. Ich nehme an, dass also der Code nicht richtig oder vollständig eingelesen wurde, bevor das Enter gesendet wurde.
ich habe auch schon diese methode versucht um windows die möglichkeit zu übergeben noch aktionen auszuführen:
Code:
Sendkeys "der zu übertragendeCode"
DoEvents
Sendkeys "{Enter}"
ebenfall hab ich versucht, an das Sendkeys "CodeString", das wait = True anzuhängen, um zu warten, das die Zeichenfolge erst abgearbeitet wird. jedoch auch ohne erfolg
Durch Sleep() das programm für kurze zeit anzuhalten, bis die zeichenfolge gesendet worden wäre, hat ebenfalls nicht funktioniert.
Hier noch der Code, wenn mein Programm von dem Scanner den String erhält und ihn an das andere Programm weiterschickt:
Code:
Private Sub Winsock_DataArrival(ByVal bytesTotal As Long) 'defines the behaviour for data arrival
Dim Result As String
Dim receivedData As String
Dim inBuffer As String
Winsock.PeekData receivedData 'copy the data in 'receivedData' but doesnt delete it from the input queue
Result = InStr(1, receivedData, vbCrLf, vbTextCompare)
If Result > 0 Then
' Now remove the result string from the input queue
Winsock.GetData receivedData, , (Result + 1)
' If the received string was not the idling string then write it to the keyboard buffer.
If InStr(1, receivedData, Mid("\r\n", 1, Len("\r\n") - 4) & vbCrLf, vbTextCompare) <> 1 Then
inBuffer = Mid(receivedData, 1, Result - 1)
txtCode.Text = inBuffer
'if the recieved string contains '+','(' or ')' they should be replaced with curly braces around them
inBuffer = Replace(inBuffer, "+", "{+}", , , vbTextCompare)
inBuffer = Replace(inBuffer, "(", "{(}", , , vbTextCompare)
inBuffer = Replace(inBuffer, ")", "{)}", , , vbTextCompare)
If InStr(1, inBuffer, "1P6ES7", vbTextCompare) = 1 Then 'errors wont be send
SendKeys (inBuffer)
End If
End If
End If
End Sub
so langsam bin ich wirklich am verzweifeln. Vielleicht fällt euch ja eine lösung dafür ein, oder könnt mir wenigstens sagen wieso es sich so verhält....
gruß Kmaisch