强制跳过激活锁 窗口如何激活自己
窗口如何激活自己
在Window 以下 如果程序要激活自己 只需要简单的调用SetForegroundWindow即可达到目的 但到Win 以后 再也没有这么简单了
在Window 以下 如果程序要激活自己 只需要简单的调用SetForegroundWindow即可达到目的 但到Win 以后 再也没有这么简单了
新建一个简单的工程 加进一个Timer控件 设置时间间隔为 秒 接着在时间事件中写SetForegroundWindow(Handle) 好 运行程序 将窗口切换到后台 秒钟之后 你看到的只是任务栏上闪了闪 窗口仍然躺在后面
这是怎么回事呢 原来在Win 以后 窗口要使用SetForegroundWindow激活自己 必须得到 允许 允许的方式有很多种 我只介绍最简单的一种 就是利用这个API LockSetForegroundWindow先解锁Foreground的窗口 然后再调用SetForegroundWindow
LockSetForegroundWindow在Delphi的Windows单元中并没有声明 需要自己声明 我将激活的函数重新封装如下 需要的朋友直接用就可以了
const
LSFW_LOCK = ;
LSFW_UNLOCK = ;
function LockSetForegroundWindow(uLockCode: DWORD): BOOL; stdcall;
implementation
function LockSetForegroundWindow; external user dll name LockSetForegroundWindow ;
function wdSetForegroundWindow(Handle: THandle): Boolean;

begin
//
//作者 linzhenqun
//时间
//说明 使Win 以上的窗口都可以设置Foreground的函数
//
if ((Win Platform = VER_PLATFORM_WIN _NT) and (Win MajorVersion> ))//up win
or ((Win Platform = VER_PLATFORM_WIN _WINDOWS) and //up win
((Win MajorVersion > ) or
((Win MajorVersion = ) and
(Win MinorVersion > )))) then
LockSetForegroundWindow(LSFW_UNLOCK);
Result := SetForegroundWindow(Handle);
end;
现在你在时间事件中写下如下代码
Application Restore;
wdSetForegroundWindow(Handle);
lishixinzhi/Article/program/net/201311/11670