[VB.NET]请问在WINCE中如何实现输入法的自动切换呢?

VB.NET源码-156个实用实例哦…… <script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
请问在WINCE中如何实现输入法的自动切换呢?
现在我的WINCE环境下有日文的输入法,但是日文输入法中还有几种的输入法,比如直接英文输入,全角平假输入,半角平假输入等等.
我现在下当打开系统的软键盘时,输入法自动设置为半角平假输入状态.该如何设置呢?
我想通过调用 "keybd_event "这个API,向系统发送一些组合键来实现,但是不知道用哪几个键来组合?
请问有人碰到过这类问题没...
__________________________________________________________________________
请问没有知道的吗?
急等中...
__________________________________________________________________________
请问有知道如何解决这样的问题的高人吗?
请赐教.
__________________________________________________________________________
最后一问,绝望中了...
请赐教...
__________________________________________________________________________
别揭帖。我也想知道答案。虽然肯定有答案。但是我时间去找。不过给个思路。你调用如何做的?是不是SPI函数?可以考虑看看。这个应该是系统api可以实现的。
__________________________________________________________________________
用api在一般的.NET Framework中可以实现.但是在WINCE的环境下,却不能调用imm32.dll,郁闷呀!
还有你说的用SPI函数,能具体说一下思路吗,我还继续寻找方法.
__________________________________________________________________________
SipEnumIM
SipGetCurrentIM
SipSetCurrentIM
SipSetDefaultRect
SipSetInfo
SipShowIM
SipStatus

说错了。不是spi,是sip。以上的可能可以,仔细的没看。你可以看看msdn,如果找到方法了。记得来这里公布哦。

如果c++,需要添加
哪个dll么,我还没看到,可能是coredll.dll
__________________________________________________________________________
我用了API实现:
Dim KEYEVENTF_SILENT As Byte = &H4
Dim KEYEVENTF_KEYUP As Byte = &H2
Dim VK_LMENU As Byte = 164
Dim VK_KANJI As Byte = 25

keybd_event(VK_LMENU, 0, KEYEVENTF_SILENT, 0)
keybd_event(VK_KANJI, 0, KEYEVENTF_SILENT, 0)
keybd_event(VK_KANJI, 0, KEYEVENTF_KEYUP, 0)
keybd_event(VK_LMENU, 0, KEYEVENTF_KEYUP, 0)
这样可以将日语的输入法由直接入力状态切换到假名的输入状态,但是我还没找到如何将输入状态从假名的输入状态再切换为直接入力状态.
有兴趣的朋友可以一起来讨论一下,共同寻找好的解决方法.
__________________________________________________________________________
提供一个思路。找输入法的面板,模拟触摸屏的点击事件,再SendMessage。
// 找主输入法面版
HWND hWndSip = ::FindWindow(L "SipWndClass ", NULL);
if(hWndSip == NULL)
{
return FALSE; // 没找到则退出
}

// 找ZTES.IM面板
HWND hWndIM = ::GetWindow(hWndSip, GW_CHILD);
if(hWndIM == NULL)
{
return FALSE; // 没找到则退出
}

// 找ZTES.PAD面板
HWND hWndPad = ::GetWindow( hWndIM, GW_CHILD);
if( hWndPad == NULL )
{
return FALSE; // 没找到则退出
}

// 验证是否真的是ZTES.PAD面板
TCHAR szBuf[40];
GetClassName(hWndPad, szBuf, 40);
if( _tcscmp( szBuf, L "ZTES.PAD " ) != 0 )
{
return FALSE; // 看来不是,退出
}

// 程序走到这里,说明确实找到了输入面板窗体句柄
POINT pt = cstPt[tRange];
::SendMessage(hWndPad, WM_LBUTTONDOWN, NULL, MAKELPARAM(pt.x, pt.y));
::SendMessage(hWndPad, WM_LBUTTONUP, NULL, MAKELPARAM(pt.x, pt.y));
__________________________________________________________________________
我也想知道 怎么用这些API 最好能有程序例子
__________________________________________________________________________
to wxm4585
能否解说一下 看不懂
POINT pt = cstPt[tRange];
::SendMessage(hWndPad, WM_LBUTTONDOWN, NULL, MAKELPARAM(pt.x, pt.y));
::SendMessage(hWndPad, WM_LBUTTONUP, NULL, MAKELPARAM(pt.x, pt.y));
__________________________________________________________________________
POINT pt = cstPt[tRange];
__________________________________________________________________________
直接用keybd_event实现不是简单一些吗?
__________________________________________________________________________
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值