Power Automate Desktop 鍵盤輸入錯誤?用 PowerShell 自動切換輸入法解決!
- Jeremy Lin

- 7天前
- 讀畢需時 3 分鐘
問題情境
在使用 Power Automate Desktop (PAD) 進行自動化流程時,你是否遇過這個惱人的問題:
使用「傳送按鍵」動作時,輸入的內容變成亂碼或無法正確輸入
原本要輸入英文,卻因為中文輸入法開啟而無法執行
每次執行流程前都要手動切換輸入法,非常麻煩
這是因為 Windows 的中文輸入法會攔截鍵盤模擬,導致 PAD 的鍵盤輸入功能無法正常運作。
常見但無效的解決方法
許多人會嘗試以下方法,但都無法即時生效:
❌ 使用 `Set-WinDefaultInputMethodOverride` 指令
- 這個指令只會設定「預設」輸入法,不會立即切換當前輸入法
- 需要重新登入或重啟應用程式才會生效
❌ 手動按 `Ctrl + Shift` 或 `Win + Space` 切換
- 不穩定,無法確保切換到正確的輸入法
- 無法整合到自動化流程中
最佳解決方案:使用 Windows API 強制切換
透過 PowerShell 呼叫 Windows API,可以立即將輸入法切換為英文,確保鍵盤模擬正常運作。
完整 PowerShell 腳本
# 定義 Windows API 函式
Add-Type @"
using System;
using System.Runtime.InteropServices;
public class InputLanguage {
[DllImport("user32.dll")]
public static extern IntPtr LoadKeyboardLayout(string pwszKLID, uint Flags);
[DllImport("user32.dll")]
public static extern IntPtr ActivateKeyboardLayout(IntPtr hkl, uint Flags);
[DllImport("user32.dll")]
public static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
}
"@
# 切換到英文鍵盤(0x0409 = 英文美國)
$hkl = [InputLanguage]::LoadKeyboardLayout("00000409", 1)
[InputLanguage]::ActivateKeyboardLayout($hkl, 0) | Out-Null
# 確保前景視窗也使用新的輸入法
$WM_INPUTLANGCHANGEREQUEST = 0x0050
$hwnd = [InputLanguage]::GetForegroundWindow()
[InputLanguage]::SendMessage($hwnd, $WM_INPUTLANGCHANGEREQUEST, [IntPtr]::Zero, $hkl) | Out-Null
# 等待切換完成
Start-Sleep -Milliseconds 300
Write-Host "已成功切換至英文輸入法"在 Power Automate Desktop 中使用
步驟 1:新增「執行 PowerShell 指令碼」動作
在你的 PAD 流程中,在執行鍵盤輸入之前加入此動作。
步驟 2:貼上上述腳本
將完整的 PowerShell 腳本貼到「PowerShell 程式碼」欄位中。
步驟 3:加入等待時間
在 PowerShell 動作後加入「等待」動作,設定 0.5 秒,確保輸入法切換完成。
步驟 4:執行鍵盤輸入
現在可以安心使用「傳送按鍵」動作了!
進階技巧:還原輸入法
如果你希望執行完畢後恢復原本的中文輸入法,可以在流程最後再次執行切換:
# 切換回中文輸入法(以注音為例)
$hkl = [InputLanguage]::LoadKeyboardLayout("00000404", 1)
[InputLanguage]::ActivateKeyboardLayout($hkl, 0) | Out-Null
Start-Sleep -Milliseconds 300常見輸入法代碼
輸入法 | 代碼 |
英文(美國) | 00000409 |
中文(注音) | 00000404 |
中文(新注音) | E0080404 |
中文(倉頡) | E0010404 |
日文 | 00000411 |
總結
透過 PowerShell 呼叫 Windows API 的方式,可以完美解決 Power Automate Desktop 因中文輸入法導致的鍵盤模擬錯誤問題。這個方法簡單、穩定,而且可以完全整合到自動化流程中。
下次遇到鍵盤輸入問題時,不妨試試這個解決方案!
💡 小提示:如果你的組織有資訊安全政策限制 PowerShell 執行,請先向 IT 部門確認是否可以使用此方法。
🔗 相關資源:
Windows Keyboard Layout 代碼列表 : https://learn.microsoft.com/zh-tw/windows-hardware/manufacture/desktop/windows-language-pack-default-values?view=windows-11
本文章提供的腳本在 Windows 10/11 環境下測試通過。
如果有進一步需要諮詢或者協助,歡迎來信詢問 info@aeternus-at.com