我正在研究掃描我的活動進程的應用程序,並且在選擇之後將關鍵命令傳遞給該進程。我遇到的問題是,並非我所有的流程似乎都有MainWindowTitle
。下面是代碼片段,我立即意識到了這個問題:對所有正在運行的進程不顯示進程MainWindowTitle
Dictionary<int, string> procInfo = new Dictionary<int, string>();
Process[] processes = Process.GetProcesses();
foreach (Process procData in processes)
{
if (procData.MainWindowTitle.Length > 0)// || procData.ProcessName == "notepad++")
{
procInfo.Add(procData.Id, procData.ProcessName);
}
}
foreach (KeyValuePair<int, string> proc in procInfo)
{
lstProcesses.Items.Add(proc.Value + " (" + proc.Key.ToString() + ")");
}
如果你看一下第5行,你會看到我在那裏迫使記事本++到列表中,以測試對來自WinSpy我的成績++(替代間諜++)並且沒有它拒絕顯示的力量,因爲它的MainWindowTitle
屬性是空的。
沒有MainWindowTitle
我無法爲應用程序獲取類名稱:
//procID set earlier and shown to be working
Process proc = Process.GetProcessById(procID);
string winTitle = proc.MainWindowTitle;
IntPtr hWnd = proc.MainWindowHandle;
StringBuilder buffer = new StringBuilder(1024);
GetClassName(hWnd, buffer, buffer.Capacity);
string winCaption = buffer.ToString();
這樣我就不能定位到應用程序中的關鍵命令傳遞:
//winCaption currently blank, winTitle tested and working
IntPtr appHandler = FindWindow(winCaption, winTitle);
SetForegroundWindow(appHandler);
SendKeys.SendWait("things and junk");
我有爲我的項目設置適當的DllImports
,所以問題不存在,我還沒有在這裏找到答案或任何可靠的巡航其他互聯網。我是否在代碼中丟失了某些東西,或者這是不好的,我應該感覺不好嗎?
可能的重複[爲什麼Process.MainWindowTitle總是空的除了一個窗口?](http://stackoverflow.com/questions/10063847/why-is-process-mainwindowtitle-always-empty-for-all-但一個窗口) – MethodMan 2014-11-24 20:40:41
我發現答案,雖然這是類似的,但我的問題遍及我的所有進程,而不僅僅是IE。 – 2014-11-24 21:10:15