当前位置:天才代写 > tutorial > C语言/C++ 教程 > 不知道措施的窗口句柄时竣事该措施的历程

不知道措施的窗口句柄时竣事该措施的历程

2017-11-06 08:00 星期一 所属: C语言/C++ 教程 浏览:520

假如只要判定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);
}

 

    关键字:

天才代写-代写联系方式