输入法 编程实现 linux,Visual C++编程控制输入法

//此函数只针对Windows2000以上版本,如要在Windows98版本的代码请与笔者联系。

BOOL CInputLanguage::LoadInputLanguage()

{

HKEY hKey,hKey1;

DWORD cp=16;

char lp[15];

CString szID;

CString szKeyName,szKeyName1;

szKeyName = "Keyboard Layout\\Preload";

szKeyName1 = "System\\CurrentControlSet\\Control\\Keyboard Layouts\\";

int i=1;

szID.Format("%d",i);

DWORD lpT=REG_SZ;

if(::RegOpenKey(HKEY_CURRENT_USER,szKeyName,&hKey)==ERROR_SUCCESS )

{

While( ::RegQueryValueEx(hKey,szID,NULL,&lpT,(LPBYTE)lp,&cp) == ERROR_SUCCESS )

{

CString szTempName;

szTempName = szKeyName1 + (LPCTSTR)(LPTSTR)lp;

if(RegOpenKey(HKEY_LOCAL_MACHINE,szTempName,&hKey1)==ERROR_SUCCESS )

{

char lpD[100];

DWORD lpS=100; //DataSize

if(RegQueryValueEx(hKey1,"Layout text",NULL,&lpT,(LPBYTE)lpD,&lpS)==ERROR_SUCCESS)

{

IL* p1,*p2;

p1 = m_pILHead;

p2 = new(IL);

strcpy(p2->ilID,lp);

strcpy(p2->szName,lpD);

p2->pNext = NULL;

if( p1 )

{

while( p1->pNext ){ p1 = p1->pNext ; }

p1->pNext = p2;

}

else

{

m_pILHead = p2;

}

}

}

::RegCloseKey(hKey1);

i++;

szID.Format("%d",i);

}

}

::RegCloseKey(hKey);

return (m_pILHead != NULL );

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值