2011-04-22 14 views
0

コンピュータ上で実行されるすべてのアプリケーションを印刷する方法はありますか?後でそのうちの1つを処理し、ボタンを見つけてそれをクリックしたいと思います。私は特定のウィンドウ上のクリックボタンをシミュレートしたいと思います。まず、実行中のアプリケーションをすべて印刷して、それらを処理したいと思います。誰かに私にいくつかのコードを教えてもらえますか?c#すべてのデスクトップアプリケーションを処理し、ボタンのクリックをシミュレートします

答えて

1
Use System.Management; 
//Return all processes 
public static string ListAllProcesses() 
{ 
    StringBuilder sbAllProcess = new StringBuilder(); 
    // list out all processes and write them into a stringbuilder 
    ManagementClass MgmtClass = new ManagementClass("Win32_Process"); 

    foreach (ManagementObject mobject in MgmtClass.GetInstances()) 
    { 
     sbAllProcess .Append("Name:\t" + mobject ["Name"] + Environment.NewLine); 
     sbAllProcess .Append("ID:\t" + mobject ["ProcessId"] + Environment.NewLine); 
     sbAllProcess .Append(Environment.NewLine); 
    } 

    return sbAllProcess .ToString(); 
} 
//Return all applications 
public static string ListAllApplications() 
{ 
    StringBuilder sbAllApplication = new StringBuilder(); 

    foreach (Process runningProcess in Process.GetProcesses(".")) 
    { 
     try 
     { 
      if (runningProcess .MainWindowTitle.Length > 0) 
      { 
       sbAllApplication .Append("Window Title:\t" + runningProcess .MainWindowTitle.ToString()+ Environment.NewLine); 
       sbAllApplication .Append("Process Name:\t" + runningProcess .ProcessName.ToString() + Environment.NewLine); 
       sbAllApplication .Append("Window Handle:\t" + runningProcess .MainWindowHandle.ToString() + Environment.NewLine); 
       sbAllApplication .Append("Memory Allocation:\t" + runningProcess .PrivateMemorySize64.ToString() + Environment.NewLine); 
       sbAllApplication .Append(Environment.NewLine); 
      } 
     } 
     catch { } 
    } 
    return sbAllApplication .ToString(); 
} 
+0

これで、プロセスとアプリケーションの一覧が表示され、ファイルに書き込んで印刷することができます。 – TechGiant

+0

子ウィンドウを特定のウィンドウに見つける方法はありますか? – daniel

+0

http://pinvoke.net/default.aspx/user32/EnumChildWindows.html Enumchildwindowsを使用すると、特定のウィンドウの子ウィンドウのハンドラを知ることができます。 – TechGiant

関連する問題