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


    将窗口置顶的方法: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);   

  • 相关阅读:
    配置使用EF常见的一些问题及解决方案
    js定时器的使用(实例讲解)
    MySQL Workbench 修改快捷键
    Linux CentOS 启动 网卡
    Linux CentOS 安装 VMware Tools
    Linux 群晖 DokuWiki 安装
    Linux CentOS 系统安装 和 相关配置
    接口 Postman 提交json对象到后台 Request Payload
    PHP 文件上传
    电商系统 项目管理 GIT的使用
  • 原文地址:https://www.cnblogs.com/yuzhould/p/4454246.html
Copyright © 2020-2023  润新知