
| void __fastcall TForm1::FormCreate(TObject *Sender) { Reg1=new TRegistry;//创建注册表对象 Reg2=new TRegistry; Reg1->RootKey=HKEY_CURRENT_USER;//定位注册表根键 Reg2->RootKey=HKEY_LOCAL_MACHINE; if(Reg1->OpenKey("\\keyboard layout\\preload\\",false)==true) Reg1->GetKeyInfo(keyInfo);//取得指定主键信息 ListBox1->Items->Clear(); imeStr=new AnsiString[keyInfo.NumSubKeys];//动态创建数组 for(int i=0;i<keyInfo.NumSubKeys;i++) { if(Reg1->OpenKey("\\keyboard layout\\preload\\"+IntToStr(i+1),false)==true) imeStr[i]=Reg1->ReadString("");//取得输入法串值 if(Reg2->OpenKey("\\System\\CurrentControlSet\\Control\\Keyboard Layouts\\"+imeStr[i]+"\\",false)==true) ListBox1->Items->Add(Reg2->ReadString("layout text"));//显示输入法名称 } Reg1->CloseKey(); Reg2->CloseKey(); delete Reg2; } |
4、在BitBtr1(上移按钮)的OnClick事件中加入如下代码
| void __fastcall TForm1::BitBtn1Click(TObject *Sender) { int i=ListBox1->ItemIndex;//当前选择的行号 if (i>0) { ListBox1->Items->Exchange(i,i-1);//交换列表框中内两行的内容 temStr=imeStr[i];//对应串值也交换 imeStr[i]=imeStr[i-1]; imeStr[i-1]=temStr; } } |
5、类似地,在BitBun2(下移)的OnClick事件中加入如下代码
| void __fastcall TForm1::BitBtn2Click(TObject *Sender) { int i=ListBox1->ItemIndex;//当前选择的行号 if (i<ListBox1->Items->Count-1) { ListBox1->Items->Exchange(i,i+1); temStr=imeStr[i];//对应串值也交换 imeStr[i]=imeStr[i+1]; imeStr[i+1]=temStr; } } |
6、在BitBtn3(确认按钮)的OnClick事件中加入如下代码
| void __fastcall TForm1::BitBtn3Click(TObject *Sender) { if((Application->MessageBox("确认更改输入法顺序吗?","请确认",MB_OKCANCEL|MB_ICONWARNING))==ID_OK) { for(int i=0;i<keyInfo.NumSubKeys;i++) { Reg1->OpenKey("\\keyboard layout\\preload\\"+IntToStr(i+1),false); Reg1->WriteString("",imeStr[i]); }//给输入法重新排序 Reg1->CloseKey(); delete Reg1; delete imeStr; if((Application->MessageBox("马上要重新启动计算机","重启计算机",MB_OKCANCEL|MB_ICONWARNING))==ID_OK) ExitWindowsEx(EWX_REBOOT,0); } Close(); } |
以上程序在Windows 98、C++ builder6.0下调试通过。
英特尔 酷睿(TM)2双核,送指纹识别器一个,再赠两份好礼,请电800-858-2418