FindWindow和FindWindowEx

本文详细介绍了Windows API中用于窗口操作的几个关键函数,包括FindWindow、FindWindowEx、GetNextWindow、EnumChildWindows和GetClassName。通过这些函数,开发者可以实现窗口查找、子窗口枚举、窗口类名获取等功能,是进行Windows应用开发和自动化控制的重要工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数原型:FindWindow(lpszClassName,lpszWindowName)

参数:lpszClassName--窗口类名;lpszWindowName--窗口标题

功能:查找窗口,未找到则返回NULL

SDK中

HWND hwnd = FindWindow(NULL, "计算器");

if(m_pWnd)

{

AfxMessageBox("找到了!");

::PostMessage(hwnd,WM_CLOSE,0,0);//强迫退出

}

MFC中

CWnd * m_pWnd = FindWindow(NULL, "计算器");

if(m_pWnd)

{

AfxMessageBox("找到了!");

::PostMessage(m_pWnd->m_hWnd,WM_CLOSE,0,0);//强迫退出

}

 

函数原型:HWND FindWindowEx(

HWND hwndParent,      // handle to parent window
HWND hwndChildAfter,  // handle to a child window
LPCTSTR lpszClass,    // pointer to class name
LPCTSTR lpszWindow    // pointer to window name
);

功能:查找子窗口或子控件,未找到则返回NULL

HWND h = FindWindow(NULL, "计算器" );

HWND m_hwnd = FindWindowEx(h, 0, "Button", "Ok" );

HWND m_hwnd = FindWindowEx(h,NULL,NULL,"Ok");

HWND m_hwnd = FindWindowEx(h,NULL,"Button",NULL);

SendMessage(m_hwnd, WM_KEYDOWN, 13, 0x011c0001 );
SendMessage(m_hwnd, WM_KEYDOWN, 13, 0x011c0001 );
SendMessage(m_hwnd, WM_KEYUP, 13, 0xc11c0001 );

 

其他函数

HWND GetNextWindow(HWND hWnd,UNIT wCmd)

功能:返回z序中的前一个或后一个窗口的句柄

参数:
hWnd:基准窗口句柄
wCmd:指明窗口返回的是前一窗口的句柄还是后一窗口的句柄。该参数可以是下列两个值之一:
GW_HWNDNEXT:返回在给定窗口的下面窗口的句柄。
GW_HWNDPREV:返回在给定窗口的上面窗口的句柄。
GW_HWNDFIRST = 0;
GW_HWNDLAST = 1;
GW_HWNDNEXT = 2;
GW_HWNDPREV = 3;
GW_OWNER = 4;
GW_CHILD = 5;

返回值:如果函数成功,返回值是前一窗口(或后一窗口)的句柄。如果前后窗口不存在,则返回值为NULL。

 

BOOL EnumChildWindows(HWND hWndParent,WNDENUMPROC lpEnumFunc, LPARAM lParam)

功能:枚举子窗体

参数:

hWndParent 父窗口句柄
lpEnumFunc 回调函数地址
lParam 自定义参数

注意:回调函数的返回值将会影响到这个API函数的行为。如果回调函数返回true,则枚举继续直到枚举完成;如果返回false,则将会中止枚举。

 

int GetClassName(HWND hWnd, LPTSTR IpClassName, int nMaxCount)

功能:获得指定窗口所属的类的类名

参数:

hWnd:窗口的句柄及间接给出的窗口所属的类。
IpClassName:指向接收窗口类名字符串的缓冲区的指针。
nMaxCount:指定由参数lpClassName指示的缓冲区的字节数。如果类名字符串大于缓冲区的长度,则多出的部分被截断。

返回值:如果函数成功,返回值为拷贝到指定缓冲区的字符个数:如果函数失败,返回值为0。

转载于:https://www.cnblogs.com/doudongchun/p/3699612.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值