MFC 查找窗口句柄 获取进程ID 通过ID查找句柄

17 篇文章 2 订阅
6 篇文章 0 订阅

typedef struct EnumFunArg

{

    HWND hWnd;

    DWORD dwProcessId;


}EnumFunArg;

BOOL CALLBACK lpEnumFunc(HWND hwnd, LPARAM lParam)

{

    EnumFunArg* pArg = reinterpret_cast<EnumFunArg*> (lParam);

    DWORD dwProcessId;

    GetWindowThreadProcessId(hwnd, &dwProcessId);

    if (dwProcessId == pArg->dwProcessId)

    {

        pArg->hWnd = hwnd;

        // 注意:当查找到了,应该返回FALSE中止枚举下去

        return FALSE;

    }

    return TRUE;//继续枚举下去直到所有顶层窗口枚举完为止

}

HWND myGetWindowByProcessId(DWORD dwProcessId)

{

    EnumFunArg arg;

    arg.dwProcessId = dwProcessId;

    arg.hWnd = 0;

    EnumWindows(lpEnumFunc, reinterpret_cast<LPARAM>(&arg));

    return arg.hWnd;

}


//关闭程序
BOOL SetProcessClose(CString strProcessName)
{
    PROCESSENTRY32 pe32;
    int nRet = 0;
    pe32.dwSize = sizeof(pe32);
    HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (hProcessSnap == INVALID_HANDLE_VALUE)
    {
        //    printf("出错\n");
        return false;
    }
    BOOL bMore = ::Process32First(hProcessSnap, &pe32);
    while (bMore)
    {
        //TRACE("进程名称:%S\n", pe32.szExeFile);
        //TRACE("进程ID号:%u\n\n", pe32.th32ProcessID);
        bMore = ::Process32Next(hProcessSnap, &pe32);

        CString strCmp = pe32.szExeFile;
        nRet = strCmp.Find(strProcessName);
        if (nRet != -1)
        {
            HWND hWnd = myGetWindowByProcessId(pe32.th32ProcessID);
            HANDLE hProcess = NULL;
            CString aa = pe32.szExeFile;
            HWND Hwnd = ::FindWindow(NULL,L"Odin3 v3.14"); //获取句柄api
            hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID);
        //    BOOL AAA = PostMessage((HWND)hProcess, WM_QUIT, NULL, NULL);
            //break;
            continue;
        }
    }
    ::CloseHandle(hProcessSnap);
    return true;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值