本文发表在 rolia.net 枫下论坛假设你有一个button和一个textbox,实现点击button然后模拟按键Ctrl+C的功能
using System.Runtime.InteropServices;
public class Form1 : System.Windows.Forms.Form
{
[DllImport("user32.dll")]
private static extern void keybd_event(int bVk, int bScan, int dwFlags, int dwExtraInfo);
..
..
..
private void button1_Click(object sender, System.EventArgs e)
{
// 0x90 是numLock的键盘代码,模拟点击NumLock,第三个参数0代表按下此键
keybd_event(0x90,0x45,0,0);
// 第三个参数2代表放开此键
keybd_event(0x90,0x45,2,0);
// 将焦点放在TextBox1上,并且选择里面所有的字符,为底下的^+C做好准备
this.textBox1.Focus();
this.textBox1.SelectAll();
// 0x11为Ctrl键盘代码,0x43为C键键盘代码,分别执行两个键的按下和放开
keybd_event(0x11,0x45,0,0);
keybd_event(0x43,0x45,0,0);
keybd_event(0x43,0x45,2,0);
keybd_event(0x11,0x45,2,0);
// 好了,现在textbox1种的字符已经存储在clipboard中了
}
这个函数 keybd_event(int bVk, int bScan, int dwFlags, int dwExtraInfo);
它是一个事件,也就是说每当用户按下^+C的时候会自动地调用这个函数,现在你手工的调用了它,等于跳过了^+C,直接运行。
有关键盘代码可以参看:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/WindowsUserInterface/UserInput/VirtualKeyCodes.asp更多精彩文章及讨论,请光临枫下论坛 rolia.net
using System.Runtime.InteropServices;
public class Form1 : System.Windows.Forms.Form
{
[DllImport("user32.dll")]
private static extern void keybd_event(int bVk, int bScan, int dwFlags, int dwExtraInfo);
..
..
..
private void button1_Click(object sender, System.EventArgs e)
{
// 0x90 是numLock的键盘代码,模拟点击NumLock,第三个参数0代表按下此键
keybd_event(0x90,0x45,0,0);
// 第三个参数2代表放开此键
keybd_event(0x90,0x45,2,0);
// 将焦点放在TextBox1上,并且选择里面所有的字符,为底下的^+C做好准备
this.textBox1.Focus();
this.textBox1.SelectAll();
// 0x11为Ctrl键盘代码,0x43为C键键盘代码,分别执行两个键的按下和放开
keybd_event(0x11,0x45,0,0);
keybd_event(0x43,0x45,0,0);
keybd_event(0x43,0x45,2,0);
keybd_event(0x11,0x45,2,0);
// 好了,现在textbox1种的字符已经存储在clipboard中了
}
这个函数 keybd_event(int bVk, int bScan, int dwFlags, int dwExtraInfo);
它是一个事件,也就是说每当用户按下^+C的时候会自动地调用这个函数,现在你手工的调用了它,等于跳过了^+C,直接运行。
有关键盘代码可以参看:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/WindowsUserInterface/UserInput/VirtualKeyCodes.asp更多精彩文章及讨论,请光临枫下论坛 rolia.net