Windows系统中窗口移到顶端所调用的函数是什么?

白小丸 2020-01-03 11:21:29
想知道在Windows系统(主要关注Windows 7)中,一个程序的窗口被移动到屏幕顶端这个过程是通过调用哪个系统函数实现的。

我查到一个函数SetForegroundWindow,官方文档中说该函数将创建指定窗口的线程设置到前台,并且激活该窗口。键盘输入转向该窗口,并为用户改各种可视的记号。但老师说不一定所有程序到达前台都是经过这个函数的。

请问还有别的系统函数具有这个功能吗?Windows系统本身是通过调用哪个函数实现的呢?
...全文
113 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
许文君 2020-01-04
  • 打赏
  • 举报
回复
引用 2 楼 白小丸 的回复:
[quote=引用 1 楼 孤客天涯 的回复:] BringWindowToTop SetWindowPos
您好,这三个函数应该都是ring3层的函数吧,您知道它们对应的ring0层函数是什么吗?[/quote] 这就是个界面操作为什么要到r0?
白小丸 2020-01-04
  • 打赏
  • 举报
回复
引用 7 楼 许文君 的回复:
[quote=引用 6 楼 白小丸 的回复:] [quote=引用 5 楼 许文君 的回复:] [quote=引用 4 楼 白小丸 的回复:] 您好,我现在了解到,一个程序把另一个程序调到前台是通过调用这三个函数的,而系统本身不是这么做的。比如用户通过鼠标点击这个窗口把它调到前台,其实系统是通过消息机制做的吧?
消息机制和R0有直接关系吗? https://docs.microsoft.com/en-us/previous-versions/aa922525(v=msdn.10)[/quote] 不好意思,我是小白,很多东西一知半解。 其实我的目的是探究一个程序的窗口被调到屏幕顶端这个过程,系统是如何实现的。一开是我以为是系统调用了SetForegroundWindow之类的函数,后来又了解到有消息机制,现在我准备做实验hook一下几个可能有关的消息。您如果了解这个过程的话,可否赐教[/quote] 消息响应的话直接spy++啊,具体实现可以看那套反编译的xp,现在不知道什么机制了,了解这个做什么用呢?[/quote] 谢谢,spy++这个工具还挺好用的。项目需求,要在程序出现在屏幕顶端的瞬间进行截屏。
许文君 2020-01-04
  • 打赏
  • 举报
回复
引用 6 楼 白小丸 的回复:
[quote=引用 5 楼 许文君 的回复:] [quote=引用 4 楼 白小丸 的回复:] 您好,我现在了解到,一个程序把另一个程序调到前台是通过调用这三个函数的,而系统本身不是这么做的。比如用户通过鼠标点击这个窗口把它调到前台,其实系统是通过消息机制做的吧?
消息机制和R0有直接关系吗? https://docs.microsoft.com/en-us/previous-versions/aa922525(v=msdn.10)[/quote] 不好意思,我是小白,很多东西一知半解。 其实我的目的是探究一个程序的窗口被调到屏幕顶端这个过程,系统是如何实现的。一开是我以为是系统调用了SetForegroundWindow之类的函数,后来又了解到有消息机制,现在我准备做实验hook一下几个可能有关的消息。您如果了解这个过程的话,可否赐教[/quote] 消息响应的话直接spy++啊,具体实现可以看那套反编译的xp,现在不知道什么机制了,了解这个做什么用呢?
白小丸 2020-01-04
  • 打赏
  • 举报
回复
引用 5 楼 许文君 的回复:
[quote=引用 4 楼 白小丸 的回复:] 您好,我现在了解到,一个程序把另一个程序调到前台是通过调用这三个函数的,而系统本身不是这么做的。比如用户通过鼠标点击这个窗口把它调到前台,其实系统是通过消息机制做的吧?
消息机制和R0有直接关系吗? https://docs.microsoft.com/en-us/previous-versions/aa922525(v=msdn.10)[/quote] 不好意思,我是小白,很多东西一知半解。 其实我的目的是探究一个程序的窗口被调到屏幕顶端这个过程,系统是如何实现的。一开是我以为是系统调用了SetForegroundWindow之类的函数,后来又了解到有消息机制,现在我准备做实验hook一下几个可能有关的消息。您如果了解这个过程的话,可否赐教
许文君 2020-01-04
  • 打赏
  • 举报
回复
引用 4 楼 白小丸 的回复:
您好,我现在了解到,一个程序把另一个程序调到前台是通过调用这三个函数的,而系统本身不是这么做的。比如用户通过鼠标点击这个窗口把它调到前台,其实系统是通过消息机制做的吧?
消息机制和R0有直接关系吗? https://docs.microsoft.com/en-us/previous-versions/aa922525(v=msdn.10)
白小丸 2020-01-04
  • 打赏
  • 举报
回复
引用 3 楼 许文君 的回复:
[quote=引用 2 楼 白小丸 的回复:] [quote=引用 1 楼 孤客天涯 的回复:] BringWindowToTop SetWindowPos
您好,这三个函数应该都是ring3层的函数吧,您知道它们对应的ring0层函数是什么吗?[/quote] 这就是个界面操作为什么要到r0?[/quote] 您好,我现在了解到,一个程序把另一个程序调到前台是通过调用这三个函数的,而系统本身不是这么做的。比如用户通过鼠标点击这个窗口把它调到前台,其实系统是通过消息机制做的吧?
白小丸 2020-01-03
  • 打赏
  • 举报
回复
引用 1 楼 孤客天涯 的回复:
BringWindowToTop SetWindowPos
您好,这三个函数应该都是ring3层的函数吧,您知道它们对应的ring0层函数是什么吗?
孤客天涯 2020-01-03
  • 打赏
  • 举报
回复
BringWindowToTop SetWindowPos

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧