仪征汽车工业园检察院:如何根据输入内容自动切换中英文

来源:百度文库 编辑:高考问答 时间:2024/04/28 20:37:36
高手们,您们好:
我学习了VC++疑难解答的书籍,包括关于全局钩子的使用,但是我有一个想法,在我编写c++程序的时候,注释喜欢用中文,所以
有频繁切换中英文的麻烦,经反复查找就是没有关于切换中英文的API函数,我用了虚拟按键的函数,但是并不成功,(我希望在我输入//时,系统自动切换为汉语,回车时自动切换为英文),我的错误代码如下,请多多指教,谢谢!
CLaunchDLLApp theApp;
HHOOK Hook;
static int i=0,j=0;/////
static int cur_english=1;//英文当前状态
static int flag1=0,flag2=0;
static CString s[4]={"0"};
LRESULT CALLBACK LauncherHook(int nCode,WPARAM wParam,LPARAM lParam);///wangji

DllExport void WINAPI InstallLaunchEv()
{
Hook=(HHOOK)SetWindowsHookEx(WH_KEYBOARD,
(HOOKPROC)LauncherHook,theApp.m_hInstance,0);

}

LRESULT CALLBACK LauncherHook(int nCode,WPARAM wParam,LPARAM lParam)///wangji
{
LRESULT Result=CallNextHookEx(Hook,nCode,wParam,lParam);
if(nCode!=HC_ACTION)return Result;
i=i%4;
s[i].Format("%d",wParam);
j=((i-1)>=0 ? (i-1):(3));
if(cur_english==0&&s[i]=="13"&&s[j]=="13")//for(int k=0;k<4;k++)AfxMessageBox(s[k]);
{
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event(VK_SPACE, 0, 0, 0);
keybd_event(VK_SPACE,0, 2, 0);
keybd_event(VK_CONTROL, 0, 2, 0);
cur_english=1;
}
else if(cur_english==1&&s[0]=="191"&&s[1]=="191"&&s[2]=="191"&&s[3]=="191")
{
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event(VK_SPACE, 0, 0, 0);
keybd_event(VK_SPACE,0, 2, 0);
keybd_event(VK_CONTROL, 0, 2, 0);
cur_english=0;
//for(int k=0;k<4;k++)AfxMessageBox(s[k]);
}
i++;
return Result;
}