2012-03-02 67 views
0

我遇到了一個奇怪的問題: 當我們的應用程序用CreateProcessWithLogonW生成子進程 ALT切換語言停止工作在新進程的窗口中。 可能是什麼問題?操作系統是XP SP3。 Win 7上的設置相同。經過CreateProcessWithLogonW切換語言與ALT切換停止工作

我發現的其他內容:此問題僅發生在Win XP希伯來語中。 在英語XP上它工作正常。

+1

考慮到XP SP4不存在,也許這是你的問題? – 2012-03-02 21:03:54

+0

不開玩笑。我猜想在LOGON_WITH_PROFILE選項丟失。 – 2012-03-02 22:43:23

+1

單位數錯字不值得嘲弄。 – 2012-03-03 05:05:24

回答

0

正如Hans Passant所說的CreateProcessWithLogonW要求將LOGON_WITH_PROFILE設置爲dwLogonFlags這是函數的第四個參數,用於將用戶註冊表配置單元加載到HKEY_USERS中。這將確保訪問HKEY_CURRENT_USER註冊表項中的信息將產生與正常交互式登錄一致的結果。

或者,您可以撥打LoadUserProfile函數,然後致電CreateProcessWithLogonW。你會想驗證

的註冊表設置其配置文件加載包括

[HKEY_CURRENT_USER\Keyboard Layout\Toggle] 
"Hotkey"="3" 
"Language Hotkey"="3" 
"Layout Hotkey"="3" 

[HKEY_CURRENT_USER\Keyboard Layout\Preload] 
"1"="00000809" 
"2"="e00e0804" 

[HKEY_CURRENT_USER\Software\Microsoft\CTF\LangBar] 
"ShowStatus"=dword:00000000" 

[HKEY_CURRENT_USER\Keyboard Layout\Toggle]的值是用戶存在

  • 1啓用按鍵順序;使用Left-ALT + SHIFT在區域設置之間切換。
  • 2啓用鍵序列;使用CTRL + SHIFT在區域設置之間切換。
  • 3鍵序列被禁用。
  • 4如果默認語言環境爲泰語,則重音嚴格鍵會切換輸入語言環境;否則鍵序列被禁用。

[HKEY_CURRENT_USER\Keyboard Layout\Preload]的值在KeyName列下列出here

[HKEY_CURRENT_USER\Software\Microsoft\CTF\LangBar]的值是

  • 0浮動上桌面
  • 4停靠在任務欄
  • 3當設置爲隱藏這是默認上。

相關資源包括

+0

謝謝。我將檢查註冊表設置。 – SparcU 2012-03-19 15:13:14

+0

我沒有使用LoadUserProfile,但它沒有幫助 – SparcU 2012-03-19 15:13:46

+0

我準備了reg文件來重置熱鍵,它工作了 – SparcU 2012-03-20 10:04:10