zoukankan      html  css  js  c++  java
  • 将窗口置顶的方法: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);   

  • 相关阅读:
    HotSpot 虚拟机垃圾回收算法实现
    多线程死锁的产生原因以及如何避免
    Java异常实战——OutOfMemoryError
    MySQL数据库中的四种隔离级别
    Java运行时数据区概述
    MySQL 字符集和校对
    debezium关于cdc的使用(下)
    debezium关于cdc的使用(上)
    对xxl-job进行simpleTrigger并动态创建任务扩展
    折腾Java设计模式之单例模式
  • 原文地址:https://www.cnblogs.com/crazypebble/p/2681857.html
Copyright © 2011-2022 走看看