1. 程式人生 > >關於vc操作Excel表格後出現Excel.exe程序不能關閉的問題

關於vc操作Excel表格後出現Excel.exe程序不能關閉的問題

        這段時間做了個有關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);  //呼叫該函式終結程序,第二個引數為程序退出碼