一片冰心在玉壶

那时我们有梦,关于文学,关于爱情,关于穿越世界的旅行, 如今我们深夜饮酒,杯子碰到一起,都是梦破碎的声音. 交往都是初逢,爱情都在心里,往事都在梦中, 希望都带着注释,信仰都带着呻吟. 总有善意的光逃避现世的繁琐而寻找片刻的安宁, 也许,就是你凝视这里的眼睛

博客园 首页 联系 订阅 管理

CE中的输入法跟XP下的一样。。最近搞了好久才总算知道咋回事!

操作输入法,就是操作 CLSID。只要知道想要的的输入法的 CLSID值就可以自由切到相应的输入法。。

如:

 

    BYTE tem[16]={0x99,0xaf,0xaf,0x5a,0x99,0x8d,0x66,0x44,0xa6,0x6d,0x95,0xc4,0x4b,0x60,0x8a,0x84};//手写输入法代码
    CLSID cls;
    memcpy(
&cls,tem,16);
    SipSetCurrentIM(
&cls);

 

 

怎么得到这个值呢?方法很多。下面是最野蛮的办法:

1 手动切换输入法

2  CLSID cls;
 ::SipGetCurrentIM(&cls);

3 打印cls的值!

另可以枚举所有输入法到CLSID结构体数组中中

 

CLSID g_SIpClsid[20];
int g_Index=0;
int SipEnumIMProc(IMENUMINFO* pIMInfo)
{
    
if((g_Index<20)&&(g_Index>=0))
    {
        g_SIpClsid[g_Index]
=pIMInfo->clsid;
        g_Index
++;
    }
    
return g_Index;
}

 

如果要切换,

 

代码
void SwitchSIP()
{
    CLSID cls;
    ::SipGetCurrentIM(
&cls);
    
for(int i=0;i<g_Index;i++)
    {
        
if(g_SIpClsid[i]==cls)
        {
            
if(i<g_Index-1)
            {
                ::SipSetCurrentIM(
&g_SIpClsid[i+1]);
            }
            
else
            {
                ::SipSetCurrentIM(
&g_SIpClsid[0]);
            }
        }
    }
}

 

 

然后。。。就不用我多说了!!!

自己处理相应的代码。SipShowIM(SIPF_ON);SipShowIM(SIPF_OFF);在相应地方显示与关闭输入面板!

在EVC中要加入#include "sipapi.h"才能通过编译!

以上很好用!!!!!!比在注册表里切换容易多了。。。

如果对你有帮助一定要顶!!!!!!

例子:SipKey

posted on 2010-12-23 15:42  Sankye  阅读(1894)  评论(0编辑  收藏  举报