程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> 不知道程序的窗口句柄時結束該程序的進程

不知道程序的窗口句柄時結束該程序的進程

編輯:C語言基礎知識
  假如只要判定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_QU99v, 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);
   }
  
  
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved