none
关于切换输入法的问题 RRS feed

  • 问题

  • 我在自己程序启动的时候把输入法切换为:美式键盘

    然后我想在退出程序的时候恢复为原来的输入法,请问这个该怎么做呢

    2019年3月14日 7:51

全部回复

  • 你好,

    感谢您在MSDN论坛发帖提问。

    >>想在退出程序的时候恢复为原来的输入法,请问这个该怎么做呢?

    根据你的问题,你想要实现的是自动切换对应的中文或英文输入法吗?

    你可以通过控制imeMode属性,指定输入法编辑器(IME)的状态。通过控制IME模式,你可以防止用户激活和停用IME。非活动模式:键盘的作用类似于常规键盘,输入仅限于一小组字符。活动模式:IME接受组件字符或处理命令。

    Best wishes,

    Jeanine Zhang
    2019年3月15日 1:56
    版主
  • ImmSimulateHotKey/GetKeyboardLayout/ImmIsIME

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    2019年3月18日 2:53
    版主
  • 这个具体怎么用?我查资料很少,还是不太清楚应该怎么用,谢谢
    2019年3月19日 1:58
  • 你好,

    GetKeyboardLayout函数检索活动输入区域设置标识符。要获取当前活动HKL的KLID(键盘布局ID),调用 GetKeyboardLayoutName。由于可以动态更改键盘布局,因此缓存有关当前键盘布局信息的应用程序应处理WM_INPUTLANGCHANGE消息,以通知输入语言的更改。

    DefWindowProcA函数调用默认窗口程序,为应用程序不处理的任何窗口消息提供默认处理。

    ImmSimulateHotKey函数:模拟指定的IME热键,产生相同的响应,就像用户按下指定窗口中的热键一样。

    ImmIsIME函数:确定指定的输入语言环境是否具有IME。

    希望这些资料对你有所帮助。

    Best Regards,

    Jeanine Zhang
    2019年3月19日 7:50
    版主
  • 在win10下, GetKeyboardLayoutName/GetKeyboardLayout/ImmIsIME都可以正常调用。ImmSimulateHotKey返回值一直是false。

    BOOL ret = ImmSimulateHotKey(m_hWnd, IME_CHOTKEY_IME_NONIME_TOGGLE);

    改成其它的几个中文输入法的宏,也是返回False。用GetLastError()返回0,定位不到具体原因。

    还有其他处理方式吗?

    程序进入马上进入中文输入法的中文模式。想要程序启动时进入ENG输入法或者中文输入法的英文模式。

    • 已标记为答案 Hota_CT 2019年5月9日 11:58
    • 取消答案标记 Hota_CT 2019年5月9日 11:58
    2019年4月18日 8:22