不知道應用程式的Windows Handle 時,如何結束該應用程式 |
|
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
不知道應用程式的Windows Handle 時,如何結束該應用程式作者:JSP(季世平) 資料來源:http://www.ccrun.com/ 如果只要判斷EXE的名字(不需要判斷路徑),可以省略EnumProcess,因為 pe32.szExeFile 裡就已經有EXE的名字了,因為沒有路徑,所以才又使用了 函數EnumProcess來取得完整的路徑。這樣就簡潔一些了。BOOL CALLBACK EnumWinProc(HWND hwnd, LPARAM lParam) { DWORD dwID; GetWindowThreadProcessId(hwnd, &dwID); if (dwID == (DWORD)lParam) { PostMessage(hwnd, WM_QUIT, 0, 0); return FALSE; } return TRUE; } void KillProgram(LPCSTR ExeName) { char *File; HANDLE hProcessSnap; PROCESSENTRY32 pe32; if (!ExeName || !ExeName[0]) return; File = strrchr(ExeName, '\\'); if (File!=0) ExeName = File 1; hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0); if (hProcessSnap == (HANDLE)-1) return; memset(&pe32, 0, sizeof(pe32)); pe32.dwSize = sizeof(PROCESSENTRY32); if (Process32First(hProcessSnap, &pe32)) { do { memset(&me32, 0, sizeof(me32)); me32.dwSize = sizeof(me32); File = strrchr(pe32.szExeFile, '\\'); File = File? File 1 : pe32.szExeFile; if (strcmpi(File,ExeName)==0) { EnumWindows((WNDENUMPROC)EnumWinProc, pe32.th32ProcessID); } } while(Process32Next(hProcessSnap,&pe32)); } CloseHandle(hProcessSnap); }網路志工聯盟----Visita網站http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]--- |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |