關於vc操作Excel表格後出現Excel.exe程序不能關閉的問題
阿新 • • 發佈:2019-01-25
這段時間做了個有關Excel報表匯入資料庫的小專案,發現在完成Excel操作後,函式結束卻殘留有EXCEL.EXE程序,讓人感覺很不爽,也讓函式不能夠重複執行(因為之前的程序沒有結束),在網上找了一堆方法,各種呼叫Application、workbook、worksheet的關閉方法仍然無法實現。無奈,最後只能使用程式碼在函式結束前將EXCEL.EXE程序殺掉,才得以解決問題。
下面貼出結束程序部分的程式碼。
#include "tlhelp32.h" //標頭檔案
DWORD GetProcessIDByName(char *FileName) //自定義函式,通過程序名獲得PID { HANDLE myhProcess; PROCESSENTRY32 mype; mype.dwSize = sizeof(PROCESSENTRY32); BOOL mybRet; //進行程序快照 myhProcess=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); //TH32CS_SNAPPROCESS快照所有程序 //開始程序查詢 mybRet=Process32First(myhProcess,&mype); //迴圈比較,得出ProcessID while(mybRet) { if(strcmp(FileName,mype.szExeFile)==0) return mype.th32ProcessID; else mybRet=Process32Next(myhProcess,&mype); } return 0; }
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,GetProcessIDByName("EXCEL.EXE")); //通過pid獲得程序控制代碼,
BOOL result = TerminateProcess(hProcess,1); //呼叫該函式終結程序,第二個引數為程序退出碼