Delphi

本类阅读TOP10

·游戏外挂设计技术探讨①
·如何使用Delphi设计强大的服务器程序
·分布式网络考试系统原型分析及实现
·用DLL方式封装MDI子窗体。
·使用HOOK随心监视Windows
·Delphi 水晶报表打包解决
·url编码与解码工具附代码
·工人线程中关闭窗体的实现
·hdsi2.0 sql注入部分抓包分析语句
·Borland Delphi 2005 下载

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
与中文输入相关的函数

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

unit Ime;

{=======================================================================
  DESIGN BY :  彭国辉
  DATE:        2004-10-12
  SITE:       
http://kacarton.yeah.net/
  BLOG:        http://blog.csdn.net/nhconch
  EMAIL:       kacarton@sohu.com

  文章为作者原创,转载前请先与本人联系,转载请注明文章出处、保留作者信息,谢谢支持!
========================================================================}

interface

uses IMM, Windows;

  procedure ImmActive(hWindows: THandle; bChinese: Boolean);  //打开或关闭输入法
  procedure ImmEnabled(hWindows: THandle; bChinese: Boolean); //允许或禁止输入法
  procedure SendDBCSString(hFocus: HWND; const Text: string); //向控件发送中文文本

implementation

//打开或关闭输入法,EX:ImeActive(0, true);
//网上可以搜索到类似的代码,不过用的是IME_THOTKEY_IME_NONIME_TOGGLE,只对繁体版中文Windows有效,用在简体中文Windows下当然不行了

procedure ImmActive(hWindows: THandle; bChinese: Boolean);
begin
  if hWindows=0 then hWindows := GetFocus;
  if hWindows=0 then Exit;
  if ImmIsIME(GetKeyboardLayOut(0)) <> bChinese then
    ImmSimulateHotKey(hWindows, IME_CHOTKEY_IME_NONIME_TOGGLE);
end;

//允许与禁止输入法,EX:ImmEnabled(Edit1.Handle, true)
//等效于把Edit1.ImeMode设为imChinese(True)、imClose(False)

procedure ImmEnabled(hWindows: THandle; bChinese: Boolean);
var
  hImmc: HIMC;
begin
  if hWindows=0 then hWindows := GetFocus;
  if hWindows=0 then Exit;
  hImmc := ImmGetContext(hWindows);
  ImmSetOpenStatus(hImmc, bChinese);
end;

//向控件发送中文文本,EX:SendDBCSString(Edit1.Handle, '哗,终于可以发中文啦!')
procedure SendDBCSString(hFocus: HWND; const Text: string);
var
  i: integer;
  ch: byte;
begin
  if hFocus = 0 then hFocus := GetFocus;
  if hFocus = 0 then Exit;
  i := 1;
  while i <= Length(Text) do begin
    ch := byte(Text[i]);
    if Windows.IsDBCSLeadByte(ch) then begin
      Inc(i);
      SendMessage(hFocus, WM_IME_CHAR, MakeWord(byte(Text[i]), ch), 0);
    end
    else SendMessage(hFocus, WM_IME_CHAR, word(ch), 0);
    Inc(i);
  end;
end;

end.




相关文章

相关软件




月光软件程序下载编程文档电脑教程网站设计网址导航网络文学游戏天地幽默笑话生活休闲写作范文安妮宝贝
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有