求c#按钮精灵程序代码,就是股票软件主窗体中输入数字,右下角弹出的下拉列表(winform)

解决方案 »

  1.   

    我有webfrom的不过winform应该更简单吧
      

  2.   

    按键精灵的代码??
    如果只要取得用户输入的键可以在窗口的keypress事件中获得
      

  3.   

    只需要在KeyPress事件中来处理一下就可以了KeyPress的时候判断输入的是不是字母还是数字,再判断窗口是不是弹出来了,然后再把字符弄上去即可
      

  4.   

    KeyPress事件,想更牛的话就用钩子了。
      

  5.   

    这样应该要用到键盘钩子,这里是一个简单的示例:    public struct KBDLLHOOKSTRUCT
        {
            public int vkCode;
            int scanCode;
            public int flags;
            int time;
            int dwExtraInfo;
        }
    public delegate IntPtr KeyboardHookProc(int nCode, IntPtr wParam, ref KBDLLHOOKSTRUCT lParam);
            public KeyboardHookProc HookProc;        public static IntPtr hHookHandle = IntPtr.Zero;        public const int WH_MOUSE_LL = 14;
            public const int WH_KEYBOARD_LL = 13;
            private const int WM_KEYDOWN = 0x0100;
            private const int WM_SYSKEYDOWN = 0x0104;        [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall, SetLastError = true)]
            public static extern IntPtr SetWindowsHookEx(int idHook, KeyboardHookProc lpfn, IntPtr hMod, uint dwThreadId);        [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall, SetLastError = true)]
            public static extern bool UnhookWindowsHookEx(IntPtr idHook);
     
            [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall, SetLastError = true)]
            private static extern IntPtr CallNextHookEx(IntPtr idHook, int nCode, IntPtr wParam, ref KBDLLHOOKSTRUCT lParam);        private void button1_Click(object sender, EventArgs e)
            {
                setKeyboardHook();
            }        public void setKeyboardHook()
            {
                if (hHookHandle == IntPtr.Zero)
                {
                    HookProc = new KeyboardHookProc(HookCallback);
                    hHookHandle = SetWindowsHookEx(WH_KEYBOARD_LL, HookProc, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0);
                    if (hHookHandle == IntPtr.Zero)
                    {
                        MessageBox.Show("SetWindowsHookEx Failed");
                        return;
                    }
                    button1.Text = "Uninstall Hook";            }
                else
                {
                    if (!UnhookWindowsHookEx(hHookHandle))
                    {
                        MessageBox.Show("UnhookWindowsHookEx Failed");
                        return;
                    }
                    hHookHandle = IntPtr.Zero;
                    button1.Text = "Install Hook";
                }        }
            private IntPtr HookCallback(int nCode, IntPtr wParam, ref KBDLLHOOKSTRUCT lParam)
            {            if (nCode >= 0 && (wParam == (IntPtr)WM_KEYDOWN || wParam == (IntPtr)WM_SYSKEYDOWN)) //仅捕获KeyDown事件
                 {
                   //这里可以加上你窗体的操作代码。
                    MessageBox.Show("you press key: " + lParam.vkCode.ToString());
                    //return (IntPtr)0;
                }
                return CallNextHookEx(hHookHandle, nCode, wParam, ref lParam);
            }