当前位置:编程学习 > C#/ASP.NET >>

WINDOWS API 切换输入法

背景:
一个WINCE上的C#开发的程序,需要在进入输入框的时候,自动切换输入法。
因为InputLanguage这个class不支持WINCE,不得已使用WINAPI。

问题:
以下是声明部分的代码
[DllImport("user32.dll", EntryPoint = "GetKeyboardLayout")]
public static extern ulong GetKeyboardLayout(ulong dwLayout);

[DllImport("imm32.dll", EntryPoint = "ImmSimulateHotKey")]
public static extern Boolean immsimulatehotkey(
  IntPtr hwnd,
  IntPtr dwhotkeyid
);

[DllImport("imm32.dll", EntryPoint = "ImmIsIME")]
public static extern Boolean ImmIsIME(
  ulong hklKeyboardLayout
);

以下是调用部分的代码
ulong curr = GetKeyboardLayout(0);
Boolean res = false;
if (!ImmIsIME(curr))
{
  res = immsimulatehotkey(this.Handle, (IntPtr)112);
}

我跟了一下GetKeyboardLayout和ImmIsIME貌似都是管用的,
immsimulatehotkey输出的是true.
但是没有效果,输入法没变。

我有2个疑问,
immsimulatehotkey第一个参数,我不知道对不对,因为我看别人的大概是VB代码,写得是handle(parent),我这个this.parent是空的。
immsimulatehotkey第二个参数,112,我是照着别人写得,不过貌似还对了,因为如果改成别的值,返回就变false。


--------------------编程问答-------------------- 关注
帮顶 --------------------编程问答-------------------- --------------------编程问答-------------------- 关注一下。 --------------------编程问答-------------------- --------------------编程问答-------------------- 标记一下,当时本也想这样做,后来想想,系统键盘太小不好按,自己实现了一个键盘。 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 5 楼 wuyazhe 的回复:
标记一下,当时本也想这样做,后来想想,系统键盘太小不好按,自己实现了一个键盘。


我记得我的vc同事 是自己给系统小键盘 搞个皮肤。。。这样键盘就大了. --------------------编程问答--------------------
引用 7 楼 gongsun 的回复:
引用 5 楼 wuyazhe 的回复:
标记一下,当时本也想这样做,后来想想,系统键盘太小不好按,自己实现了一个键盘。


我记得我的vc同事 是自己给系统小键盘 搞个皮肤。。。这样键盘就大了.

是个思路,不错。回头找找看。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,