当前位置:七道奇文章资讯安全技术网络技术
日期:2009-06-18 13:55:00  来源:本站整理

.net中模拟键盘和鼠标操作[网络技术]

赞助商链接



  本文“.net中模拟键盘和鼠标操作[网络技术]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

根源:豆豆网

  其实SendKeys类供应的办法蛮好用的,惋惜的是WPF中不能用了,说是WPF的消息循环方法改成了Dispatcher,所以直接调用System.Windows.Forms.SendKeys.Send()办法会报错. 不过不要紧, 至少有use32的SendInput可用,通过P/Invoke方法,我们可以模拟键盘或鼠标操作.

  定义是这样的:

[DllImport("user32.dll", SetLastError = true)]
internal static extern int SendInput(int nInputs, ref INPUT mi, int cbSize);

  此中的INPUT构造表示一个键盘或鼠标操作:

[StructLayout(LayoutKind.Sequential)]
internal struct INPUT
{
internal int type;
internal INPUTUNION union;
};
[StructLayout(LayoutKind.Explicit)]
internal struct INPUTUNION
{
[FieldOffset(0)]
internal MOUSEINPUT mouseInput;
[FieldOffset(0)]
internal KEYBDINPUT keyboardInput;
};
[StructLayout(LayoutKind.Sequential)]
internal struct MOUSEINPUT
{
internal int dx;
internal int dy;
internal int mouseData;
internal int dwFlags;
internal int time;
internal IntPtr dwExtraInfo;
};
[StructLayout(LayoutKind.Sequential)]
internal struct KEYBDINPUT
{
internal short wVk;
internal short wScan;
internal int dwFlags;
internal int time;
internal IntPtr dwExtraInfo;
};
[Flags]
internal enum SendMouseInputFlags
{
Move = 0x0001,
LeftDown = 0x0002,
LeftUp = 0x0004,
RightDown = 0x0008,
RightUp = 0x0010,
MiddleDown = 0x0020,
MiddleUp = 0x0040,
XDown = 0x0080,
XUp = 0x0100,
Wheel = 0x0800,
Absolute = 0x8000,
};

  关于这些办法或构造的定义在http://www.pinvoke.net/index.aspx 这个网站上可以查找得到(但不保证百分百靠谱)

  若何利用呢?

  很简单, 要敲一个键, 比方回车:

Keyboard.Press(Key.Enter);
Keyboard.Release(Key.Enter);


  要敲一个组合键:比方Alt+F4
Keyboard.Press(Key.LeftAlt);
Keyboard.Press(Key.F4);
Keyboard.Release(Key.LeftAlt);
Keyboard.Release(Key.F4);

  要敲一段文字:
Keyboard.Type("notepad");

  鼠标与之近似,比方:
Mouse.MoveTo(new System.Drawing.Point(x, y));
Mouse.Click(MouseButton.Right);


  以上是“.net中模拟键盘和鼠标操作[网络技术]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • Windows 8怎样启用.net framework 3.5的办法介绍
  • 教你若何开启Win 7系统中的Telnet服务
  • 网络设备通过win7的虚拟wifi衔接internet的办法
  • windows7的telnet号令的具体用法
  • netcfg.hlp是什么文件? netcfg.hlp文件下载
  • IP处理函数inet_aton()和inet_ntoa()利用阐明
  • 操纵mysql的inet_aton()和inet_ntoa()函数存储IP地址的办法分享
  • <b>ASP.NET安全设置防备ASPXSpy</b>
  • Ubuntu network-manager显示"无线网络已经禁用"的解
  • Ubuntu 下MyEclipse和NetBeans问题
  • 给Ubuntu安装netbook桌面环境
  • Ubuntu Server+Apache 运行 asp.net
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .