2011-03-31 103 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; 
    } 
} 
相關問題