最近、ウェブカメラから QR コードを読み取るコマンド プロンプト アプリケーションである zbarcam というアプリケーションを見つけました。コマンド プロンプトから実行するとうまく機能し、コマンド プロンプトにすべての QR コード テキストが表示されます。
現在、その機能を VB.Net プロジェクトに統合しようとしていますが、StartInfo を使用してアプリケーションをロードできますが、コマンド プロンプトに表示される QR コードを読み取ることができません。
私が使用しているコードは次のとおりです。
Dim myprocess As New Process
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
With myprocess
.StartInfo.FileName = "C:\Progra~2\ZBar\bin\zbarcam"
.StartInfo.RedirectStandardOutput = True
.StartInfo.UseShellExecute = False
.Start()
End With
Timer1.Enabled = True
Timer1.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
resultsTextBox.Text = myprocess.StandardOutput.ReadToEnd
End Sub
私がやりたいことは、コマンド プロンプトのテキストの変更を 1 秒ごとにチェックすることです。ただし、このコードを実行すると、コマンド プロンプトが黒く表示され、コードをカメラの前に移動すると、コードは検出されますが (ビデオ プレビューで QR コードの周りに緑色のボックスが表示されます)、テキストがコマンドプロンプトに表示されません。
" .StartInfo.UseShellExecute " を Trueに設定し、" .StartInfo.RedirectStandardOutput = True "という行にコメントを付けてタイマーを無効にすると、コマンド プロンプトに qr コードが表示され始めますが、読み取ることができません!
これについて最善の方法は何ですか?理想的には、変更がある場合にのみコマンド プロンプトから読み取りたいのですが、これができない場合は、コマンド プロンプトを 1 秒に 1 回ポーリングして変更を確認するのが次善の策です。