枚举所有窗口

 EnumWindows
这个函数列出屏幕上所有的顶级窗口,传递他们的指针给程序定义的回调函数.这个函数会一直工作到列出所有窗口,或者回调函数返回FALSE.
BOOL EnumWindows(
 WNDENUMPROC lpEnumFunc,  // pointer to callback function
 LPARAM lParam            // application-defined value
);

参数
lpEnumFunc
 指向程序定义的回调函数的指针.
lParam
 传递给回调函数的值,由程序自己定义的.

返回值
 如果函数成功了,返回一个非0值.如果失败了,返回0.


 该函数不会列出子窗口.
 该函数比GetWindow更可靠.调用GetWindow的函数执行时可能会陷入死循环中,或者使用一个已经被销毁的窗口句柄.

EnumWindowsProc
这个函数是程序自己定义的回调函数.它获得顶级窗口的句柄.

BOOL CALLBACK EnumWindowsProc(
  HWND hwnd,      // handle to parent window
  LPARAM lParam   // application-defined value
);
参数
hwnd
 顶级窗口的句柄.
lParam
 EnumWindows传过来的参数

返回值
 要继续枚举,函数必须返回TRUE,要停止枚举必须返回FALSE.

例:
如果要在列表框里显示所有的窗口
BOOL CALLBACK EnumWindowsProc(
  HWND hwnd,      // handle to parent window
  LPARAM lParam   // application-defined value
)
{
 char lpWinTitle[256]; 
 ::GetWindowText(hwnd,lpWinTitle,256-1); 
 CString m_strTitle;
 m_strTitle.Format("%s",lpWinTitle);
 CListBox *p_l = (CListBox *)lParam;
 if (!m_strTitle.IsEmpty())
 {
  p_l->AddString(lpWinTitle);
 }
 return TRUE;
}

调用EnumWindows(EnumWindowsProc, (LPARAM)GetDlgItem(IDC_LIST1));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值