在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;