社区
C#
帖子详情
请问如何在C#中控制输入法的状态啊?
omi1800
2007-09-18 01:31:45
就是如何控制当前输入法的大小写,全角,半角等等的状态。小弟先谢过各位了!!!
...全文
338
8
打赏
收藏
请问如何在C#中控制输入法的状态啊?
就是如何控制当前输入法的大小写,全角,半角等等的状态。小弟先谢过各位了!!!
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用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
打赏
举报
回复
偶自己顶!!!
735. 行星碰撞 : 简单栈模拟运用题
题目描述 这是 LeetCode 上的 735. 行星碰撞 ,难度为
中
等。 Tag : 「DFS」、「模拟」、「哈希表」 给定一个整数数组 asteroids,表示在同一行的行星。 对于数组
中
的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动)。每一颗行星以相同的速度移动。 找出碰撞后剩下的所有行星。碰撞规则:两个行星相互碰撞,较小的行星会爆炸。如果两颗行星大小相同,则两颗行星都会爆炸。两颗移动方向相同的行星,永远不会发生碰撞。 示例 1: 输入:asteroid
LeetCode 735 行星碰撞[栈 模拟] HERODING的LeetCode之路
解题思路: 一道比较复杂的模拟题,首先要明白,行星碰撞的条件是左边的行星速度为正,右边行星速度为负才能碰撞,并且可以发生连续碰撞,即右边行星向左并且比左边向右的行星大,一直碰撞到遇到比右边行星大的或者大小相同或者没有向右行星,所以要用栈来存储。在遍历的时候,首先判断方向,如果相向而行,while循环开始不断碰撞,碰撞结束,最后相向大小相同则都消失,没有向右行星把当前行星放入,最后遍历栈放入vector并反向,代码如下:...
每日一题·735.行星碰撞·栈模拟
栈模拟
LeetCode735. 行星碰撞 -- 栈模拟
对于数组
中
的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动)。每一颗行星以相同的速度移动。找出碰撞后剩下的所有行星。碰撞规则:两个行星相互碰撞,较小的行星会爆炸。如果两颗行星大小相同,则两颗行星都会爆炸。两颗移动方向相同的行星,永远不会发生碰撞。示例 1:输入:asteroids = [5,10,-5]输出:[5,10]解释:10 和 -5 碰撞后只剩下 10。5 和 10 永远不会发生碰撞。
leetcode-每日一题735. 行星碰撞(栈模拟)
leetcode-每日一题735. 行星碰撞(栈模拟)
C#
111,128
社区成员
642,535
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章