GetActiveWindow与GetForegroundWindow两者有何区别

 我来答
百度网友0d685c6
2016-08-04 · 知道合伙人数码行家
百度网友0d685c6
知道合伙人数码行家
采纳数:3348 获赞数:6283
毕业于中北大学测控技术与仪器专业,本科学位。从事编程3年,擅长电脑的问题,LTE的问题。

向TA提问 私信TA
展开全部
来自MSDN:
The active window is either the window that has the current input focus or the window explicitly made active by the SetActiveWindow member function
The foreground window applies only to top-level windows(frame windows or dialog boxes).

网上有人说:
哦,都被你们讨论完了,我没话可说。
GetActiveWindow() 是你的程序的当前激活的窗口。
GetForegroundWindow() 是整个Windows系统的当前激活的窗口。

我自己仍然有点不明白,当期窗口不就是当前激活的窗口吗?大家来讨论下。

The SetForegroundWindow window function, on the other hand, activates a window and forces it into the foreground. An application should only call SetForegroundWindow if it needs to display critical errors or information that needs the user 's immediate attention.
看了这个有点明白了,SetActiveWindow函数只有激活最前面的那个窗口(foreground —— the top of z-order)才能使该窗口为当前窗口。而SetForegroundWindow强迫设置窗口为最前面的窗口并激活它使它成为当前窗口。SetForegroundWindow包含有SetActiveWindow的激活功能。我这样分析对否?

最前的窗口不一定是激活的...比如说qq的主窗口,只要不靠到屏幕边上,就是总在最前的,你拖放一个ie过去是挡不住的,这时候,你用GetActiveWindow得到的是有焦点的ie窗口,用GetForegroundWindow得到的是qq的窗口,不知道我的描述你能否理解,呵呵
Parameters
The return value is the handle to the active window attached to the calling thread's message queue. Otherwise, the return value is NULL.

有道理

这人不地道

GetActiveWindow Function

Retrieves the window handle to the active window attached to the calling thread's message queue.
Syntax
Copy

HWND WINAPI GetActiveWindow(void);

This function has no parameters.
Return Value

HWND

Remarks

To get the handle to the foreground window, you can use GetForegroundWindow.

The SetActiveWindow function activates a window, but not if the application is in the background. The window will be brought into the foreground — the top of z-order — if the application is in the foreground when it sets the activation.
To get the window handle to the active window in the message queue for another thread, use GetGUIThreadInfo.

GetActiveWindow只返回本线程的,GetForegroundWindow返回整个系统的。

正在使用这两个方法,不过觉得有时不大生效的。想问下我如何去查看最前面的是哪个窗口呢?请指点下。

问题终于解决了。用GetActiveWindow得到的是有焦点的ie窗口,用GetForegroundWindow得到是最前面的窗口。例如,你登录了QQ,QQ的界面一直都是在最前面的,但你的光标选择的是别的程序,如果你要得到QQ的句柄的话,你用GetForegroundWindow()就可以得到了,如果你想得到你当前光标选中的窗口,那你用GetActiveWindow()就可以了

怎在用,我要保持一个窗口一直在最前面,不太好用
Storm代理
2023-07-25 广告
StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP... 点击进入详情页
本回答由Storm代理提供
就烦条0o
2018-07-06 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46492
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
GetActiveWindow() 是你的程序的当前激活的窗口。
GetForegroundWindow() 是整个Windows系统的当前激活的窗口。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式