[C++]FindWindow,多个窗口名字一致

解决方案原链接https://www.oschina.net/question/1160676_2187843

方案

1.使用FindeWindow先找到第一个窗口

HWND hWnd = NULL;
hWnd =::FindWindow(NULL, WindowName);

2.使用FindWindowEx找接下来同名的窗口

hWnd = ::FindWindowEx(NULL, hWnd,NULL, WindowName);
函数原型:HWND FindWindowEx(HWND hwndParent,HWND hwndChildAfter,LPCTSTR lpszClass,LPCTSTR lpszWindow)
hwndParent:要查找子窗口的父窗口句柄,如果hwnjParent为NULL,则函数以桌面窗口为父窗口,查找桌面窗口的所有子窗口。
hwndChildAfter :子窗口句柄。从子窗口开始查找。子窗口必须为hwndPareRt窗口的直接子窗口而非后代窗口。如果HwndChildAfter为NULL,查找从hwndParent的第一个子窗口开始。如果hwndParent 和 hwndChildAfter同时为NULL,则函数查找所有的顶层窗口及消息窗口。
lpszClass:指向一个指定了类名的空结束字符串,或一个标识类名字符串的成员的指针。如果该参数为一个成员,则它必须为前次调用theGlobaIAddAtom函数产生的全局成员。该成员为16位,必须位于lpClassName的低16位,高位必须为0。
lpszWindow:指向一个指定了窗口名(窗口标题)的空结束字符串。如果该参数为 NULL,则为所有窗口全匹配。

再加一个使用示例吧,下面这个是用来控制flash位置的

@2020.8.31

新增两个函数,辅助使用

HWND GetAppWnd(const char *AppTitle)
{
	HWND hwnd=NULL;
	if (!AppTitle)
	{
		//无输入默认最顶端
		hwnd = ::GetForegroundWindow();
	}
	else
	{
		hwnd = ::FindWindow(NULL, AppTitle);
	}
	return hwnd;
}
CString GetAppRunTitle(HWND AppHwnd)
{
	char title[MAX_PATH];
	::GetWindowText(AppHwnd, title, MAX_PATH);
	CString t= title;
	return t;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值