只要#include <imm.h>
#include <vcl.h> //这个不能删除
静态调用C:/WINDOWS/system32/imm32.dll 107 KB
D:/bcb/cb6/Borland/CBuilder6/Lib/Psdk/imm32.lib居然不必“加”入工程
头文件也不必声明
各个外部dll函数
微软拼音输入法2.0和3.0版本都可以反查拼音,2003版本不能了
#include <vcl.h>
#pragma hdrstop
#include "main.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
Tmain_ *main_;
//---------------------------------------------------------------------------
__fastcall Tmain_::Tmain_(TComponent* Owner):TForm(Owner){sum=::GetKeyboardLayoutList(255,NULL);}
//---------------------------------------------------------------------------
void __fastcall Tmain_::Button1Click(TObject *Sender)
{
for(int k=0;k<sum;k++)
{
hkl=::GetKeyboardLayout(k);
::ActivateKeyboardLayout(hkl,0);
hkl=::GetKeyboardLayout(0); //切换成当前输入法
unsigned int len=ImmGetDescriptionA(hkl,NULL,0);
char* buff=new char[len+1]; //注意+1
if(ImmIsIME(hkl)==1) //必须是中文状态,才可看ImmGetDescription
{
ImmGetDescriptionA(hkl,buff,len);
msg="第"+IntToStr(k+1)+"种输入法是“中文输入法”,全名描述叫: 【"+buff+"】";
Application->MessageBox(msg.c_str(), " ", MB_OK);
}
else
{
msg="第"+IntToStr(k+1)+"种输入法是“英文输入法”,English,不可见ImmGetDescription!";
Application->MessageBox(msg.c_str(), " ", MB_OK);
}
delete [] buff;
}
}
//---------------------------------------------------------------------------
void __fastcall Tmain_::Button2Click(TObject *Sender)
{
hkl=::GetKeyboardLayout(0);//当前输入法
__int64 rev[7];
rev[0]=ImmGetProperty(hkl,IGP_CONVERSION);//组字属性 bit field for conversion mode
/*
#define IME_CMODE_ALPHANUMERIC 0x0000 //英文字母和数字输入
#define IME_CMODE_NATIVE 0x0001 //本地语言输入