在Window以下如果程序要激活自己只需要简单的调用SetForegroundWindow即可达到目的但到Win以后再也没有这么简单了 在Window以下如果程序要激活自己只需要简单的调用SetForegroundWindow即可达到目的但到Win以后再也没有这么简单了 新建一个简单的工程加进一个Timer控件设置时间间隔为秒接着在时间事件中写SetForegroundWindow(Handle)好运行程序将窗口切换到后台秒钟之后你看到的只是任务栏上闪了闪窗口仍然躺在后面 这是怎么回事呢原来在Win以后窗口要使用SetForegroundWindow激活自己必须得到允许允许的方式有很多种我只介绍最简单的一种就是利用这个APILockSetForegroundWindow先解锁Foreground的窗口然后再调用SetForegroundWindow LockSetForegroundWindow在Delphi的Windows单元中并没有声明需要自己声明我将激活的函数重新封装如下需要的朋友直接用就可以了 const LSFW_LOCK = ; LSFW_UNLOCK = ; function LockSetForegroundWindow(uLockCode: DWORD): BOOL; stdcall; implementation function LockSetForegroundWindow; external userdll name LockSetForegroundWindow; function wdSetForegroundWindow(Handle: THandle): Boolean; begin // //作者linzhenqun //时间 //说明使Win以上的窗口都可以设置Foreground的函数 // if ((WinPlatform = VER_PLATFORM_WIN_NT) and (WinMajorVersion> ))//up win or ((WinPlatform = VER_PLATFORM_WIN_WINDOWS) and //up win ((WinMajorVersion > ) or ((WinMajorVersion = ) and (WinMinorVersion > )))) then LockSetForegroundWindow(LSFW_UNLOCK); Result := SetForegroundWindow(Handle); end; 现在你在时间事件中写下如下代码 ApplicationRestore; wdSetForegroundWindow(Handle); 那么窗口就可以自己激活自己了爽吧! |