求c#按钮精灵程序代码,就是股票软件中输入数字,右下角弹出的下拉列表(winform) 求c#按钮精灵程序代码,就是股票软件主窗体中输入数字,右下角弹出的下拉列表(winform) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我有webfrom的不过winform应该更简单吧 按键精灵的代码??如果只要取得用户输入的键可以在窗口的keypress事件中获得 只需要在KeyPress事件中来处理一下就可以了KeyPress的时候判断输入的是不是字母还是数字,再判断窗口是不是弹出来了,然后再把字符弄上去即可 KeyPress事件,想更牛的话就用钩子了。 这样应该要用到键盘钩子,这里是一个简单的示例: 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); } 如何让自己做的程序切入别人程序里 给定richtextbox的行号 怎么获取该行的字符串!急!! 200分:asp.net要读取客户端的加密锁,一定要写ActiveX控件嵌入浏览器吗? 求仓库管理系统的源代码,C/S的。 请教大家:我的Gridview问题 [SOS]:在C#的控制台程序中,如何得到当前程序的路径? 为何动态生成的客户端控键提交后,提示网页名称及参数时报视图状态无效的错误 以字节形式保存数据 关于在wpf中修改app.config文件中的数据库连接字符串后无法获取到最新值。 如何立刻无条件退出程序! 汉字的一个字是字符吗? 怎么实现动态传递参数列表调用存储过程并返回结果集值
如果只要取得用户输入的键可以在窗口的keypress事件中获得
{
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);
}