第一篇:
::GetActiveWindow 只是获取当前程序中(严格地说是线程中)被激活的窗口;
HWND hWnd = ::GetActiveWindow();
注意:如果是在多线程中某个子线程函数内部掉该函数,则返回NULL, 建议在主线程中调用
即:如果某个函数有子线程调用的,则该函数内部使用getactivewindow()返回NULL
::GetForeGroundWindow 是获取系统当前正激活的那个窗口(注意不是进程中),
比如说我同时打开任务管理器(它始终处在最顶层)和一个普通窗口,
我现在激活这个普通窗口(它是当前活动窗口,但并不处在最顶层),
用 GetForeGroundWindow 获取到的窗口句柄是这个普通窗口而不是任务管理器
HWND hWnd = ::GetForegroundWindow();
GetLastActivePopup
获取指定进程的最近被激活的窗口,该进程主窗口句柄(afxgetmainWnd()->m_hWnd)作为该函数的参数---此条件是关键
可以在子线程函数内部调用该函数也可以,这点比GetActiveWindow要好
::GetLastActivePopup(HWND hWnd)
GetTopWindow 函数功能:该函数检查的子窗口z序,并返回在z序顶部的子窗口的句柄。
函数原型:HWND GetTopWindow(HWND hWnd);
参数: hWnd:被查序的父窗口的句柄。如果该参数为NULL,函数返回Z序顶部的窗口句柄。
返回值;如果函数成功,
返回值为在Z序顶部的子窗口句柄。如果指定的窗口无子窗口,返回值为NULL。