2011-03-31 52 views
5

如何删除在浏览器中浏览过的文件? 错误说:“这是正在被另一个进程使用”如何删除在浏览器控件中导航的文件?

preview_wb.Navigate(@"C:\mypdf.pdf"); 

private void close_btn_Click(object sender, EventArgs e) 
{ 
    preview_wb.Stop(); 
    File.Delete(@"C:\mypdf.pdf"); 
} 

回答

1

如果您需要的“预览”坚持该文件已被删除后,你可能没有任何选择,但要复制的文件和导航而不是复制。

如果你感到快乐,清除了“预览”当文件删除,只是从它第一导航离去:

private void close_btn_Click(object sender, EventArgs e) 
{ 
    preview_wb.Navigate("about:blank"); 
    File.Delete(@"C:\mypdf.pdf"); 
} 

这应该做的伎俩。

+0

没有工作,它仍然被另一个进程使用。如何杀死“AcroRd32.exe”进程? – Holyoxx 2011-03-31 05:37:07

+0

哎。这很烦人。有这样一个过程吗?我不知道Acrobat如何在浏览器中工作。它是一个实际的exe或一个ActiveX控件? – 2011-03-31 06:31:36

+0

是它的一个实际的exe。我也杀了所有与杂技演员有关的过程。仍然没有工作。 – Holyoxx 2011-03-31 06:53:24

0

您是否尝试过通过Internet Explorer缓存(使用FindFirst/NextUrlCacheEntry API)找到该文件并使用DeleteUrlCacheEntry将其删除?有预先写好的例子说明如何循环,并在新的,只是谷歌它删除。

您将获得3种类型的缓存,以“Cookie:”开头,另一个以“Visited:”开头 - 仅代表访问过的网站列表(这不是历史,不要混淆两者) ,最后一个类型只是以http://或https://开始的url形式出现。一旦循环完成,您可以选择并选择要删除的部分。

让我知道如果您有任何进一步的问题,这样做应该摆脱“正在使用的文件”问题,如果它不,也可以在执行缓存删除之前暂停或卸载您的浏览器控件。你可能不需要)。

3

通常人们认为这样的代码:

webBrowser.Navigate("about:blank"); 
while (webBrowser.ReadyState != WebBrowserReadyState.Complete) 
    Application.DoEvents(); 

File.Delete(fileName); 

我不喜欢它。我更喜欢处理DocumentCompleted事件。

void DeleteFile() 
{  
    needToDeleteFile = true; 
    webBrowser.Navigate("about:blank"); 
} 

void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    if (needToDeleteFile) 
    { 
     File.Delete(fileName); 
     needToDeleteFile = false; 
    } 
} 
相关问题