通过程序名称查找窗口句柄


char *str_name = "uedit32.exe";
HWND ghWnd = NULL;
DWORD th32ProcessID = 0;

BOOL GetProcID()
{
// str_name = strcpy ((char *)str_name, "uedit32");

 HANDLE handleSnapshot;   //定义CreateToolhelp32Snapshot系统快照句柄
 HANDLE handleTobeKilled; //定义要结束进程句柄

 handleSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);    //获得系统快照句柄
 PROCESSENTRY32 *info; //定义PROCESSENTRY32结构字指

 //PROCESSENTRY32  结构的 dwSize 成员设置成 sizeof(PROCESSENTRY32)
 info = new PROCESSENTRY32;            
 info->dwSize = sizeof(PROCESSENTRY32);

 //调用一次 Process32First 函数,从快照中获取进程列表
 Process32First(handleSnapshot, info);

 //重复调用 Process32Next,直到函数返回 FALSE 为止
 while(Process32Next(handleSnapshot, info) != FALSE)
 {
  if (strcmpi(str_name, info->szExeFile) == 0)
  {
   th32ProcessID = info->th32ProcessID;
   CloseHandle(handleSnapshot);
   delete info;
   info = NULL;
   return TRUE;

  }
 }

 CloseHandle(handleSnapshot);
 delete info;
 info = NULL;

 return FALSE;
}


BOOL CALLBACK TerminateAppEnum(HWND hwnd, LPARAM lParam) 

 DWORD dwID; 

 GetWindowThreadProcessId(hwnd, &dwID); 

 if(dwID == (DWORD)lParam) 
 { 
  ::SetParent(hwnd,NULL);
  ::ShowWindowAsync(hwnd,3);
  ::ShowWindow(hwnd,SW_SHOWMAXIMIZED);
  ::UpdateWindow (hwnd);
  return FALSE;
  /*PostMessage(hwnd,   WM_CLOSE,   0,   0)   ;  */
 } 

 return   TRUE   ; 


void CwwDlg::OnBnClickedButton1()
{
 // TODO: 在此添加控件通知处理程序代码
 if (GetProcID())
 {
  EnumWindows(TerminateAppEnum, th32ProcessID);
 }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值