2011-04-22 9 views
0

有沒有辦法打印我的電腦上運行的所有應用程序?我想後處理其中的一個,並找到按鈕,並點擊它。我想模擬特定窗口上的點擊按鈕。首先,我想打印所有正在運行的應用程序,並對它們進行處理。可以有人給我一些代碼嗎?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 2011-04-22 08:48:35

+0

我如何才能找到特定窗口的子窗口? – daniel 2011-04-22 08:52:03

+0

使用http://pinvoke.net/default.aspx/user32/EnumChildWindows.html Enumchildwindows你會得到特定窗口的子窗口的處理程序..... – TechGiant 2011-04-22 09:08:20