2017-08-21 7 views
0

を閉じるまで、「プレス」は、他のアプリでボタンが動作します。 この部分はうまく動作します。 アプリが開かれているときは、「開始」ボタンが押されている必要があります。このボタンは、アプリが開くときにあらかじめ選択されています。 スペースバーを押すと、ボタンも「押し下げられます」(Enterキーは押されません)。C#の:のSendKeysを使用するpatrentアプリは、私は別のアプリケーションが実行されているかどうかを確認しますC#のコンソールアプリケーションを書いて、もしそうなら、それを閉じて再起動をしています

私が押されているスペースバーをシミュレートするSendKeys.SendWait(" ")を使用しました。親アプリ(私のコンソールアプリケーション)が閉じられるまでうまくいきます。この時点で、子アプリケーション(つまり、自分のプログラムが開いている状態)は、開始ボタンが押されるのを待つように戻る(終了する前に私のプログラムが「停止」ボタンを押すのとほぼ同じ)。

私のコードは

Process[] runningProcesses = Process.GetProcessesByName("MyProcess"); 
     String appName = "MyProcess.exe"; 
     int liMilliseconds = 5000;' 

try 
     { 
      if (runningProcesses.Length > 0) 
      { 
       foreach (Process process in runningProcesses) 
       { 
        process.Kill();             

        for (int a = 30; a >= 0; a--)         
        { 
         Console.SetCursorPosition(0, 2); 
         Console.Write("Re-launching MyProcess in {0} seconds.", a); 
         System.Threading.Thread.Sleep(1000); 
        } 
        Process.Start(appName);           
        Thread.Sleep(liMilliseconds);          
        SendKeys.SendWait(" ");           
       } 
      } 
      else 
       Process.Start(appName);            
       Thread.Sleep(liMilliseconds); 
       SendKeys.SendWait(" "); 
     } 

     catch (Exception msg) 
     { 
      Console.WriteLine("\n\nOh Snap, there has been an error. Message reads : \n\n" + msg); 
      Console.Read(); 
     }` 

で誰かが私の誤りを指摘することができ、そしてどのような私はそれを修正するために何ができますか?

ありがとうございました

+1

あなたの問題は何ですか?コンソールアプリケーションが閉じても何もしないのは正常です。これはもはや実行されないからです。 – DogeAmazed

+0

どのように別のプログラムの動作は完全にそれにダウンしている..あなたのアプリが何も起こらない場合は、それにスペースを送った – BugFinder

答えて

1

今のところ、あなたのコードで1つのエラーが見つかりました。 elseには角括弧がないので、プログラムの最後にThread.SleepSendKeys.SendWaitが実行されます。

これを修正します。 elseに角括弧を追加します。

Process[] runningProcesses = Process.GetProcessesByName("MyProcess"); 
String appName = "MyProcess.exe"; 
int liMilliseconds = 5000; 

try 
{ 
    if (runningProcesses.Length > 0) 
    { 
     foreach (Process process in runningProcesses) 
     { 
      process.Kill();             

      for (int a = 30; a >= 0; a--)         
      { 
       Console.SetCursorPosition(0, 2); 
       Console.Write("Re-launching MyProcess in {0} seconds.", a); 
       System.Threading.Thread.Sleep(1000); 
      } 
      Process.Start(appName);           
      Thread.Sleep(liMilliseconds);          
      SendKeys.SendWait(" ");           
     } 
    } 
    else 
    { 
     Process.Start(appName);            
     Thread.Sleep(liMilliseconds); 
     SendKeys.SendWait(" "); 
    } 
} 
catch (Exception msg) 
{ 
    Console.WriteLine("\n\nOh Snap, there has been an error. Message reads : \n\n" + msg); 
    Console.Read(); 
} 
関連する問題