将你要输入的控件(如EDIT,MEMO等)的IMEMODE和IMENAME的属性设置成你需要的东东就可以了.
解决方案 »
- 自定义组件开发
- 在delphi5下编的带数据库的程序,拷到别的机子上怎么就不好使了
- delphi做 web service,如何传递 一个对象
- 请大家帮忙看看这个程序!!急!!
- delphi7用ClientDataSet联接interbase7.1,出现“Operation not applicable”错误,delphi7不支持吗?
- 打印机线宽问题
- 怎么使用BDE和ADO连接MSSQL?
- 关于文件copy的简单问题
- 要想在win98第一版中使用ADO的程序应该安装哪个部件?
- 创建n个动态组件后,如N个TDBEDIT,N是一个变量,如何引用这些组件?即如何标示动态组件?
- 我编完程序后,如何打包。
- 请问曾经使用一个软件可以扫描硬盘坏区,很有名气的软件,但我忘记名字了
你建议的方法我试了一下,发现不行,还是只能改变当前进程的输入法,代码如下,写在TTimer的OnTimer事件中。
procedure TForm1.Timer1Timer(Sender: TObject);
var
wnd:tHandle;
i,index:integer;
begin
wnd:=getforegroundwindow;
attachthreadinput(GetWindowThreadProcessId(wnd,nil),
GetWindowThreadProcessId(self.handle,nil),
true);
for i:=0 to screen.Imes.Count-1 Do
if pos('智能',screen.Imes.Strings[i])>0 then
begin
index:=i;
break;
end;
if index >= 0 then
ActivateKeyboardLayout(HKL(Screen.Imes.Objects[index]), 0);
end;
GetWindowThreadProcessId(self.handle,nil),
true);
应改为:attachthreadinput( GetWindowThreadProcessId(self.handle,nil),
GetWindowThreadProcessId(wnd,nil),
true);再试一下,看看结果如何
我试过了,还是只能改变当前进程的输入法,而无法改变其它进程的。
请问还有没有更好的办法?