top of page

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

  • 作家相片: Jeremy Lin
    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 10/11 環境下測試通過。


如果有進一步需要諮詢或者協助,歡迎來信詢問 info@aeternus-at.com


詠恒股份有限公司

統一編號:83238466

​聯絡電話:02-7730-9930​

地址:新北市林口區文化二路一段390號5樓 

bottom of page