C#对游戏手柄的编程开发-API篇(3)

简介:

对游戏手柄的编程开发在上两篇中,已讲解完,在此篇中将讲解对键盘的模拟。

对键盘的模拟,系统已提供了非常多的API函数,在这里就不一一讲解了,只讲解其中一个最简单的API函数 。

/// <summary>
            /// 模拟键盘事件
            /// </summary>
            /// <param name="bVk">虚拟键值</param>
            /// <param name="bScan"></param>
            /// <param name="dwFlags"></param>
            /// <param name="dwExtraInfo">附加键状</param>
            [DllImport("user32.dll")]
            public static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);

其中bVk可直接与System.Windows.Forms.Keys的值对应;dwFlags可为以下值的组合:

常数 说明
KEYEVENTF_KEYDOWN KeyDown事件
KEYEVENTF_EXTENDEDKEY 表明bScan为扩展键码。
KEYEVENTF_KEYUP KeyUp事件

 

为了方便对此API再进一步封装:

/// <summary>
            /// 键盘事件
            /// </summary>
            [Flags]
            public enum KeyboardEvents
            {
            None = 0x0,
            KeyDown = 0x1,
            KeyUp = 0x2
            }

 

/// <summary>
            /// 发送键盘事件
            /// </summary>
            /// <param name="key"></param>
            /// <param name="events">事件</param>
            public static void SendKeyEvent(Keys key, KeyboardEvents events)
            {
            if ((events & KeyboardEvents.KeyDown) == KeyboardEvents.KeyDown)
            keybd_event((byte)key, 0, KEYEVENTF_KEYDOWN, 0);
            if ((events & KeyboardEvents.KeyUp) == KeyboardEvents.KeyUp)
            keybd_event((byte)key, 0, KEYEVENTF_KEYUP, 0);
            }

 

比如我们要模拟按下A键则直接调用:SendKeyEvent(Keys.A, KeyboardEvents.KeyDown)。而要模拟按下A键并弹起则为:SendKeyEvent(Keys.A, KeyboardEvents.KeyDown | KeyboardEvents.KeyUp)

 

到此,对键盘的模拟就基本完成了,配合第2篇中的游戏手柄的KeyDown,KeyUp事件(请参考源码),第1篇中所说的那个功能也就能实现出来了。

 

下面是实现出来的软件界面截图:

使用方法:分别设置好每个手柄的按钮需要模拟的键盘键码(将光标移动到对应的按钮下面,直接点击键盘键即可),点击“启动1/2号手柄模拟”按钮。最小化程序后将鼠标焦点移动对您要玩的游戏上,您就可以使用手柄玩游戏了。

软件下载(不提供源码):/Files/kingthy/JoyKeys-bin.rar

本文转自Kingthy博客园博客,原文链接:http://www.cnblogs.com/kingthy/archive/2009/03/29/1424398.html ,如需转载请自行联系原作者
相关文章
|
1天前
|
人工智能 机器人 API
【Python+微信】【企业微信开发入坑指北】3. 如何利用企业微信API给微信群推送消息
【Python+微信】【企业微信开发入坑指北】3. 如何利用企业微信API给微信群推送消息
4 0
|
1天前
|
缓存 人工智能 API
【Python+微信】【企业微信开发入坑指北】2. 如何利用企业微信API主动给用户发应用消息
【Python+微信】【企业微信开发入坑指北】2. 如何利用企业微信API主动给用户发应用消息
5 0
|
4天前
|
存储 安全 网络安全
C#编程的安全性与加密技术
【4月更文挑战第21天】C#在.NET框架支持下,以其面向对象和高级特性成为安全软件开发的利器。本文探讨C#在安全加密领域的应用,包括使用System.Security.Cryptography库实现加密算法,利用SSL/TLS保障网络传输安全,进行身份验证,并强调编写安全代码的重要性。实际案例涵盖在线支付、企业应用和文件加密,展示了C#在应对安全挑战的同时,不断拓展其在该领域的潜力和未来前景。
|
4天前
|
程序员 C#
C#编程中的面向对象编程思想
【4月更文挑战第21天】本文探讨了C#中的面向对象编程,包括类、对象、封装、继承和多态。类是对象的抽象,定义属性和行为;对象是类的实例。封装隐藏内部细节,只暴露必要接口。继承允许类复用和扩展属性与行为,而多态使不同类的对象能通过相同接口调用方法。C#通过访问修饰符实现封装,使用虚方法和抽象方法实现多态。理解并应用这些概念,能提升代码的清晰度和可扩展性,助你成为更好的C#程序员。
|
5天前
|
IDE 程序员 C#
C#编程入门:从零开始的旅程
【4月更文挑战第20天】本文引导初学者入门C#编程,从环境搭建开始,推荐使用Visual Studio Community版作为IDE。接着,通过编写&quot;Hello, World!&quot;程序,介绍基本语法,包括数据类型、运算符和表达式。文章还涉及控制结构、函数和方法,以及面向对象编程概念。通过学习,读者将对C#有初步了解,并激发进一步探索编程世界的兴趣。
|
5天前
|
开发框架 .NET Java
探索 C#编程的奥秘与魅力
【4月更文挑战第20天】C#是微软开发的现代、面向对象的编程语言,以其简洁语法、强大功能和跨平台支持脱颖而出。它支持自动垃圾回收、泛型、委托、LINQ,并广泛应用于桌面、Web、移动和游戏开发。C#拥有活跃的开发者社区和丰富的资源,是Unity游戏开发的首选语言。随着.NET Core,C#可在多个操作系统上运行,持续创新,未来发展潜力巨大。
|
5天前
|
缓存 算法 测试技术
优化 C#编程性能的策略
【4月更文挑战第20天】优化C#性能策略包括:选择合适算法和数据结构,避免频繁对象创建,缓存常用数据,减少内存分配,使用异步编程,优化数据库操作(如合理查询和使用索引),利用多线程并行处理,精简代码,使用性能分析工具,硬件升级,以及进行性能测试。综合应用这些策略可提升程序性能和响应性。
|
10天前
|
开发框架 前端开发 JavaScript
采用C#.Net +JavaScript 开发的云LIS系统源码 二级医院应用案例有演示
技术架构:Asp.NET CORE 3.1 MVC + SQLserver + Redis等 开发语言:C# 6.0、JavaScript 前端框架:JQuery、EasyUI、Bootstrap 后端框架:MVC、SQLSugar等 数 据 库:SQLserver 2012
|
16天前
|
缓存 前端开发 API
API接口封装系列
API(Application Programming Interface)接口封装是将系统内部的功能封装成可复用的程序接口并向外部提供,以便其他系统调用和使用这些功能,通过这种方式实现系统之间的通信和协作。下面将介绍API接口封装的一些关键步骤和注意事项。
|
23天前
|
监控 前端开发 JavaScript
实战篇:商品API接口在跨平台销售中的有效运用与案例解析
随着电子商务的蓬勃发展,企业为了扩大市场覆盖面,经常需要在多个在线平台上展示和销售产品。然而,手工管理多个平台的库存、价格、商品描述等信息既耗时又容易出错。商品API接口在这一背景下显得尤为重要,它能够帮助企业在不同的销售平台之间实现商品信息的高效同步和管理。本文将通过具体的淘宝API接口使用案例,展示如何在跨平台销售中有效利用商品API接口,以及如何通过代码实现数据的统一管理。