2017-06-27 5 views
0

Visual Studioで作成しているコンソールアプリケーションを起動したプログラムの名前を取得する必要があります。どのように私はこれを行うことができます上の任意のアイデア?コンソールアプリケーションを実行したプログラムの名前を取得する

私はこれをやっているので、外出中のロボットがどれくらいの時間走っているか、走っている時間がわかります。

+0

プロセスリストでコンソールアプリケーションを見つけて、その親を見つけます。詳細については、[管理された方法で.NETで親プロセスを取得する方法](https://stackoverflow.com/questions/394816/how-to-get-parent-process-in-net-in-managedway)を参照してください。 –

答えて

1

あなたはこのようないくつかの他のプロセスの親プロセスを得ることができます。

1

コンソールアプリケーションの呼び出しを変更できる場合は、プログラム名を引数として指定できます。あなたは、親プロセスに関するすべての情報を取得することができ、このことから

var parent = GetParentProcess(Process.GetCurrentProcess()); 

のようにそれを使用することになり、あなたのコンソールアプリケーション内部

public static Process GetParentProcess(Process process) 
{ 
    string query = "SELECT ParentProcessId FROM Win32_Process WHERE ProcessId = " + process.Id; 
    using (ManagementObjectSearcher mos = new ManagementObjectSearcher(query)) 
    { 
     foreach (ManagementObject mo in mos.Get()) 
     { 
      if (mo["ParentProcessId"] != null) 
      { 
       try 
       { 
        var id = Convert.ToInt32(mo["ParentProcessId"]); 
        return Process.GetProcessById(id); 
       } 
       catch 
       { 
       } 
      } 
     } 
    } 
    return null; 
} 

+0

それは私が変更できる起動されたアプリケーションだけです。 – Leethemor

+0

他のアプリケーションはどのように起動しますか?コールはハードコーディングされていますか?そうでない場合は、呼び出し文字列に新しい引数を指定することができます。 – thi

関連する問題