SetForegroundWindow激活窗口
2015-04-23 13:57
417 查看
在Window98以下,如果程序要激活自己,只需要简单的调用SetForegroundWindow即可达到目的。但到Win98以后,再也没有这么简单了。
新建一个简单的工程,加进一个Timer控件,设置时间间隔为3秒,接着在时间事件中写SetForegroundWindow(Handle),好,运行程序,将窗口切换到后台,3秒钟之后,你看到的只是任务栏上闪了闪,窗口仍然躺在后面。
这是怎么回事呢,原来在Win98以后,窗口要使用SetForegroundWindow激活自己, 必须得到“允许”,允许的方式有很多种,我只介绍最简单的一种,就是利用这个API:LockSetForegroundWindow先解锁 Foreground的窗口,然后再调用SetForegroundWindow。
LockSetForegroundWindow在Delphi的Windows单元中并没有声明,需要自己声明,我将激活的函数重新封装如下,需要的朋友直接用就可以了:
新建一个简单的工程,加进一个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;
相关文章推荐
- SetForegroundWindow激活窗口
- 将后台窗口激活到前台的方法(使用AttachThreadInput和SetForegroundWindow两个API)
- SetForegroundWindow(激活窗口至前端)
- SetForegroundWindow以及 如何将一个某个窗口提到最顶层(转)
- Setforegroundwindow 将窗口置最前
- 一些窗口API函数,比如SetForegroundWindow,SwitchToThisWindow
- 将指定窗口设为顶层窗口SetForegroundWindow的正确用法
- windows下简单的调用Setforegroundwindow并不能将窗口置最前,我找到三种方法可以实现该功能。
- Setforegroundwindow 将窗口置最前
- SetForegroundWindow以及 如何将一个某个窗口提到最顶层
- 设置活动窗口 AttachThreadInput SetForegroundWindow
- SetForegroundWindow、SetActiveWindow、SetFocus 如何将一个某个窗口提到最顶层
- Setforegroundwindow 将窗口置最前
- 解决SetForegroundWindow和BringWindowToTop等函数有时失败,无法将窗口带到前台的问题
- 窗口置顶之SetWindowPos与SetForegroundWindow的区别
- Setforegroundwindow 将窗口置最前
- SetForegroundWindow以及 如何将一个某个窗口提到最顶层
- Python之窗口操作之find_window,set_foreground等
- SetForegroundWindow以及 如何将一个某个窗口提到最顶层
- (C++)窗口置前SetForegroundWindow(pThis->hwndWindow);