我正在尋找一種方法來關閉打開到某個文件夾的Windows資源管理器窗口。說c:\ users \ bob \文件夾。我可以用下面的代碼關閉所有的探索者,但這顯然不是我想要做的。這可能嗎?有沒有辦法用C#關閉瀏覽器的特定實例?
foreach (Process p in Process.GetProcessesByName("explorer"))
{
p.Kill();
}
感謝
我正在尋找一種方法來關閉打開到某個文件夾的Windows資源管理器窗口。說c:\ users \ bob \文件夾。我可以用下面的代碼關閉所有的探索者,但這顯然不是我想要做的。這可能嗎?有沒有辦法用C#關閉瀏覽器的特定實例?
foreach (Process p in Process.GetProcessesByName("explorer"))
{
p.Kill();
}
感謝
在這篇文章中讓我最有方式:http://omegacoder.com/?p=63
我發現使用名爲「Microsoft Internet控制」一個COM庫的方式,看起來更預期對於Internet Explorer,但我放棄了嘗試使用進程ID和MainWindowTitle
的東西,因爲explorer.exe只對所有打開的窗口使用一個進程,並且我無法確定如何從中獲取窗口標題文本或文件系統位置。
因此,首先,從COM選項卡添加到Microsoft Internet控件的引用,則:
using SHDocVw;
這個小程序爲我做的伎倆:
ShellWindows _shellWindows = new SHDocVw.ShellWindows();
string processType;
foreach (InternetExplorer ie in _shellWindows)
{
//this parses the name of the process
processType = Path.GetFileNameWithoutExtension(ie.FullName).ToLower();
//this could also be used for IE windows with processType of "iexplore"
if (processType.Equals("explorer") && ie.LocationURL.Contains(@"C:/Users/Bob"))
{
ie.Quit();
}
}
一個警告,而這可能是由於事實上這個庫是面向IE瀏覽器的,你必須在文件夾路徑中使用正斜槓......這是因爲從ie
對象返回的真正LocationURL
的形式是file:///C:/Users/...
嘿,這很聰明。謝謝! – AngryTech
很高興能幫到你!我喜歡你可以使用它的IE窗口以及...我在想一個經理走動恐慌按鈕? ;) –
我可能會遲到這次派對,但是這幫了我很大的忙,救了我這麼多無用的研究時間,所以我不得不親自謝謝你:) – Sossenbinder
我會嘗試進口user32.dll中並調用FindWindow函數或FindWindowByCaption,隨後到的DestroyWindow調用。
約FindWindow函數信息是在這裏: http://www.pinvoke.net/default.aspx/user32.findwindow
您可以嘗試這樣的事:
foreach (Process p in Process.GetProcessesByName("explorer"))
{
if (p.MainWindowTitle.ToLower().Contains(@"c:\users\bob\folder"))
p.Kill();
}
foreach (Process p in Process.GetProcessesByName("explorer"))
{
if (p.MainWindowTitle.Contains("YourFolderName"))
{
p.Kill();
}
}
我只看到一個進程對於Windows 7中的多個資源管理器實例,標題爲空。 –
你打開自己這個探險家嗎?如果是這樣,你可以堅持進程ID。 – Blorgbeard
不,我沒有。謝謝。 – AngryTech