我正在用c#創建一個excel應用程序。 因爲我會保持緊急的excel文件,我想保持它的處理程序打開。 我想保留excel進程ID,這樣我就可以殺死它,以防系統崩潰。獲取Excel應用程序進程號
創建時如何獲得Excel Pid?
我正在用c#創建一個excel應用程序。 因爲我會保持緊急的excel文件,我想保持它的處理程序打開。 我想保留excel進程ID,這樣我就可以殺死它,以防系統崩潰。獲取Excel應用程序進程號
創建時如何獲得Excel Pid?
這裏有一個如何打開使用Excel的互操作一個Excel文件,並妥善處理實例 (來源:谷歌)爲例
Application ExcelObj = new Application();
Workbook WB = ExcelObj.Workbooks.Open(fileName,
0, true, 5, "", "", true, XlPlatform.xlWindows, "\t",
false, false, 0, true, false, false);
Sheets sheets = WB.Worksheets;
Worksheet WS = (Worksheet)sheets.get_Item(1);
Range excelRange = WS.UsedRange;
... (DO STUFF?)
// Get rid of everything - close Excel
while (Marshal.ReleaseComObject(WB) > 0) { }
WB = null;
while (Marshal.ReleaseComObject(sheets) > 0) { }
sheets = null;
while (Marshal.ReleaseComObject(WS) > 0) { }
WS = null;
while (Marshal.ReleaseComObject(excelRange) > 0) { }
excelRange = null;
GC();
ExcelObj.Quit();
while (Marshal.ReleaseComObject(ExcelObj) > 0) { }
ExcelObj = null;
GC();
public static void GC()
{
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
}
using Excel = Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
using System.Diagnostics;
class Sample
{
[DllImport("user32.dll")]
static extern int GetWindowThreadProcessId(int hWnd, out int lpdwProcessId);
Process GetExcelProcess(Excel.Application excelApp)
{
int id;
GetWindowThreadProcessId(excelApp.Hwnd, out id);
return Process.GetProcessById(id);
}
}
很好,謝謝! – Belial09
你就可以開始告訴我們如何創建/打開Excel ?請顯示一些代碼 –
你需要什麼PID的?你可以自己發佈Com對象 – Shai