使用alt shift后,CreateProcessWithLogonW切换语言停止工作

时间:2012-03-02 21:00:13

标签: winapi

我遇到了一个奇怪的问题: 当我们的应用程序使用CreateProcessWithLogonW生成子进程时 使用alt-shift的切换语言在新进程的窗口中停止工作。 可能是什么问题?操作系统是XP SP3。 Win 7上的设置相同。

我发现的其他事情:此问题仅发生在Win XP Hebrew上。 在英语XP上它工作正常。

1 个答案:

答案 0 :(得分: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如果默认语言环境为泰语,则重音符号切换键切换输入语言环境;否则关键序列被禁用。

{Key}列下的[HKEY_CURRENT_USER\Keyboard Layout\Preload]值列出here

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

  • 0浮动桌面
  • 4停靠在任务栏上
  • 设置为隐藏时
  • 3,这是默认设置。

相关资源包括