2013-08-05 20 views
0

方案(爲力刪除文件,不能去上重啓刪除):關閉進程子窗口(如Word窗口)訪問特定文件

  1. 我有一個在打開的文件一些程序,說MS字。 M.S中可能還有其他一些文件。字。
  2. 在我的C#程序中,我需要知道什麼進程正在訪問該特定文件,並且需要關閉/從Word釋放該特定文件。其他文件不應該被打擾,所以我不會使用Process.Kill()方法。使用代碼here

    1. 發現過程(Process類的實例)訪問我的目標文件中找到一個列表:

    鑑於上述情況,我也做了以下該進程持有的句柄(使用NtQuerySystemInformation()方法)。

  3. 從句柄列表中,我能夠找到持有我的文件的特定句柄(使用NtQueryObject()方法)。試圖在這個句柄上調用CloseHandle(),但這不起作用。
  4. 現在我還可以列出目標進程中的所有子窗口句柄。

如何找到與我在上面第3步中找到的文件句柄相關的特定窗口句柄?我的計劃是使用帶有WM_CLOSE消息的SendMessage()方法到特定的窗口,以便它將被關閉並且我的文件將被釋放。

一種方法是檢查該子窗口標題中的文件名字符串,然後關閉該窗口。但問題是,一個同名的文件可能已經從一些不同的位置打開。

回答