汉字输入法的跟踪

 HWND hFocus;
 HWND hWnd;
 hWnd = ::GetForegroundWindow(); // 得到当前窗口
// if (hWnd == this->m_hWnd) return; // 排除程序本身的窗口
 DWORD FormThreadID = ::GetCurrentThreadId(); // 本程序的线程ID
 // 当前窗口的线程ID
 DWORD CWndThreadID = ::GetWindowThreadProcessId(hWnd, NULL);
 // 附加输入线程
 AttachThreadInput(CWndThreadID, FormThreadID, true);
 // 得到当前键盘光标所在的窗口
 hFocus = ::GetFocus();
 // 取消附加的输入线程
 if(hFocus)
 {
  long style=::GetWindowLong(hFocus,GWL_STYLE);
  if(style & ES_PASSWORD)
   MessageBox("是个密码框");
 }


 char wchar[2];
   wchar[1]=0xBC;
 wchar[0]=0xC6;
// HIMC hIMC=0x000600f6;
 DWORD dwSize;
  HIMC hIMC = ImmGetContext( hFocus );
 unsigned char str[ MAX_PATH ];
 dwSize = ImmGetCompositionString( hIMC, GCS_COMPATTR, (void*)str, sizeof( str ));//取得汉字输入串
 dwSize = ImmGetCompositionString( hIMC, GCS_COMPCLAUSE, (void*)str, sizeof( str ));//取得汉字输入串
 dwSize = ImmGetCompositionString( hIMC, GCS_COMPREADATTR, (void*)str, sizeof( str ));//取得汉字输入串
 dwSize = ImmGetCompositionString( hIMC, GCS_COMPREADCLAUSE, (void*)str, sizeof( str ));//取得汉字输入串
 dwSize = ImmGetCompositionString( hIMC, GCS_COMPREADSTR, (void*)str, sizeof( str ));//取得汉字输入串
 dwSize = ImmGetCompositionString( hIMC, GCS_COMPSTR, (void*)str, sizeof( str ));//取得汉字输入串
 dwSize = ImmGetCompositionString( hIMC, GCS_CURSORPOS, (void*)str, sizeof( str ));//取得汉字输入串
 dwSize = ImmGetCompositionString( hIMC, GCS_DELTASTART, (void*)str, sizeof( str ));//取得汉字输入串
 
 dwSize = ImmGetCompositionString( hIMC, GCS_RESULTCLAUSE, (void*)str, sizeof( str ));//取得汉字输入串

 dwSize = ImmGetCompositionString( hIMC, GCS_RESULTREADCLAUSE, (void*)str, sizeof( str ));//取得汉字输入串
 dwSize = ImmGetCompositionString( hIMC, GCS_RESULTREADSTR, (void*)str, sizeof( str ));//取得汉字输入串
 dwSize = ImmGetCompositionString( hIMC, GCS_RESULTSTR, (void*)str, sizeof( str ));//取得汉字输入串
 
 unsigned char *p = str;
 char *szOut="计算机";
// ImmConversionList
//  NotifyIME
 ::ImmSetCompositionString(hIMC,SCS_SETSTR ,NULL,0,"中文",strlen("中文"));
 dwSize = ImmGetCompositionString( hIMC, GCS_RESULTSTR, NULL,NULL);
 str[ dwSize ] = 0;

// ::PostMessage(hWnd,WM_IME_COMPOSITION,0,GCS_COMPSTR);
// ::PostMessage(hWnd,WM_IME_COMPOSITION,0,GCS_RESULTSTR);
 dwSize = ImmGetCompositionString( hIMC, GCS_RESULTSTR, (void*)str, sizeof( str ));//取得汉字输入串
 
// if(strlen((LPCSTR)(str) )> 0)
//  ::PostMessage(hFocus,WM_IME_COMPOSITION,*(unsigned short *)wchar,0x1dbf);

 ImmReleaseContext(hWnd,hIMC);
 AttachThreadInput(CWndThreadID, FormThreadID, false);

::ImmSetCompositionString(hIMC,SCS_SETSTR ,NULL,0,"中文",strlen("中文"));
这一句可以设置输入列表窗口的当前选择字符。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值