2016-04-10 7 views
0
ちょっと、

チェスボードのプロジェクトをシリアルポートでPCに接続します。チェスボードは 'g1f3'のようなコマンドを送信します。私はバックグラウンドで動作し、実際のボード上で行った移動をクリックするクリッカーアプリケーションを作りたいと思います。私はチェスのクライアントのウィンドウのタイトルを認識していた。ピクセルモニタとしてのBackgroundWorker - C#

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 
    { 
     while (true) 
     { 
      backgroundWorker1.ReportProgress(0); 
      System.Threading.Thread.Sleep(1000); 
     } 
    } 

    private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) 
    { 
     windowName = GetActiveWindowTitle(); 
     for (int i = 0; i <= windowName.Length - 3; i++) 
     { 
      if (windowName[i] == 'v' && windowName[i + 1] == 's' && windowName[i + 2] == '.') 
      { 
       textBox1.Text = "Game active"; 
       break; 
      } 
      else 
       textBox1.Text = "Game not recognized"; 
     } 
    } 

チェスクライアント名のようなウィンドウ:「XXXXX XXXXX対」私はこのコードを持っています。これは "ほとんど"うまく動作します。 (アプリのウィンドウが高速またはランダム時間的に遅延しても1つのスイッチ後に変更されている場合)、「ほぼ」ためには、時にはそれがスローされます。

型「System.Reflection.TargetInvocationException」の未処理の例外がmscorlib.dllがで発生した

追加情報:呼び出しの対象によって例外がスローされました。

誰も私にこれをどう対処するかというヒントを与えることができますか?

編集:私はここからGetActiveWindowTitle()のコードだ:それは時々ヌルスローHow do I get the title of the current active window using c#?

を、なぜそれがありますか?
+0

あなたの 'ProgressChanged'イベントハンドラで例外が発生します。実際に*間違っているものが見えるように内部例外を調べます。 – MicroVirus

+0

それは言う:オブジェクト参照は、オブジェクトのインスタンスに設定されていません。これは、アクティブなウィンドウのタイトルを取得することです。私はwindowNameをテキストボックスに置き、しばらくそれを見たことがありません。だから私は時々nullだと思う。しかし、それはなぜですか?私はここからアクティブなウィンドウのタイトルのコードを取得する:[リンク](http://stackoverflow.com/questions/115868/how-do-i-get-the-title-of-the-current-active-window-using -c) – h2pc

+1

私の魔法の球は、 'GetActiveWindowTitle'は有効な文字列を返さず、むしろ' null'を返すと予測します。 – MicroVirus

答えて

0

表示されている例外は、ハンドラbackgroundWorker1_ProgressChangedが例外をスローしているためです。内部例外をチェックして元の例外を確認することができます。

GetActiveWindowTitlenullを返しますが、コードでは処理されないため、NullReferenceExceptionが返されます。 nullを返す理由は、アクティブなウィンドウがないか、ウィンドウのテキストを取得できなかった場合です。コードの最適な解決方法は、nullが返されているかどうかをチェックし、そうであれば状況を適切に処理します(たとえば、ユーザにtextBox1という警告を出すなど)。

関連する問題