码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • EnumWindowsProc


    BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam)
    进程回调函数,类似于窗口句柄的枚举

    typedef struct
    {
        	HWND	hWnd;
        	DWORD	dwProcessID;//可以根据需求修改,例如根据窗口名找到窗口
    }EnumWindowsArg;
    #define WINDOWNAME_BUFLEN 1000
    wchar_t* g_szWindowNameBuf = NULL;
    #define AUTOMARK_BACKGROUND_WINDOWNAME _T("WindowID")
    CString g_sWindowName(AUTOMARK_BACKGROUND_WINDOWNAME);
    
    BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam)
    {//根据进程id获得句柄
        EnumWindowsArg* pArg = (EnumWindowsArg*)lParam;//传入已知的进程id
    
    	DWORD dwProcessID = 0;
    	//根据句柄获得进程ID
    	::GetWindowThreadProcessId(hWnd, &dwProcessID);
    	if (dwProcessID == pArg->dwProcessID)//如果当前句柄的进程id等于传入的id
    	{
            wmemset(g_szWindowNameBuf, 0, WINDOWNAME_BUFLEN);
    		::GetWindowText(hWnd, g_szWindowNameBuf, WINDOWNAME_BUFLEN);//根据句柄获得窗口名
    
    		if (g_sWindowName.CompareNoCase(g_szWindowNameBuf) == 0)
    		{	
    			pArg->hWnd = hWnd;//返回当前的句柄
    			return FALSE;	// Found
    		}
    	}	
    	return TRUE;	// Not found
    }
    HWND GetHwndByProcessID(DWORD dwProcessID)
    {
    	HWND hWnd = NULL;
    
    	EnumWindowsArg ewa;
    	ewa.dwProcessID = dwProcessID;
    	ewa.hWnd = NULL;
    
    	g_szWindowNameBuf = new wchar_t[WINDOWNAME_BUFLEN];//必须要开辟新空间
    
    	EnumWindows(EnumWindowsProc, (LPARAM)& ewa);//调用回调函数,循环寻找等于当前进程id的句柄
    
    	delete[] g_szWindowNameBuf;
    	g_szWindowNameBuf = NULL;
    
    	if (ewa.hWnd)//不为空则找到
    	{
    		hWnd = ewa.hWnd;
    	}
    
    	return hWnd;
    }
    
  • 相关阅读:
    聚观早报 | 8月抖音吸金超3.06亿美元;​亚马逊发布新Kindle
    使用 pam module 与 seccomp 技术禁止用户加载内核模块
    学习 vite + vue3 + pinia + ts(四)setup异步返回 async setup
    jupyter notebook代码补全扩展安装遇到 Jupyter command `jupyter-contrib` not found.” 问题
    1.4-JMeter插件
    漏刻有时数据可视化Echarts组件开发(42)渐变色的应用
    matlab 读写磁共振影像.nii 数据
    实验(一):开发环境的安装及基本操作
    Vue笔记九:axios原理之promise
    java生成、识别条形码和二维码
  • 原文地址:https://blog.csdn.net/weixin_40385285/article/details/127112202
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号