请问如何在C#中控制输入法的状态啊?

omi1800 2007-09-18 01:31:45
就是如何控制当前输入法的大小写,全角,半角等等的状态。小弟先谢过各位了!!!
...全文
279 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyang19860104 2008-07-02
  • 打赏
  • 举报
回复
关注中!
omi1800 2007-09-18
  • 打赏
  • 举报
回复
试了一下还是不能解决。不过还是谢谢楼上的兄弟。
王集鹄 2007-09-18
  • 打赏
  • 举报
回复
http://blog.sina.com.cn/s/blog_589d32f5010009y2.html

using System.Runtime.InteropServices;

[DllImport("imm32.dll")]
public static extern IntPtr ImmGetContext(IntPtr hWnd);

[DllImport("imm32.dll")]
public static extern bool ImmGetOpenStatus(IntPtr hIMC);

[DllImport("imm32.dll")]
public static extern bool ImmGetConversionStatus(IntPtr hIMC,
ref int conversion, ref int sentence);

[DllImport("imm32.dll")]
public static extern bool ImmReleaseContext(IntPtr hWnd, IntPtr hIMC);

[DllImport("imm32.dll")]
public static extern bool ImmSetConversionStatus(IntPtr hIMC,
int conversion, int sentence);

const int IME_CMODE_FULLSHAPE= 0x0008;

public static void SetHalfShape(IntPtr AHandle)
{
IntPtr vIme = ImmGetContext(AHandle);
if (ImmGetOpenStatus(vIme)) // 输入法是打开的
{
int vMode = 0, vSentence = 0;
if (ImmGetConversionStatus(vIme, ref vMode, ref vSentence)) // 获取输入法状态
{
if ((vMode & IME_CMODE_FULLSHAPE) > 0) // 是全角
{
vMode &= (~IME_CMODE_FULLSHAPE);
ImmSetConversionStatus(vIme, vMode, vSentence);
}
}
}
ImmReleaseContext(AHandle, vIme);
}

private void button1_Click(object sender, EventArgs e)
{
SetHalfShape(textBox1.Handle);
}
lovefootball 2007-09-18
  • 打赏
  • 举报
回复
你看看ImeMode
omi1800 2007-09-18
  • 打赏
  • 举报
回复
楼上的兄弟,如何切换输入法我知道怎么做。现在的问题是如何控制输入法中的状态。。。。。。
lovefootball 2007-09-18
  • 打赏
  • 举报
回复
http://www.dvbbs.net/tech/program/2006051066113.asp
clever_zhu_fei 2007-09-18
  • 打赏
  • 举报
回复
style="IME-MODE: active"
omi1800 2007-09-18
  • 打赏
  • 举报
回复
偶自己顶!!!

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧