• 将窗口置顶的方法:SetWindowPos、AttachThreadInput、SwitchToThisWindow


    方法一:
    使用定时器,然后在定时器响应函数中定时调用,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);   

  • 相关阅读:
    HighTec-Eclipse for Tricore 的安装方法
    http升级https遇到的问题
    symfony中模板生成路径两种方式
    http请求在https中使用
    git tag标签
    Git查看两个版本之间修改了哪些文件
    mysql将语句写入表中
    使用fiddler抓包模拟器及配置fiddler过滤
    Mixed Content: The page at 'xxx' was loaded over HTTPS, but requested an insecure resource 'xxx'.
    nginx 禁止某IP访问
  • 原文地址:https://www.cnblogs.com/crazypebble/p/2681857.html
Copyright © 2020-2023  润新知