• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#模拟键盘输入

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

  主要使用了Windows API 实现,你可以在你C盘下的system32文件夹中找到user32.dll,函数的说明在MSDN都有,只需要拿名字去搜一下就行

  根据窗口的类名和窗口名称获取窗口句柄,成功返回一个窗口的句柄,否则返回0:

        [DllImport("User32.dll", EntryPoint = "FindWindow")]
        private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

  在窗口列表中寻找与指定条件相符的第一个子窗口

        [DllImport("user32.dll", EntryPoint = "FindWindowEx")]
        static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpClass, string lpszWindow);

  找到句柄后向窗口发送消息,SendMessage方法有很多的重载

        [DllImport("user32.dll ", EntryPoint = "SendMessage")]
        public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, string lParam);

        [DllImport("user32.dll", EntryPoint = "SendMessage")]
        public static extern IntPtr SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr lParam);
        const int WM_CHAR = 0x0102;
        const int WM_SETTEXT = 0x000C;
        const int VK_RETURN = 0x0d;

        static void Main(string[] args)
        {
            IntPtr handle = FindWindow(null, "Hello.txt - 记事本");
            handle = FindWindowEx(handle, IntPtr.Zero, "Edit", null);
            if (handle == IntPtr.Zero)
            {
                Console.WriteLine("没有找到句柄");
                return;
            }
            SendMessage(handle, WM_SETTEXT, IntPtr.Zero, "Hello word!");
SendMessage(handle, WM_CHAR, (IntPtr)VK_RETURN, IntPtr.Zero);
//Enter
}

相关链接:

虚拟键表:http://baike.baidu.com/view/555571.htm

SendMessage消息类型:http://baike.baidu.com/view/1080187.htm


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#Dictionary已知value获取对应的key发布时间:2022-07-10
下一篇:
C#中的委托和事件发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap