Do everything if needed

Only to note everything I meet.

SetCurrentIME的问题

近日收到一个需求:需要在系统开机时自动将输入法切换成全屏手写输入。但如果直接修改注册表,将系统默认输入法设置成全屏手写后,就不能开机。

所以写了一机自动加载的程序,在该程序中调用SetCurrentIME将输入法切换成全屏手写。但发现需要点击一下屏幕才能切换成功,而且使用软件模拟点击不是行的。

不知道有没有人遇到过,如何解决的?

代码如下:

#include <windows.h>

#include <sipapi.h>

GUID csidInput={ 0x5AAFAF99, 0x8D99, 0x4466, 0xA6, 0x6D, 0x95, 0xC4, 0x4B, 0x60, 0x8A, 0x84 };

//GUID csidInput={  0x9E06C6B8, 0xFE4D, 0x4206, 0x9A, 0x5B, 0x6E, 0x4C, 0x1B, 0x8B, 0x6A, 0xD7 };

 

int _tmain(int argc, _TCHAR* argv[])

{

     LANGID idLang=GetUserDefaultUILanguage( );

    

     if( 0x0804 == idLang || 0x0404 == idLang )

     {

         CLSID idIMSelected;

         DWORD dwCount=0;

         DWORD dwError=0;

        

         while( 1 )

         {

             //if( SIP_STATUS_AVAILABLE ==  SipStatus( ) )

              {

                   if(  SipSetCurrentIM( (CLSID*)&csidInput ) )

                   {

                       SipGetCurrentIM( &idIMSelected );

                       {

                           if( 0== memcmp( &idIMSelected, &csidInput, sizeof( CLSID ) ) )

                           {

                            SipShowIM( SIPF_OFF);

                            break;

                           }

                       }

                  }

                  else

                  {

                  dwError=GetLastError( );

                 

                  }

              }

             Sleep(1000);

             dwCount++;

         }

     }

}

posted on 2011-07-26 22:19  microsun  阅读(399)  评论(0编辑  收藏  举报

导航