要求:1 不管有无按Shift,Ctrl,Alt键
     2 不管有无锁定大小写
     3 不管有无启开输入法.
     
     只要敲击键盘,就只输出小写字母和数字.已经用全局钩子拦截下键盘,但不会处理成只输出小写和数字.其中第3条不知能不能实现?第1,2条应该不难吧.请各位指点一下.

解决方案 »

  1.   

    ToLower();将字符串变成小写形式ToUpper();将字符串变成大写形式
      

  2.   


    string s = Console.ReadLine().ToLower();
      

  3.   

    to 1,2楼,我要的是:往其他软件键盘输入,不是自己的程序.to 3楼:我已经监听到了,但怎样处理呢?
        例如 用户按了Shift+a或Ctrl+a,这时要求只输出小写a,如何做到呢
      

  4.   

    使用控件的keypress事件:
    如果按你的要求,阿拉伯数字的ascii码是48-57,小写字母的ascii码是97-122:
    int kc = Convert.ToInt32(e.KeyChar);
    if(kc>=65&&kc<=106)
    kc=kc+32;
    if((kc>=48&&kc<=57)||(kc>=97&&kc<=122))
    e.Handled=true;
      

  5.   

    请问你是web还是winform呢?如果是web那么,就很简单啦,一个css搞定,
    style='text-transform: uppercase;'
    这个是大写,小写的我好像忘记怎么拼写了..你自己去看看,好像也是lower
    在后台再进行ToLower();就可以获得大写的值了了
      

  6.   

    大家还没明白我的要求呀!
    我要向别人的程序输键盘信息(这程序我无权修改),如果用户按了Shift+a或Ctrl+a等,如何屏蔽掉Shift,Ctrl等信息,让键盘只输出a
      

  7.   

    方法一:
        在keypress事件中,e.KeyChar是键盘统一编码值,如ctrl+a将得到0x0001(好象是,记不清了),这个值是唯一的,通过查表可以得到是哪几个键的组合。
    方法二:
    在PreviewKeyDown事件中,变量e中将分别标记ASCII码键,ctrl、shift、alt以及鼠标状态。建议使用方法二。
      

  8.   

    谢楼上,那么怎样屏蔽掉ctrl、shift、alt、capslk等信息呢?
      

  9.   

    在KeyPress事件中,可以这样判断:
    0x0001~0x007f    ASCII码
    0x0001~0x001f    控制码
    0x0020~0x007e    ASCII码可见字符
    0x0041~0x005a    大写字母
    0x0061~0x007a    小写字母
      

  10.   


            private void richTextBox1_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (e.KeyChar <= 0x1f)
                    MessageBox.Show("ASCII控制吗");
                else if ((e.KeyChar <= 0x39) && (e.KeyChar >= 0x30))
                    MessageBox.Show("数字键");
                else if ((e.KeyChar >= 0x41) && (e.KeyChar <= 0x5a))
                    MessageBox.Show("大写字母");
                else if ((e.KeyChar >= 0x61) && (e.KeyChar <= 0x7a))
                    MessageBox.Show("小写字母");
            }
      

  11.   

    我想应该设置CapLock和Shift按键的状态吧,如果要重新发送到每个句柄键盘消息,相当麻烦吧。