2016-11-11 3 views
-1

下のコードでわかるように、簡単なtry文があります。 ツールを開くたびに、csgoという名前のプロセスが検索されます。プロセスがあれば、ツールを続行します。それ以外の場合は、MsgBoxを送信してツールを終了します。VBeを続ける前にspeceficプログラムが起動するのを待つ

しかし、csgoプロセスが実行されているかどうかを確認する必要があります。実行している場合は今のように続行する必要がありますが、csgo実行プロセスがない場合は、ツールスリープとループまで、csgoという名前のプロセスが見つかります。

Try 
     gameProcess = Process.GetProcessesByName("csgo")(0) 
     gameHandle = OpenProcess(PROCESS_ALL_ACCESS, False, csgoProcess.Id) 
    Catch ex As Exception 
     MsgBox("Please Start CS:GO before opening this tool") 
     Environment.Exit(0) 
    End Try 

私はこのようにしてみましたが、これはうまくいっています、これを行う良い方法はありますか?

Dim Found = 0 
    While Found = 0 
     Try 
      gameProcess = Process.GetProcessesByName("csgo")(0) 
      cgameHandle = OpenProcess(PROCESS_ALL_ACCESS, False, csgoProcess.Id) 
      Found = 1 
     Catch ex As Exception 
      MsgBox("Waiting for csgo to launch.") 
      Threading.Thread.Sleep(1000) 
     End Try 
    End While 
+0

大丈夫です。それを行うためにいくつかのコードを書いてください。問題がある場合は、コードを掲示して問題を説明してください。 – Blackwood

+0

これを行うには、タイマーを使用する方法があります。頑張れ。 – topshot

+0

@ランダム化:質問を編集して新しいコードを追加する方が良いでしょう。コメントを読むことはほとんど不可能です。また、何がうまくいかないか説明してください。 –

答えて

2

これはコンソールアプリケーションであると仮定して、あなたが持っているものをいくつか改善することができます。

' Use a boolean for binary logic. 
' This takes up 1 bit whereas your Int32 took up 32 bits 
Dim allDone = False 
While Not allDone 
    Try 
     Dim processes = Process.GetProcessesByName("csgo") 
     If processes.Count > 0 Then 
      csgoProcess = processes(0) 
      Dim handle = OpenProcess(PROCESS_ALL_ACCESS, False, csgoProcess.Id) 
      If handle IsNot Nothing Then 
       allDone = True 
      End If 
     Else 
      ' Use a Retry/Cancel MsgBox to allow the user to retry or cancel 
      ' Clicking Cancel will now exit the application 
      Select Case MsgBox("Waiting for csgo to launch.", 
           MsgBoxStyle.RetryCancel, "Confirm retry") 
       Case MsgBoxResult.Retry 
        Threading.Thread.Sleep(1000) 
       Case MsgBoxResult.Cancel 
        Environment.Exit(0) 
      End Select 
     End If 
    Catch ex As Exception 
     ' Something bad happened, but you don't know what exactly. 
     ' You should exit, else it might keep happening 
     MsgBox("Your application encountered the following error and will now close: " _ 
      & ex.Message) 
     Environment.Exit(0) 
    End Try 
End While 
' continue application 
+0

ありがとう、それはwinformアプリケーションです。しかし、ユーザーがリトライを押す必要がある部分は、必要なものではありません。 CSGOはフルスクリーンで起動します。この場合、ユーザーはタブダウンして再試行する必要があります。私はちょうどそれがcsgoを見つけて、自動的に続行するまでループするツールを望みます。再試行の代わりに終了を閉じるオプションが良いでしょう。 – Randomizers

関連する問題