SetForegroundWindow激活窗口

在Window98如下,若是程序要激活本身,只须要简单的调用SetForegroundWindow便可达到目的。但到Win98之后,再也没有这么简单了。web

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

这是怎么回事呢,原来在Win98之后,窗口要使用SetForegroundWindow激活本身, 必须获得“容许”,容许的方式有不少种,我只介绍最简单的一种,就是利用这个API:LockSetForegroundWindow先解锁 Foreground的窗口,而后再调用SetForegroundWindow。this

LockSetForegroundWindow在Delphi的Windows单元中并无声明,须要本身声明,我将激活的函数从新封装以下,须要的朋友直接用就能够了:spa

复制代码
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;
复制代码
相关文章
相关标签/搜索