systemparametersinfo詳細用法
應一同學要求特把這api詳之
設置和取得windows系統參數,現在讓我們詳細地分析一下(其功能強大)
下面一例取得work區
PRocedure CenterWindow(winHnd : HWND; winWidth : Integer; winHeight : Integer);
    var
    screenDim : TRect; 
    screenLeft : Integer; 
    ScreenTop : Integer;
    begin
 
  SystemParametersInfo(SPI_GETWORKAREA, 0, @screenDim,0);
  screenLeft := Trunc(((screenDim.Right-screenDim.Left)/2)-(winWidth/2));
  screenTop := Trunc(((screenDim.Bottom-screenDim.Top)/2)-(winHeight/2));
  SetWindowPos(winHnd,HWND_TOPMOST,screenLeft,screenTop,winWidth,winHeight,0);
  end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 centerwindow(form1.handle,200,200);
end;
下面大家可以試用一下。
SPI_GETaccessTIMEOUT lpvParam是一個ACCESSTIMEOUT結構,其中要載入輔助訪問特性計時信息。在調用函數之前,uParam必須設為ACCESSTIMEOUT結構的大小 
SPI_GETANIMATION lpvParam是一個ANIMATIONINFO結構,將在其中載入窗口最小化和恢復時的動畫信息。不能在NT 3.51中使用 
SPI_GETBEEP lpvParam是一個Long型數據,若打開了響鈴聲,則設為TRUE 
SPI_GETBORDER lpvParam是一個Long型數據,用于接收一個乘數(倍數),對大小可變的窗口的邊框尺寸進行控制 
SPI_GETDEFAULTINPUTLANG lpvParam是一個Long型數據,用于接收默認鍵盤布局的一個32位句柄。不能用于NT 3.51 
SPI_GETDRAGFULLWINDOWS lpvParam是一個Long型數據,如在整個窗口上拖動,就會設為TRUE。如果只拖出了一個矩形輪廓,則為FALSE。要求NT 4.0 或 Windows 95支持。其中,Windows 95必須有Plus!支持,或直接安裝Windows 95 OSR2 
SPI_GETFASTTASKSWITCH lpvParam是一個Long型數據,如允許快速任務切換,則為TRUE。在Windows 95 和 NT 4.0中肯定是TRUE 
SPI_GETFILTERKEYS lpvParam是一個FILTERKEYS結構,用于裝載與鍵盤有關的輔助訪問特性信息 
SPI_GETFONTSMOOTHING lpvParam是一個Long型數據,如打開了邊緣修飾特性(讓字體更圓潤),則為TRUE。只適用于 NT 4.0 和帶 Plus! 支持的 Windows 95 
SPI_GETGRIDGRANULARITY lpvParam是一個Long型數據,會設為網格間隔尺寸值 
SPI_GETHIGHCONTRAST lpvParam是一個HIGHCONTRAST結構,用于裝載與用戶顯示器有關的輔助訪問特性信息。僅適用于Win95 
SPI_GETICONMETRICS lpvParam是一個ICONMETRICS結構,用于裝載與圖標比例及排列有關的信息。僅適用于Windows 95 及 NT 4.0 
SPI_GETICONTITLELOGFONT lpvParam指向一個LOGFONT結構,設置內容取決于圖標標題采用的字體 
SPI_GETICONTITLEWRAP lpvParam是一個Long型數據,如允許對圖標標題進行自動換行,則設為TRUE 
SPI_GETKEYBOARDDELAY lpvParam是一個Long型數據,設為鍵盤重復延時 
SPI_GETKEYBOARDPREF lpvParam是一個Long型數據,如用戶更喜歡用鍵盤而不是鼠標,則設為TRUE。如這個參數為真,windows會顯示出附加的鍵盤接口信息,只適用于win95 
SPI_GETKEYBOARDSPEED lpvParam是一個Long型數據,設為鍵盤的重復速率 
SPI_GETMENUDROPALIGNMENT lpvParam是一個Long型數據,若彈出式菜單左對齊(默認),則設為FALSE。否則為TRUE 
SPI_GETMINIMIZEDMETRICS lpvParam是一個MINIMIZEDMETRICS結構,用于裝載與最小化窗口的比例及排列有關的信息。僅適用于win95 
SPI_GETMOUSE lpvParam是三元素Long數組的頭一個條目,條目0設為用戶配置MouseThreshold1字段,條目1設為MouseThreshold2字段,條目2設為MouseSpeed 
SPI_GETMOUSEKEYS lpvParam是一個MOUSEKEYS結構,要在其中裝載與鼠標有關的輔助訪問信息。不能在 NT 3.51中使用 
SPI_GETNONCLIENTMETRICS lpvParam是一個NONCLIENTMETRICS結構,要在其中裝載有關字體和環境有關的信息;這些信息會在描繪窗口非客戶區域時涉及到,如邊框、標題等。只適用于win95 
SPI_GETSCREENSAVEACTIVE lpvParam指向一個整數;倘若屏幕保護程序處于活動狀態,則設為TRUE;否則設為FALSE 
SPI_GETSCREENSAVETIMEOUT lpvParam指向一個整數;它設為屏幕保護延時(以秒為單位) 
SPI_GETSERIALKEYS lpvParam是一個SERIALKEYS結構,用于裝載與輸入設備(用于模擬鍵盤輸入)有關的輔助訪問特性信息。只適用于win95 
SPI_GETSHOWSOUNDS lpvParam是一個Long型數據,倘若應用程序應該用可視線索來代替聲音,則設為TRUE。它的作用與GetSystemMetrics函數的SM_GETSHOWSOUNDS選項是相同的 
SPI_GETSNAPTODEFBUTTON lpvParam是一個Long型數據,倘若鼠標會自動移到新對話框的默認按鈕,則設為TRUE。只適用于NT 4.0 
SPI_GETSOUNDSENTRY lpvParam是一個SOUNDSENTRY結構,用于裝載讓windows提供可視標志(而不是系統聲音)時涉及的輔助訪問特征信息。調用之前,必須將uParam設為SOUNDSENTRY結構的長度 
SPI_GETSTICKYKEYS lpvParam是一個STICKYKEYS結構,用于裝載允許一名用戶順序按鍵(而不是同時按下)時涉及的輔助訪問特征信息。同時按鍵的例子包括Shift+, Ctrl+, Alt+ 等。調用之前,必須將uParam設為STICKYKEYS結構的長度 
SPI_GETTOGGLEKEYS lpvParam是一個TOGGLEKEYS結構,要在其中裝載按下一個開關鍵(NumLock,CapsLock,ScrollLock)后播放聲音提示時涉及的輔助訪問特征信息。windows會用一個不同的聲音指出開或關狀態。調用之前,必須將uParam設為TOGGLEKEYS結構的長度 
SPI_GETWORKAREA lpvParam是一個RECT結構,用于裝載屏幕的工作區 
SPI_ICONHORIZONTALSPACING 如lpvParam為NULL,則uParam代表桌面圖標新的水平間隔距離,以像素為單位 
SPI_ICONVERTICALSPACING 與SPI_ICONHORIZONTALSPACING相似,只不過指定圖標的垂直間距 
SPI_LANGDRIVER lpvParam是一個字串,用于容納新的語言驅動程序文件的名稱 
SPI_SETACCESSTIMEOUT 與SPI_GETACCESSTIMEOUT的參數相同 
SPI_SETANIMATION 與SPI_GETANIMATION的參數相同 
SPI_SETBEEP uParam為TRUE時打開響鈴,FALSE關閉 
SPI_SETBORDER uParam代表一個乘數,用于控制尺寸可變的的窗口邊框的大小 
SPI_SETDEFAULTINPUTLANG 與SPI_GETDEFAULTINPUTLANG的參數相同 
SPI_SETDESKPATTERN 從注冊表或win.ini中強制窗口恢復當前的桌面方案 
SPI_SETDESKWALLPAPER lpvParam代表一個字串,用于容納作為桌面墻紙使用的一個位圖文件的名稱 
SPI_SETDOUBLECLICKTIME uParam代表連續兩次單擊被當作一次雙擊處理時需要間隔的時間(以毫秒為單位) 
SPI_SETDOUBLECLKHEIGHT uParam代表新的雙擊高度,可參考GetSystemMetrics函數的注解 
SPI_SETDOUBLECLKWIDTH uParam代表新的雙擊寬度,可參考GetSystemMetrics函數的注解 
SPI_DRAGFULLWINDOWS uParam為TRUE時打開全窗口拖動,否則為FALSE。僅適用于win95 
SPI_SETDRAGHEIGHT uParam代表一個矩形的高度(以像素為單位),用于決定拖動操作何時開始。只適用于win95 
SPI_SETDRAGWIDTH uParam代表一個矩形的寬度(以像素為單位),用于決定拖動操作何時開始。只適用于win95 
SPI_SETFASTTASKSWITCH uParam為TRUE時打開快速任務切換,FALSE則關閉 
SPI_FILTERKEYS 參數與 SPI_GETFILTERKEYS 相同 
SPI_SETFONTSMOOTHING uParam為TRUE時打開字體修飾(圓潤)。只能在NT 4.0 和得到 Plus! 支持的 Win95(或 Windows 95 OSR2)中使用 
SPI_SETGRIDGRANULARITY uParam代表新的網格間距 
SPI_SETHIGHCONTRAST 參數與 SPI_GETHIGHCONTRAST 相同 
SPI_SETICONMETRICS 參數與 SPI_GETICONMETRICS 相同 
SPI_SETICONTITLELOGFONT lpvParam是一個LOGFONT結構,用于定義圖標標題采用的字體。uParam指定LOGFONT結構的大小。如兩者均為NULL,則采用系統啟動時定義的字體 
SPI_SETICONTITLEWRAP uParam為TRUE時打開圖標標題自動換行 
SPI_SETKEYBOARDDELAY uParam代表新的鍵盤重復延時 
SPI_SETKEYBOARDPREF 若uParam為TRUE,表明用戶相比鍵盤和鼠標更喜歡用前者。參考SPI_GETKEYBOARDPREF 
SPI_SETKEYBOARDSPEED uParam代表新的鍵盤重復速率 
SPI_SETLANGTOGGLE 令窗口從系統注冊表中重新裝載熱鍵信息,以便在鍵盤布局之間交換 
SPI_SETLOWPOWERACTIVE uParam為TRUE時允許節能屏幕保護程序模式。只適用于win95 
SPI_SETLOWPOWERTIMEOUT uParam代表新的節能屏幕保護程序延時。只適用于win95 
SPI_SETMENUDROPALIGNMENT uParam為FALSE時設置彈出菜單左對齊,TRUE則右對齊 
SPI_SETMINIMIZEDMETRICS 參數與SPI_GETMINIMIZEDMETRICS一樣 
SPI_SETMOUSE lpvParam是一個三元素整數數組的頭一個條目,其中包含了鼠標設置。參考SPI_GETMOUSE 
SPI_SETMOUSEBUTTONSWAP uParam為TRUE時交換左右鼠標按鈕的功能;如果為FALSE,則使用原來的值 
SPI_SETMOUSEKEYS 參數與SPI_GETMOUSEKEYS一樣 
SPI_SETNONCLIENTMETRICS 參數與SPI_GETNONCLIENTMETRICS一樣 
SPI_SETPENWINDOWS uParam為TRUE時載入筆窗口,FALSE則卸載 
SPI_SETPOWEROFFACTIVE uParam為TRUE時允許停電屏幕保護模式。只適用于win95 
SPI_SETPOWEROFFTIMEOUT uParam代表新的停電屏幕保護程序延時。只適用于win95 
SPI_SETSCREENREADER uParam為TRUE時表示正在運行一個屏幕閱讀程序。參考SPI_GETSCREENREADER 
SPI_SETSCREENSAVEACTIVE uParam為TRUE時激活屏幕保護程序;FALSE表示禁止 
SPI_SETSCREENSAVETIMEOUT uParam代表新的屏幕保護延遲時間,以秒為單位 
SPI_SETSERIALKEYS 參數與 SPI_GETSERIALKEYS 相同 
SPI_SETSHOWSOUNDS uParam為TRUE時允許窗口開啟聲音提示輔助訪問特性。參考SPI_GETSHOWSOUNDS 
SPI_SETSNAPTODEFBUTTON 如鼠標應自動移到新對話框的默認按鈕,則uParam為TRUE。只適用于NT 4.0 
SPI_SETSOUNDSENTRY 與 SPI_GETSOUNDSENTRY 相同 
SPI_SETSTICKYKEYS 與 SPI_GETSTICKYKEYS 相同 
SPI_SETTOGGLEKEYS 與 SPI_GETTOGGLEKEYS 相同 
SPI_SETWORKAREA 與 SPI_GETWORKAREA 相同 
新聞熱點
疑難解答