SetForegroundWindow功能
的SetForegroundWindow函數將創建指定的窗口的線程成前景和激活窗口。鍵盤輸入指向窗口,爲用戶改變各種視覺提示。系統爲創建前景窗口的線程賦予稍高於其他線程的優先級。
語法
BOOL SetForegroundWindow(HWND的HWND ); 參數
hWnd [in]處理窗口,應該激活並將其置於前臺。 返回值
如果窗口被帶到前臺,返回值是非零值。 如果窗口未被帶到前臺,則返回值爲零。
備註
視窗98/Me的:系統限制,其處理可以設置前臺窗口。只有滿足以下條件之一時,進程纔可以設置前景窗口:
該進程是前臺進程。 該過程由前臺進程啓動。 該進程收到最後一個輸入事件。 沒有前臺進程。 正在調試前臺進程。 前景未鎖定(請參閱LockSetForegroundWindow)。 前臺鎖定超時已過期(請參閱SystemParametersInfo中的SPI_GETFOREGROUNDLOCKTIMEOUT)。 Windows 2000/XP:沒有菜單處於活動狀態。
通過此更改,應用程序無法在用戶使用其他窗口時強制窗口置於前臺。相反,前臺和後臺Windows將激活該窗口(請參閱SetActiveWindow)並調用該函數來通知用戶。但是,在Microsoft Windows 98和Windows Millennium Edition(Windows Me)上,如果非前臺線程調用SetForegroundWindow並傳遞非調用線程創建的窗口的句柄,則該窗口不會在任務欄上閃爍。要使SetForegroundWindow的行爲與在Windows 95和Microsoft Windows NT 4.0上的行爲相同,請在安裝應用程序時更改前臺鎖定超時值。這可以通過以下函數調用從設置或安裝應用程序完成:
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT,0,(LPVOID)0,SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE);
此方法允許Windows 98/Windows Me和Windows 2000/Windows XP上的SetForegroundWindow的行爲與所有應用程序的Windows 95和Windows NT 4.0相同。安裝應用程序應該警告用戶這樣做是爲了讓用戶對改變的行爲不感到驚訝。在Windows 2000和Windows XP上,除非調用線程可以更改前景窗口,否則調用將失敗,因此必須從設置或修補程序應用程序中調用該調用。有關更多信息,請參閱前臺和後臺Windows。
可以設置前景窗口的過程可以使另一個進程通過調用AllowSetForegroundWindow函數來設置前景窗口。由dwProcessId指定的進程失去了在用戶下一次生成輸入時設置前景窗口的能力,除非輸入指向該進程,或者下一次進程調用AllowSetForegroundWindow時,除非指定了該進程。
前臺進程可以通過調用LockSetForegroundWindow函數禁用對SetForegroundWindow的調用。
功能信息
在Winuser.h中
最低DLL版本user32.dll中 頭部聲明,包括WINDOWS.H 導入庫USER32.LIB 最低操作系統Windows 95,Windows NT的3.1 統一實現爲Unicode版本。
請參見
的Windows概述,AllowSetForegroundWindow,FlashWindowEx,GetForegroundWindow,LockSetForegroundWindow,SetActiveWindow
感謝我們的信息的建議。是否有可能獲得一段代碼來查找上述VBScript中用於SetForegroundWindow的單詞應用程序的窗口句柄?你如何在VBScript中聲明這些服務?謝謝... – user3475410
不錯的想法,但這與問題有關嗎? – Oliver