以下程式碼可得知工作管理員上有什麼程式在運作,而且不用EMUN(超級浪費資源),隨查隨知,也可利用抓到的handle強制停止PROCESS/thread的運作。不佔資源,還滿好用的,TLHELP32真是好物阿…(煙)


需要kernel32.lib


#include <TLHELP32.H>
void CUninstallApp::FindProcessAndClose(CString Name)
{
 CString GetName;
 HANDLE hProcessSnap,hProcess;
 BYTE PNum=0;
 hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
 if( hProcessSnap != INVALID_HANDLE_VALUE ) {
  PROCESSENTRY32 pe32;
  pe32.dwSize = sizeof( PROCESSENTRY32 );
  if( !Process32First( hProcessSnap, &pe32 ) )  {
   CloseHandle( hProcessSnap );     // Must clean up the snapshot object!
  }
  else{
   do{
    GetName.Format("%s",pe32.szExeFile);
    GetName.MakeLower();
    if(GetName.Replace("要查的程式","要查的程式")!=0){//用Compare也一樣,也可加副檔名
     HWND hwnd;
     hwnd=NULL;
//     AfxMessageBox(GetName);
     hProcess=OpenProcess(PROCESS_TERMINATE,FALSE,pe32.th32ProcessID);
     TerminateProcess(hProcess,1); //停止PROCESS
     ::ValidateRgn(NULL);
     CloseHandle( hProcess );
     CloseHandle( hProcessSnap );
     break;
    }
   }while( Process32Next( hProcessSnap, &pe32 ) );
  }
 }
}

創作者介紹
創作者 freerains 的頭像
freerains

雨的世界.我宅故我在

freerains 發表在 痞客邦 留言(0) 人氣()