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;

现在你在时间事件中写下如下代码:

Application.Restore;

SetForegroundWindow(Handle);

那么,窗口就可以自己激活自己了,爽吧!

转载于:https://www.cnblogs.com/gameking/archive/2013/04/24/3040601.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值