zoukankan      html  css  js  c++  java
  • SetForegroundWindow激活窗口

    在Window98以下,如果程序要激活自己,只需要简单的调用SetForegroundWindow即可达到目的。但到Win98以后,再也没有这么简单了。

    新建一个简单的工程,加进一个Timer控件,设置时间间隔为3秒,接着在时间事件中写SetForegroundWindow(Handle),好,运行程序,将窗口切换到后台,3秒钟之后,你看到的只是任务栏上闪了闪,窗口仍然躺在后面。

    这是怎么回事呢,原来在Win98以后,窗口要使用SetForegroundWindow激活自己, 必须得到“允许”,允许的方式有很多种,我只介绍最简单的一种,就是利用这个API:LockSetForegroundWindow先解锁 Foreground的窗口,然后再调用SetForegroundWindow。

    LockSetForegroundWindow在Delphi的Windows单元中并没有声明,需要自己声明,我将激活的函数重新封装如下,需要的朋友直接用就可以了:

    复制代码
    const
    LSFW_LOCK     = 1;
    LSFW_UNLOCK   = 2;
    function LockSetForegroundWindow(uLockCode: DWORD): BOOL; stdcall;
    implementation
    function LockSetForegroundWindow; external 'user32.dll' name 'LockSetForegroundWindow';
    function wdSetForegroundWindow(Handle: THandle): Boolean;
    begin
    //-----------------------------------------------------
    //作者:linzhenqun
    //时间:2006-11-1
    //说明:使Win98以上的窗口都可以设置Foreground的函数
    //-----------------------------------------------------
    if ((Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion> 4))//up win 2000
        or ((Win32Platform = VER_PLATFORM_WIN32_WINDOWS) and //up win 98
        ((Win32MajorVersion > 4) or
        ((Win32MajorVersion = 4) and
        (Win32MinorVersion > 0)))) then
        LockSetForegroundWindow(LSFW_UNLOCK);
    Result := SetForegroundWindow(Handle);
    end;
    复制代码
  • 相关阅读:
    Paypal开源nodejs框架研究(一)KrakenJs
    CoffeeScript 陷阱
    nodejs express route 的用法
    Moogoose实践之:Schema写全很重要,不然会把时间浪费在调错上!
    微软新一代输入法框架 TSF
    VC++在Win7和Win8系统下获得百度输入法的名字
    两款MongoDB的可视化管理工具
    网易开源游戏服务器框架-Pomelo实践(一)
    WinDbg之Page Heap实践
    MongoDB 备份与恢复的实践
  • 原文地址:https://www.cnblogs.com/ljl_falcon/p/4450335.html
Copyright © 2011-2022 走看看