近日收到一个需求:需要在系统开机时自动将输入法切换成全屏手写输入。但如果直接修改注册表,将系统默认输入法设置成全屏手写后,就不能开机。
所以写了一机自动加载的程序,在该程序中调用SetCurrentIME将输入法切换成全屏手写。但发现需要点击一下屏幕才能切换成功,而且使用软件模拟点击不是行的。
不知道有没有人遇到过,如何解决的?
代码如下:
#include
#include
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++;
}
}
}