郁金香外挂技术-郁金香灬老师

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

飞郁网络培训郁金香终身VIP管理员QQ150330575淘宝担保交易QQ交流群(外挂,驱动)
查看: 310|回复: 0

如何将一个某个窗口提到最顶层(转)

[复制链接]
发表于 2018-10-23 23:35:26 | 显示全部楼层 |阅读模式

原文地址: https://blog.csdn.net/playboy1/a ... tm_source=blogxgwz1

问题:有个界面,想定期让其提前(**并显示在用户面前),但又不想用TOPMOST那种置顶方法.我用了SetForegroundWindow,SetActiveWindow,SHOW_WINDOW都不行:程序运行后再打开记事本,时间到我的程序只会在任务栏上闪几下,界面根本出不来怎么办!!(不用顶极窗口,不用鼠标模拟点击)

方法一:
使用定时器,然后在定时器响应函数中定时调用,SetWindowPos()函数,第一个参数写HWND_TOPMOST

方法二:
因为2000/XP改变了SetForegroundWindow的执行方式,不允许随便把窗口提前,打扰用户的工作。可以用附加本线程到最前面窗口的线程,从而欺骗windows。

AttachThreadInput(GetWindowThreadProcessId(::GetForegroundWindow(),NULL), GetCurrentThreadId(),TRUE);
SetForegroundWindow();
SetFocus();
AttachThreadInput(GetWindowThreadProcessId(::GetForegroundWindow(),NULL), GetCurrentThreadId(),FALSE);


方法三:

如何激活指定的窗口事件    ●   
           我们知道,Windows    9x/2000中SetForegroundWindow函数当用户正在操作其他窗口时是不能强制某个窗口为前景窗口的,而是激活窗口并调用FlashWindowEx函数来通知用户。但是很多实际情况要求将激活窗口的同时将创建这个窗口的线程置为前景状态。碰到这种情况我们可以使用USER32.DLL中的几个未公开API函数。   
   void    SwitchToThisWindow    (   
   HWND    hWnd,        //    被激活的窗口句柄   
   BOOL    bRestore    //    如果被极小化,则恢复窗口   
   );   
   必须动态加载这个函数。   
   typedef    void    (WINAPI    *PROCSWITCHTOTHISWINDOW)    (HWND,    BOOL);   
   PROCSWITCHTOTHISWINDOW    SwitchToThisWindow;   
   HMODULE    hUser32    =    GetModuleHandle("user32");   
   SwitchToThisWindow    =    (    PROCSWITCHTOTHISWINDOW)   
   GetProcAddress(hUser32,    "SwitchToThisWindow");        
   接下来只要用任何现存窗口的句柄调用这个函数即可,第二个参数指定如果窗口极小化,是否恢复其原状态。   
   SwitchToThisWindow(hWnd,    TRUE);   
---------------------
作者:郁闷阳光
来源:CSDN
原文:https://blog.csdn.net/playboy1/article/details/6896445
版权声明:本文为博主原创文章,转载请附上博文链接!

郁金香外挂教程,学习中...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|郁金香外挂技术-郁金香灬老师 ( 苏ICP备10059359号 )

GMT+8, 2018-11-17 12:12 , Processed in 0.046056 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表