首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

Windows API 硬體與系統核心函式完整參考指南

     編輯:關於C++

概述

Windows API 提供豐富的硬體抽象與系統資訊函式,涵蓋鍵盤/滑鼠輸入、系統時間/時區、電源管理、環境變數、版本偵測、多語系支援 (NLS)、硬體資源枚舉等核心領域。本文將官方文件函式依功能領域分類整理,並標註關鍵參數與實務注意事項。

分類彙總表

1. 鍵盤與輸入法

函式用途備註
GetAsyncKeyState / GetKeyState即時/訊息佇列按鍵狀態Async 適合遊戲輪詢,KeyState 適合視窗程序內
GetKeyboardState / SetKeyboardState256 虛擬鍵狀態陣列存取模擬輸入、快照還原
MapVirtualKey / MapVirtualKeyEx虛擬鍵碼 ↔ 掃描碼 ↔ 字元Ex 版指定鍵盤配置 HKL
GetKeyboardLayout / GetKeyboardLayoutList取得輸入法配置控制代碼HKL 低字=語言 ID, 高字=裝置句柄
ActivateKeyboardLayout / LoadKeyboardLayout / UnloadKeyboardLayout切換/載入/卸載輸入法需 KLF_ACTIVATE 旗標立即生效
ToAscii / ToUnicode虛擬鍵+狀態 → 字元ToUnicode 支援 Unicode 組合字元
VkKeyScan / VkKeyScanEx字元 → 虛擬鍵碼+Shift 狀態反向查找
GetKeyNameText掃描碼 → 按鍵名稱字串用於熱鍵設定 UI 顯示

2. 滑鼠與游標

函式用途
GetCursorPos / SetCursorPos螢幕座標取得/設定
GetCursor / SetCursor游標圖形控制代碼取得/設定
ShowCursor / GetSystemMetrics(SM_CURSOR)顯示/隱藏計數器 (巢狀呼叫)
ClipCursor限制游標活動範圍 (RECT)
GetClipCursor取得目前限制矩形
mouse_event / SendInput模擬滑鼠移動/點擊/滾輪
SwapMouseButton左右鍵互換 (左撇子模式)
SetDoubleClickTime / GetDoubleClickTime雙擊時間閾值設定/查詢
SetSystemCursor替換系統標準游標 (需系統參數更新)

3. 系統時間與時區

函式用途
GetSystemTime / SetSystemTimeUTC 系統時間 (FILETIME/SYSTEMTIME)
GetLocalTime / SetLocalTime本地時間 (含時區偏移)
GetTimeZoneInformation / SetTimeZoneInformation時區規則 (標準/夏令、偏移量、名稱)
SystemTimeToFileTime / FileTimeToSystemTimeSYSTEMTIME ↔ FILETIME (100ns 間隔)
GetSystemTimeAdjustment / SetSystemTimeAdjustment時間同步調整參數 (NTP/硬體時鐘)
GetTickCount / GetTickCount64開機經過毫秒數 (64-bit 避免 49 天溢位)

4. 電源管理

函式用途
GetSystemPowerStatus電池狀態、AC 連接、剩餘百分比、壽命
SetSuspendState睡眠/休眠 (需 SE_SHUTDOWN_NAME 權限)
CallNtPowerInformation進階電源資訊 (處理器效能、電池詳細)

5. 環境變數與程式路徑

函式用途
GetEnvironmentStrings / FreeEnvironmentStrings取得/釋放完整環境區塊 (雙重 NULL 結尾)
GetEnvironmentVariable / SetEnvironmentVariable單一變數查詢/設定 (進程級)
ExpandEnvironmentStrings展開字串中 %VAR% 參考
GetCommandLine取得完整命令列字串指標
GetModuleFileName / GetModuleHandle模組完整路徑/基址

6. 版本偵測與系統資訊

函式用途
GetVersionEx / RtlGetVersionOS 版本結構 (已棄用 Version Helpers API 替代)
VerifyVersionInfo / IsWindows*版本條件查詢 (SDK VersionHelpers.h)
GetSystemInfo / GetNativeSystemInfo處理器架構、頁面大小、處理器數、記憶體範圍
GetSystemMetricsUI 度量指標 (螢幕尺寸、邊框寬、圖示大小、是否平板模式...)
GetComputerName / SetComputerNameNetBIOS 電腦名稱
GetUserName / GetUserNameEx目前使用者名稱 (SamCompatible/UPN/DNS...)

7. 多語系支援 (NLS - National Language Support)

函式用途
GetLocaleInfo / GetLocaleInfoEx地區資訊 (日期/時間/貨幣/數字格式、曆法、國家名稱)
GetDateFormat / GetTimeFormat / GetNumberFormat / GetCurrencyFormat依地區格式化日期/時間/數字/貨幣
EnumSystemLocales / EnumCalendarInfo / EnumDateFormats / EnumTimeFormats列舉系統支援的地區/曆法/格式
GetSystemDefaultLCID / GetUserDefaultLCID / GetThreadLocale系統/使用者/執行緒預設地區識別碼
SetThreadLocale / SetThreadUILanguage設定執行緒地區/UI 語言 (影響資源載入)
IsValidLocale / IsValidCodePage驗證 LCID/CodePage 有效性

8. 字元集轉換

函式用途
MultiByteToWideChar / WideCharToMultiByte核心編碼轉換 (CP_ACP, CP_UTF8, CP_OEMCP...)
CharToOem / OemToChar / CharToOemBuff / OemToCharBuffANSI ↔ OEM 字元集 (主控台/舊應用相容)
GetACP / GetOEMCP目前作用中 ANSI/OEM 代碼頁

9. 系統參數與 SPI

函式用途
SystemParametersInfo萬用鑰匙:查詢/設定數百項系統參數 (SPI_GET/SET_*)
GetSysColor / SetSysColors系統顏色 (視窗背景、標題列、高亮...)
GetSysColorBrush取得系統顏色對應刷子控制代碼

10. 發聲與簡易音效

函式用途
Beep頻率/持續時間蜂鳴器 (需硬體支援)
MessageBeep播放系統聲音事件 (MB_OK, MB_ICONERROR...)
PlaySound播放 .wav 檔案/資源/系統事件別名

現代開發最佳實務

  • 版本偵測:棄用 GetVersionEx,改用 VersionHelpers.h (IsWindows10OrGreater() 等) 或 RtlGetVersion (需動態連結 ntdll.dll)。
  • 高精度計時:QueryPerformanceCounter/Frequency 替代 GetTickCount;GetSystemTimePreciseAsFileTime (Win8+) 提供 1µs 精度 UTC。
  • 輸入模擬:統一使用 SendInput (支援鍵盤/滑鼠/觸控/筆),棄用 keybd_event/mouse_event。
  • DPI 感知:GetSystemMetricsForDpi (Win10 1607+) 取得特定 DPI 下的度量值。
  • 時區資料:GetDynamicTimeZoneInformation (Vista+) 支援動態時區規則變更通知。

結語

硬體與系統 API 是 Windows 應用程式與作業系統核心溝通的橋樑。熟練掌握鍵盤/滑鼠模擬、時間/時區處理、版本偵測、多語系格式化、環境變數操作等核心函式,並遵循現代最佳實務 (Version Helpers, SendInput, QueryPerformanceCounter, DPI Awareness),即可開發出相容性強、體驗佳的專業級桌面應用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved