根据进程id找窗口句柄

来源:互联网 发布:股票买卖软件下载3.0 编辑:程序博客网 时间:2024/05/21 10:23
typedef struct EnumWndFun  
{     
    HWND      hWnd;  
    DWORD    dwProcessId;     
}EnumWndFun,*LPEnumWndFun;  


inline BOOL CALLBACK EnumFunc(HWND hwnd, LPARAM lParam)  
{  


    EnumWndFun*pArg = (LPEnumWndFun)lParam;     
    DWORD  processId;  
    GetWindowThreadProcessId(hwnd, &processId);      
    if( processId == pArg->dwProcessId)    
    {     
        pArg->hWnd = hwnd;  
        return FALSE;      
    }  
    return TRUE;     
}


inline HWND FindHwndByPorcessId(DWORD processID)  
{  
    HWND retWnd=NULL;    
    EnumWndFun ew;    
    ew.dwProcessId   = processID;    
    ew.hWnd   =  NULL;    
    EnumWindows(EnumFunc,(LPARAM)&ew);  
    if(wi.hWnd)
    { 
        retWnd=ew.hWnd;  
    }  
    return retWnd;  


DWORD KillProcessByHwnd(HWND hwnd)
{

    DWORD dwProcessId;



    DWORD hThread = ::GetWindowThreadProcessId(hwnd, &dwProcessId);


    HANDLE TargetProcess = OpenProcess(PROCESS_TERMINATE, FALSE, dwProcessId);    
    if(TargetProcess != NULL)
    {
        TerminateProcess(TargetProcess, 0);
        CloseHandle(TargetProcess);
    }


    return 0;
}


2 0