├── DCS_KA ├── .vs │ └── DCS_DataLink │ │ ├── v15 │ │ ├── Server │ │ │ └── sqlite3 │ │ │ │ ├── db.lock │ │ │ │ └── storage.ide │ │ └── .suo │ │ └── v16 │ │ ├── Server │ │ └── sqlite3 │ │ │ ├── db.lock │ │ │ └── storage.ide │ │ └── .suo ├── DCS_DataLink │ ├── obj │ │ └── Debug │ │ │ ├── DCS_DataLink.csproj.CopyComplete │ │ │ ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs │ │ │ ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs │ │ │ ├── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs │ │ │ ├── DCS_DataLink.csproj.CoreCompileInputs.cache │ │ │ ├── DCS_DataLink.exe │ │ │ ├── DCS_DataLink.pdb │ │ │ ├── DCS_DataLink.Form1.resources │ │ │ ├── DesignTimeResolveAssemblyReferences.cache │ │ │ ├── DCS_DataLink.Properties.Resources.resources │ │ │ ├── DCS_DataLink.csproj.GenerateResource.cache │ │ │ ├── DCS_DataLink.csprojAssemblyReference.cache │ │ │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ │ │ ├── DCS_DataLink.csprojResolveAssemblyReference.cache │ │ │ ├── .NETFramework,Version=v4.5.AssemblyAttributes.cs │ │ │ └── DCS_DataLink.csproj.FileListAbsolute.txt │ ├── DCS-1.ico │ ├── app图标.ico │ ├── 图片资源 │ │ ├── DCS-1.ico │ │ ├── DCS-1.png │ │ └── DCS-1~1.png │ ├── bin │ │ └── Debug │ │ │ ├── DCS_DataLink.exe │ │ │ ├── DCS_DataLink.pdb │ │ │ ├── Microsoft.DirectX.dll │ │ │ ├── Microsoft.DirectX.DirectInput.dll │ │ │ └── DCS_DataLink.exe.config │ ├── DCS_DataLink_TemporaryKey.pfx │ ├── DLL │ │ ├── Microsoft.DirectX.DirectInput.dll │ │ └── Microsoft.Office.Interop.Excel.dll │ ├── Properties │ │ ├── Settings.settings │ │ ├── Settings.Designer.cs │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ ├── app.manifest │ │ └── Resources.resx │ ├── Program.cs │ ├── DCS_DataLink.csproj.user │ ├── ReadMe.txt │ ├── App.config │ ├── DCS_DataLink.csproj │ ├── KeyboardHook.cs │ ├── Form1.Designer.cs │ └── Export.lua ├── DCS_DataLink.v12.suo ├── 键盘飞行辅助程序 │ ├── Debug │ │ ├── setup.exe │ │ └── 键盘飞行辅助程序.msi │ └── 键盘飞行辅助程序.vdproj └── DCS_DataLink.sln ├── 控制指令表.xlsx └── README.md /DCS_KA/.vs/DCS_DataLink/v15/Server/sqlite3/db.lock: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /DCS_KA/.vs/DCS_DataLink/v16/Server/sqlite3/db.lock: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.csproj.CopyComplete: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /控制指令表.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/控制指令表.xlsx -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | d02bf10f72ab863d6ad89ada77390762ec70d8c9 2 | -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink.v12.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink.v12.suo -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/DCS-1.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/DCS-1.ico -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/app图标.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/app图标.ico -------------------------------------------------------------------------------- /DCS_KA/键盘飞行辅助程序/Debug/setup.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/键盘飞行辅助程序/Debug/setup.exe -------------------------------------------------------------------------------- /DCS_KA/.vs/DCS_DataLink/v15/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/.vs/DCS_DataLink/v15/.suo -------------------------------------------------------------------------------- /DCS_KA/.vs/DCS_DataLink/v16/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/.vs/DCS_DataLink/v16/.suo -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/图片资源/DCS-1.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/图片资源/DCS-1.ico -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/图片资源/DCS-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/图片资源/DCS-1.png -------------------------------------------------------------------------------- /DCS_KA/键盘飞行辅助程序/Debug/键盘飞行辅助程序.msi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/键盘飞行辅助程序/Debug/键盘飞行辅助程序.msi -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/图片资源/DCS-1~1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/图片资源/DCS-1~1.png -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/bin/Debug/DCS_DataLink.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/bin/Debug/DCS_DataLink.exe -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/bin/Debug/DCS_DataLink.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/bin/Debug/DCS_DataLink.pdb -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.exe -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.pdb -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/DCS_DataLink_TemporaryKey.pfx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/DCS_DataLink_TemporaryKey.pfx -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/bin/Debug/Microsoft.DirectX.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/bin/Debug/Microsoft.DirectX.dll -------------------------------------------------------------------------------- /DCS_KA/.vs/DCS_DataLink/v15/Server/sqlite3/storage.ide: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/.vs/DCS_DataLink/v15/Server/sqlite3/storage.ide -------------------------------------------------------------------------------- /DCS_KA/.vs/DCS_DataLink/v16/Server/sqlite3/storage.ide: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/.vs/DCS_DataLink/v16/Server/sqlite3/storage.ide -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/DLL/Microsoft.DirectX.DirectInput.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/DLL/Microsoft.DirectX.DirectInput.dll -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/DLL/Microsoft.Office.Interop.Excel.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/DLL/Microsoft.Office.Interop.Excel.dll -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.Form1.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.Form1.resources -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/bin/Debug/Microsoft.DirectX.DirectInput.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/bin/Debug/Microsoft.DirectX.DirectInput.dll -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/obj/Debug/DesignTimeResolveAssemblyReferences.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/obj/Debug/DesignTimeResolveAssemblyReferences.cache -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.Properties.Resources.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.Properties.Resources.resources -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.csproj.GenerateResource.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.csproj.GenerateResource.cache -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.csprojAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.csprojAssemblyReference.cache -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/obj/Debug/.NETFramework,Version=v4.5.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")] 5 | -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace DCS_DataLink 8 | { 9 | static class Program 10 | { 11 | /// 12 | /// 应用程序的主入口点。 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | Application.Run(new Form1()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/DCS_DataLink.csproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | C:\Users\雪\Desktop\|publish\ 5 | 6 | 7 | 8 | 9 | 10 | zh-CN 11 | false 12 | ShowAllFiles 13 | 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DCS-Keyboard-Assistance 2 | ## 项目目的与建设初衷 3 | 为了提升DCS World的广大无外设飞友的操作体验,针对俯仰、滚转和油门的键盘控制进行了优化,使键盘玩家可以通过曲线调节,定制自己的按键拟轴体验。同时希望广大飞友基于我的工程进行进一步开发,特别是我已打通的“DCS仿真数据抓取=>数据处理=> 4 | 控制指令生成=>DCS飞机控制”技术回路(参考空中加油辅助功能的实现),开开更多脑洞,或者进行飞控、火控等算法的科学研究。 5 | ## 基本原理与开发平台 6 | 本项目基于DCS World的Export.lua脚本,实现DCS数据的获取与飞机控制指令的写入(LoGetXXX与LoSetCommand函数),同时基于Visual Studio 2019,使用C#窗体程序进行玩家按键的监听与数据处理等操作。窗体程序与DCS之间通过UDP Socket进行数据传输。 7 | ## 已有功能与使用限制 8 | 目前DCS键盘辅助程序能够提供自定义的俯仰、滚转、油门按键设置,通过曲线与滑块设置模拟轴体验,同时1.0.7版本增加的空中加油辅助功能,供玩家在枭龙单机空中加油任务中尝鲜,具体的功能介绍可参考我的B站视频(https://www.bilibili.com/video/BV1iZ4y157B8)。 9 | 由于本项目使用自定义的Export.lua脚本,存在可能的开挂行为(获取敌机信息等),多数联机服务器可能会禁止玩家的连接,请尽可能单机使用;此外,由于需要使用本项目提供的Export.lua替换原有的,因此本项目与Tacview插件不兼容,望周知。 10 | ## 工程文件介绍 11 | 根目录下“控制指令表.xlsx”是我扒下来的DCS中LoSetCommand()函数的指令列表,对应的编号和功能名已列出,供二次开发使用;VS项目文档在“DCS_KA”文件夹中,使用VS2019打开“DCS_DataLink.sln”即可开始开发,由于该工程进行了发布打包,所以解决方案“DCS_DataLink”包含 12 | 两个项目,一个是工程本体“DCS_DataLink”,另一个是打包用的“键盘飞行辅助程序”。二开请直接对“DCS_DataLink”项目进行编辑即可。此外,我更改的Export.lua脚本放在DCS_KA\DCS_DataLink目录下,请自行查找与更改。 13 | ## 软著与产权声明 14 | 啥都没有,随便复制与二开,如果有幸能够帮到诸位飞友或者从事飞行器设计相关研究的小伙伴,别忘了去B站给我点个赞就行,我的ID:老麦0208。 15 | -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace DCS_DataLink.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.6.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // 有关程序集的常规信息通过以下 6 | // 特性集控制。更改这些特性值可修改 7 | // 与程序集关联的信息。 8 | [assembly: AssemblyTitle("DCS_DataLink")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("DCS_DataLink")] 13 | [assembly: AssemblyCopyright("Copyright © Laomai0208 2020")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // 将 ComVisible 设置为 false 使此程序集中的类型 18 | // 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, 19 | // 则将该类型上的 ComVisible 特性设置为 true。 20 | [assembly: ComVisible(false)] 21 | 22 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 23 | [assembly: Guid("87a7862c-1b4f-4965-8e15-527ac875b0c5")] 24 | 25 | // 程序集的版本信息由下面四个值组成: 26 | // 27 | // 主版本 28 | // 次版本 29 | // 生成号 30 | // 修订号 31 | // 32 | // 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, 33 | // 方法是按如下所示使用“*”: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.6.0")] 36 | [assembly: AssemblyFileVersion("1.0.6.0")] 37 | -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.30204.135 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DCS_DataLink", "DCS_DataLink\DCS_DataLink.csproj", "{2590E647-DF18-4B8A-8EC6-65A153BA139B}" 7 | EndProject 8 | Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "键盘飞行辅助程序", "键盘飞行辅助程序\键盘飞行辅助程序.vdproj", "{1F1353D3-1EBF-420A-B6AF-C428265EB313}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {2590E647-DF18-4B8A-8EC6-65A153BA139B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {2590E647-DF18-4B8A-8EC6-65A153BA139B}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {2590E647-DF18-4B8A-8EC6-65A153BA139B}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {2590E647-DF18-4B8A-8EC6-65A153BA139B}.Release|Any CPU.Build.0 = Release|Any CPU 20 | {1F1353D3-1EBF-420A-B6AF-C428265EB313}.Debug|Any CPU.ActiveCfg = Debug 21 | {1F1353D3-1EBF-420A-B6AF-C428265EB313}.Release|Any CPU.ActiveCfg = Release 22 | EndGlobalSection 23 | GlobalSection(SolutionProperties) = preSolution 24 | HideSolutionNode = FALSE 25 | EndGlobalSection 26 | GlobalSection(ExtensibilityGlobals) = postSolution 27 | SolutionGuid = {AD835270-4FD5-430E-9D64-8322E58FE31B} 28 | EndGlobalSection 29 | EndGlobal 30 | -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/ReadMe.txt: -------------------------------------------------------------------------------- 1 | 《DCS键盘辅助程序》测试版V1.0.7beta @老麦0208 2 | 1.安装lua文件:Steam版用户将当前目录下的“Export.lua”文件复制到“C:\Users\*你的用户名*\Saved Games\DCS\Scripts”文件夹下, 3 | OpenBeta版用户将当前目录下的“Export.lua”文件复制到“C:\Users\*你的用户名*\Saved Games\DCS.openbeta\Scripts”。 4 | ****注意****对应位置没有Scripts文件的,请自行创建。 5 | 2.DCS清除键位:打开DCS Wold,清除想要驾驶的机型的“俯仰”、“滚转”以及“油门”按键,这是使用本辅助程序的基础。 6 | 3.打开辅助程序,在界面中上部,找到“俯仰+”、“俯仰-”、“滚转+”、“滚转-”、“油门+”、“油门-”六个按钮,鼠标点击之后按下你喜欢的键,设置对应键位。 7 | ****注意****若此处没有设置键位,则本程序无法使用,必须设置。个人建议上下左右箭头,油门加减分别用pageUp和pageDown,这个你们随意设置。 8 | 9 | 4.设置完成后,打开DCSworld,点击“DCS遥控打开”按钮即可开始使用。 10 | 5.其他滑块按钮的功能说明请参考我的b站视频。 11 | 6.V1.0.7beta版本相对于之前的1.0.6,增加了空中加油俯仰与油门辅助自控,点击界面“打开AAR辅助”即可体验,目前仅支持枭龙“快速行动”“空中加油”任务, 12 | 即场景里只有一个加油机和受油机,为抢先版体验,抛砖引玉,有更好的控制算法或论文的大佬,欢迎B站私信联系我或发邮箱781943524@qq.com 13 | 14 | 15 | //更新日志// 16 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 17 | 《DCS键盘辅助程序》测试版V1.0.6 @老麦0208 18 | 1.安装方式同V1.0.3。 19 | 2.解除了回中仅上下左右PgUp\PgDown键的限制,自定义按键也可以使用了。 20 | 21 | 《DCS键盘辅助程序》测试版V1.0.5 @老麦0208 22 | 1.安装方式同V1.0.3。 23 | 2.增加对枭龙油门键盘控制的支持。 24 | 3.增加摇杆苦力帽按键(注意:是按键,不是轴)的拟轴功能,专用于枭龙的目标指示器控制,步进全部为线型,可设置是否自动回中,连接摇杆自动 25 | 断开键盘按键侦测,由于F16\F18\AV8b的目标指示命令我试了一晚上没找到对应编号,故暂时仅支持JF-17。使用前请清除枭龙对应的 26 | 目标指示器摇杆按钮设置。 27 | 4.程序界面进行了一定的重构,基本功能保持一致。 28 | 29 | 《DCS键盘辅助程序》测试版V1.0.4 @老麦0208 30 | 1.安装方式同V1.0.3。 31 | 2.新增步进曲线调节“切换线型”按钮,有两种线型供大家使用,目前还不支持自定义曲线。 32 | 3.新增俯仰、滚转、油门自定义按键功能,点击对应按钮之后,按下所需按键即可完成设置,按键名称会显示在按钮上(重启本程序后不显示)。 33 | 4.将俯仰、滚转与油门的总行程与限位器控制进行了分离,大家可分别进行设置。 34 | 35 | 《DCS键盘辅助程序》测试版V1.0.3 @老麦0208 36 | 1.安装lua文件:将当前目录下的“Export.lua”文件复制到“C:\Users\*你的用户名*\Saved Games\*你的DCS相关文件夹*\Scripts”文件夹下, 37 | OpenBeta版用户该路径为“C:\Users\*你的用户名*\Saved Games\DCS.openbeta\Scripts”。 38 | 2.DCS清除键位:打开DCS Wold,清除想要驾驶的机型的“俯仰”、“滚转”以及“油门”按键,这是使用本辅助程序的基础。 39 | 3.程序使用方法:**注意**,在进入DCS后,点击程序界面“DCS遥控打开”按钮,即可开始使用,其他功能请参考B站对应视频。 40 | 4.其他说明:DCS遥测功能进作为展示,无实际作用,程序下一步改进可能会基于遥测数据进行自动控制相关功能开发,敬请期待。 41 | -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/bin/Debug/DCS_DataLink.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本: 4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace DCS_DataLink.Properties 12 | { 13 | 14 | 15 | /// 16 | /// 一个强类型的资源类,用于查找本地化的字符串等。 17 | /// 18 | // 此类是由 StronglyTypedResourceBuilder 19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen 21 | // (以 /str 作为命令选项),或重新生成 VS 项目。 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// 返回此类使用的、缓存的 ResourceManager 实例。 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DCS_DataLink.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// 为所有资源查找重写当前线程的 CurrentUICulture 属性, 56 | /// 方法是使用此强类型资源类。 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/Properties/app.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 47 | 54 | 55 | 69 | -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | c:\users\damien\documents\visual studio 2013\Projects\DCS_DataLink\DCS_DataLink\bin\Debug\DCS_DataLink.exe.config 2 | c:\users\damien\documents\visual studio 2013\Projects\DCS_DataLink\DCS_DataLink\bin\Debug\DCS_DataLink.exe 3 | c:\users\damien\documents\visual studio 2013\Projects\DCS_DataLink\DCS_DataLink\bin\Debug\DCS_DataLink.pdb 4 | c:\users\damien\documents\visual studio 2013\Projects\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.csprojResolveAssemblyReference.cache 5 | c:\users\damien\documents\visual studio 2013\Projects\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.Form1.resources 6 | c:\users\damien\documents\visual studio 2013\Projects\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.Properties.Resources.resources 7 | c:\users\damien\documents\visual studio 2013\Projects\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.csproj.GenerateResource.Cache 8 | c:\users\damien\documents\visual studio 2013\Projects\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.exe 9 | c:\users\damien\documents\visual studio 2013\Projects\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.pdb 10 | C:\笔记本数据备份\Projects\DCS_DataLink2\DCS_DataLink\DCS_DataLink\bin\Debug\DCS_DataLink.exe.config 11 | C:\笔记本数据备份\Projects\DCS_DataLink2\DCS_DataLink\DCS_DataLink\bin\Debug\DCS_DataLink.exe 12 | C:\笔记本数据备份\Projects\DCS_DataLink2\DCS_DataLink\DCS_DataLink\bin\Debug\DCS_DataLink.pdb 13 | C:\笔记本数据备份\Projects\DCS_DataLink2\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.csprojAssemblyReference.cache 14 | C:\笔记本数据备份\Projects\DCS_DataLink2\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.Form1.resources 15 | C:\笔记本数据备份\Projects\DCS_DataLink2\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.Properties.Resources.resources 16 | C:\笔记本数据备份\Projects\DCS_DataLink2\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.csproj.GenerateResource.cache 17 | C:\笔记本数据备份\Projects\DCS_DataLink2\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.exe 18 | C:\笔记本数据备份\Projects\DCS_DataLink2\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.pdb 19 | C:\笔记本数据备份\Projects\DCS_DataLink2\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.csproj.CoreCompileInputs.cache 20 | C:\笔记本数据备份\Projects\DCS_DataLink_归零外挂\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.csprojAssemblyReference.cache 21 | C:\笔记本数据备份\Projects\DCS_DataLink_归零外挂\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.Form1.resources 22 | C:\笔记本数据备份\Projects\DCS_DataLink_归零外挂\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.Properties.Resources.resources 23 | C:\笔记本数据备份\Projects\DCS_DataLink_归零外挂\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.csproj.GenerateResource.cache 24 | C:\笔记本数据备份\Projects\DCS_DataLink_归零外挂\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.csproj.CoreCompileInputs.cache 25 | C:\笔记本数据备份\Projects\DCS_DataLink_归零外挂\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.exe 26 | C:\笔记本数据备份\Projects\DCS_DataLink_归零外挂\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.pdb 27 | C:\笔记本数据备份\Projects\DCS_DataLink_归零外挂\DCS_DataLink\DCS_DataLink\bin\Debug\DCS_DataLink.exe.config 28 | C:\笔记本数据备份\Projects\DCS_DataLink_归零外挂\DCS_DataLink\DCS_DataLink\bin\Debug\DCS_DataLink.exe 29 | C:\笔记本数据备份\Projects\DCS_DataLink_归零外挂\DCS_DataLink\DCS_DataLink\bin\Debug\DCS_DataLink.pdb 30 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.Form1.resources 31 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.Properties.Resources.resources 32 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.csproj.GenerateResource.cache 33 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.csproj.CoreCompileInputs.cache 34 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.exe 35 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.pdb 36 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\bin\Debug\DCS_DataLink.exe.config 37 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\bin\Debug\DCS_DataLink.exe 38 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\bin\Debug\DCS_DataLink.pdb 39 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\bin\Debug\Microsoft.DirectX.DirectInput.dll 40 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\bin\Debug\Microsoft.DirectX.dll 41 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\bin\Debug\Microsoft.DirectX.xml 42 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.csproj.CopyComplete 43 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\bin\Debug\DCS_DataLink.exe.config 44 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\bin\Debug\DCS_DataLink.exe 45 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\bin\Debug\DCS_DataLink.pdb 46 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\bin\Debug\Microsoft.DirectX.DirectInput.dll 47 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\bin\Debug\Microsoft.DirectX.dll 48 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\bin\Debug\Microsoft.DirectX.xml 49 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.Form1.resources 50 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.Properties.Resources.resources 51 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.csproj.GenerateResource.cache 52 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.csproj.CoreCompileInputs.cache 53 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.csproj.CopyComplete 54 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.exe 55 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.pdb 56 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.csprojAssemblyReference.cache 57 | -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/DCS_DataLink.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {2590E647-DF18-4B8A-8EC6-65A153BA139B} 8 | WinExe 9 | Properties 10 | DCS_DataLink 11 | DCS_DataLink 12 | v4.5 13 | 512 14 | false 15 | C:\Users\雪\Desktop\ 16 | true 17 | Disk 18 | false 19 | Foreground 20 | 7 21 | Days 22 | false 23 | false 24 | true 25 | 0 26 | 1.0.7.%2a 27 | false 28 | true 29 | true 30 | 31 | 32 | AnyCPU 33 | true 34 | full 35 | false 36 | bin\Debug\ 37 | DEBUG;TRACE 38 | prompt 39 | 4 40 | 41 | 42 | AnyCPU 43 | pdbonly 44 | true 45 | bin\Release\ 46 | TRACE 47 | prompt 48 | 4 49 | 50 | 51 | app图标.ico 52 | 53 | 54 | LocalIntranet 55 | 56 | 57 | false 58 | 59 | 60 | Properties\app.manifest 61 | 62 | 63 | 8AA8A445B9B18A926783F37B6528C124E8963B5F 64 | 65 | 66 | DCS_DataLink_TemporaryKey.pfx 67 | 68 | 69 | true 70 | 71 | 72 | 73 | False 74 | DLL\Microsoft.DirectX.DirectInput.dll 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | Form 92 | 93 | 94 | Form1.cs 95 | 96 | 97 | 98 | 99 | 100 | Form1.cs 101 | 102 | 103 | ResXFileCodeGenerator 104 | Resources.Designer.cs 105 | Designer 106 | 107 | 108 | True 109 | Resources.resx 110 | 111 | 112 | 113 | 114 | SettingsSingleFileGenerator 115 | Settings.Designer.cs 116 | 117 | 118 | True 119 | Settings.settings 120 | True 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | False 135 | .NET Framework 3.5 SP1 136 | false 137 | 138 | 139 | 140 | 147 | -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/KeyboardHook.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using System.Runtime.InteropServices; 5 | using System.Windows.Forms; 6 | using System.Reflection; 7 | 8 | namespace DCS_DataLink 9 | { 10 | /// 11 | /// 键盘钩子 12 | /// [以下代码来自某网友,并非本人原创] 13 | /// 14 | class KeyboardHook 15 | { 16 | public event KeyEventHandler KeyDownEvent; 17 | public event KeyPressEventHandler KeyPressEvent; 18 | public event KeyEventHandler KeyUpEvent; 19 | 20 | public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam); 21 | static int hKeyboardHook = 0; //声明键盘钩子处理的初始值 22 | //值在Microsoft SDK的Winuser.h里查询 23 | // http://www.bianceng.cn/Programming/csharp/201410/45484.htm 24 | public const int WH_KEYBOARD_LL = 13; //线程键盘钩子监听鼠标消息设为2,全局键盘监听鼠标消息设为13 25 | HookProc KeyboardHookProcedure; //声明KeyboardHookProcedure作为HookProc类型 26 | 27 | //用于记录键状态 28 | public bool[] keyDown = new bool[256]; 29 | //用于记录被按下的键 30 | static List pressedKeys = new List(); 31 | 32 | /// 33 | /// 六个bool值分别对应上下左右pgup和pgdn的按压情况 34 | /// 35 | public bool[] ctrlKeyDown = new bool[6]; 36 | 37 | public int[] ctrlKeySettings = new int[6]; 38 | 39 | public int pressedNum = 0; 40 | 41 | //键盘结构 42 | [StructLayout(LayoutKind.Sequential)] 43 | public class KeyboardHookStruct 44 | { 45 | public int vkCode; //定一个虚拟键码。该代码必须有一个价值的范围1至254 46 | public int scanCode; // 指定的硬件扫描码的关键 47 | public int flags; // 键标志 48 | public int time; // 指定的时间戳记的这个讯息 49 | public int dwExtraInfo; // 指定额外信息相关的信息 50 | } 51 | //使用此功能,安装了一个钩子 52 | [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] 53 | public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId); 54 | 55 | 56 | //调用此函数卸载钩子 57 | [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] 58 | public static extern bool UnhookWindowsHookEx(int idHook); 59 | 60 | 61 | //使用此功能,通过信息钩子继续下一个钩子 62 | [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] 63 | public static extern int CallNextHookEx(int idHook, int nCode, Int32 wParam, IntPtr lParam); 64 | 65 | // 取得当前线程编号(线程钩子需要用到) 66 | [DllImport("kernel32.dll")] 67 | static extern int GetCurrentThreadId(); 68 | 69 | //使用WINDOWS API函数代替获取当前实例的函数,防止钩子失效 70 | [DllImport("kernel32.dll")] 71 | public static extern IntPtr GetModuleHandle(string name); 72 | 73 | 74 | 75 | public void Start() 76 | { 77 | // 安装键盘钩子 78 | if (hKeyboardHook == 0) 79 | { 80 | KeyboardHookProcedure = new HookProc(KeyboardHookProc); 81 | hKeyboardHook = SetWindowsHookEx(13, KeyboardHookProcedure, GetModuleHandle(System.Diagnostics.Process.GetCurrentProcess().MainModule.ModuleName), 0); 82 | //hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardHookProcedure, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0); 83 | //************************************ 84 | //键盘线程钩子 85 | //SetWindowsHookEx( 2,KeyboardHookProcedure, IntPtr.Zero, GetCurrentThreadId());//指定要监听的线程idGetCurrentThreadId(), 86 | //键盘全局钩子,需要引用空间(using System.Reflection;) 87 | //SetWindowsHookEx( 13,MouseHookProcedure,Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]),0); 88 | // 89 | //关于SetWindowsHookEx (int idHook, HookProc lpfn, IntPtr hInstance, int threadId)函数将钩子加入到钩子链表中,说明一下四个参数: 90 | //idHook 钩子类型,即确定钩子监听何种消息,上面的代码中设为2,即监听键盘消息并且是线程钩子,如果是全局钩子监听键盘消息应设为13, 91 | //线程钩子监听鼠标消息设为7,全局钩子监听鼠标消息设为14。lpfn 钩子子程的地址指针。如果dwThreadId参数为0 或是一个由别的进程创建的 92 | //线程的标识,lpfn必须指向DLL中的钩子子程。 除此以外,lpfn可以指向当前进程的一段钩子子程代码。钩子函数的入口地址,当钩子钩到任何 93 | //消息后便调用这个函数。hInstance应用程序实例的句柄。标识包含lpfn所指的子程的DLL。如果threadId 标识当前进程创建的一个线程,而且子 94 | //程代码位于当前进程,hInstance必须为NULL。可以很简单的设定其为本应用程序的实例句柄。threaded 与安装的钩子子程相关联的线程的标识符 95 | //如果为0,钩子子程与所有的线程关联,即为全局钩子 96 | //************************************ 97 | //如果SetWindowsHookEx失败 98 | if (hKeyboardHook == 0) 99 | { 100 | Stop(); 101 | throw new Exception("安装键盘钩子失败"); 102 | } 103 | } 104 | } 105 | public void Stop() 106 | { 107 | bool retKeyboard = true; 108 | 109 | 110 | if (hKeyboardHook != 0) 111 | { 112 | retKeyboard = UnhookWindowsHookEx(hKeyboardHook); 113 | hKeyboardHook = 0; 114 | } 115 | 116 | if (!(retKeyboard)) throw new Exception("卸载钩子失败!"); 117 | } 118 | //ToAscii职能的转换指定的虚拟键码和键盘状态的相应字符或字符 119 | [DllImport("user32")] 120 | public static extern int ToAscii(int uVirtKey, //[in] 指定虚拟关键代码进行翻译。 121 | int uScanCode, // [in] 指定的硬件扫描码的关键须翻译成英文。高阶位的这个值设定的关键,如果是(不压) 122 | byte[] lpbKeyState, // [in] 指针,以256字节数组,包含当前键盘的状态。每个元素(字节)的数组包含状态的一个关键。如果高阶位的字节是一套,关键是下跌(按下)。在低比特,如果设置表明,关键是对切换。在此功能,只有肘位的CAPS LOCK键是相关的。在切换状态的NUM个锁和滚动锁定键被忽略。 123 | byte[] lpwTransKey, // [out] 指针的缓冲区收到翻译字符或字符。 124 | int fuState); // [in] Specifies whether a menu is active. This parameter must be 1 if a menu is active, or 0 otherwise. 125 | 126 | //获取按键的状态 127 | [DllImport("user32")] 128 | public static extern int GetKeyboardState(byte[] pbKeyState); 129 | 130 | 131 | [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] 132 | private static extern short GetKeyState(int vKey); 133 | 134 | private const int WM_KEYDOWN = 0x100;//KEYDOWN 135 | private const int WM_KEYUP = 0x101;//KEYUP 136 | private const int WM_SYSKEYDOWN = 0x104;//SYSKEYDOWN 137 | private const int WM_SYSKEYUP = 0x105;//SYSKEYUP 138 | 139 | private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam) 140 | { 141 | //pressedKeys.Clear(); 142 | // 侦听键盘事件 143 | if ((nCode >= 0) && (KeyDownEvent != null || KeyUpEvent != null || KeyPressEvent != null)) 144 | { 145 | KeyboardHookStruct MyKeyboardHookStruct = (KeyboardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyboardHookStruct)); 146 | // raise KeyDown 147 | if (KeyDownEvent != null && (wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN)) 148 | { 149 | Keys keyData = (Keys)MyKeyboardHookStruct.vkCode; 150 | KeyEventArgs e = new KeyEventArgs(keyData); 151 | //switch (e.KeyValue) 152 | //{ 153 | // case (int)Keys.Up: 154 | // ctrlKeyDown[0] = true; 155 | // break; 156 | // case (int)Keys.Down: 157 | // ctrlKeyDown[1] = true; 158 | // break; 159 | // case (int)Keys.Left: 160 | // ctrlKeyDown[2] = true; 161 | // break; 162 | // case (int)Keys.Right: 163 | // ctrlKeyDown[3] = true; 164 | // break; 165 | // case (int)Keys.PageUp: 166 | // ctrlKeyDown[4] = true; 167 | // break; 168 | // case (int)Keys.PageDown: 169 | // ctrlKeyDown[5] = true; 170 | // break; 171 | //} 172 | 173 | keyDown[MyKeyboardHookStruct.vkCode] = true; 174 | 175 | KeyDownEvent(this, e); 176 | } 177 | 178 | //键盘按下 179 | if (KeyPressEvent != null && wParam == WM_KEYDOWN) 180 | { 181 | byte[] keyState = new byte[256]; 182 | GetKeyboardState(keyState); 183 | 184 | byte[] inBuffer = new byte[2]; 185 | if (ToAscii(MyKeyboardHookStruct.vkCode, MyKeyboardHookStruct.scanCode, keyState, inBuffer, MyKeyboardHookStruct.flags) == 1) 186 | { 187 | KeyPressEventArgs e = new KeyPressEventArgs((char)inBuffer[0]); 188 | KeyPressEvent(this, e); 189 | } 190 | } 191 | 192 | // 键盘抬起 193 | if (KeyUpEvent != null && (wParam == WM_KEYUP || wParam == WM_SYSKEYUP)) 194 | { 195 | Keys keyData = (Keys)MyKeyboardHookStruct.vkCode; 196 | KeyEventArgs e = new KeyEventArgs(keyData); 197 | 198 | keyDown[MyKeyboardHookStruct.vkCode] = false; 199 | 200 | //switch (e.KeyValue) 201 | //{ 202 | // case (int)Keys.Up: 203 | // ctrlKeyDown[0] = false; 204 | // break; 205 | // case (int)Keys.Down: 206 | // ctrlKeyDown[1] = false; 207 | // break; 208 | // case (int)Keys.Left: 209 | // ctrlKeyDown[2] = false; 210 | // break; 211 | // case (int)Keys.Right: 212 | // ctrlKeyDown[3] = false; 213 | // break; 214 | // case (int)Keys.PageUp: 215 | // ctrlKeyDown[4] = false; 216 | // break; 217 | // case (int)Keys.PageDown: 218 | // ctrlKeyDown[5] = false; 219 | // break; 220 | //} 221 | 222 | KeyUpEvent(this, e); 223 | } 224 | 225 | 226 | } 227 | int count = 0; 228 | for(int i = 0; i < 6; i++) 229 | { 230 | if (ctrlKeyDown[i]) 231 | { 232 | count++; 233 | } 234 | } 235 | 236 | pressedNum = count; 237 | //int index = -1; 238 | //index = Array.IndexOf(keyDown, true, index + 1); 239 | //while (index != -1) 240 | //{ 241 | // pressedKeys.Add((Keys)index); 242 | // index = Array.IndexOf(keyDown, true, index + 1); 243 | //}; 244 | 245 | //如果返回1,则结束消息,这个消息到此为止,不再传递。 246 | //如果返回0或调用CallNextHookEx函数则消息出了这个钩子继续往下传递,也就是传给消息真正的接受者 247 | return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam); 248 | } 249 | ~KeyboardHook() 250 | { 251 | Stop(); 252 | } 253 | } 254 | } 255 | -------------------------------------------------------------------------------- /DCS_KA/键盘飞行辅助程序/键盘飞行辅助程序.vdproj: -------------------------------------------------------------------------------- 1 | "DeployProject" 2 | { 3 | "VSVersion" = "3:800" 4 | "ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}" 5 | "IsWebType" = "8:FALSE" 6 | "ProjectName" = "8:键盘飞行辅助程序" 7 | "LanguageId" = "3:2052" 8 | "CodePage" = "3:936" 9 | "UILanguageId" = "3:2052" 10 | "SccProjectName" = "8:" 11 | "SccLocalPath" = "8:" 12 | "SccAuxPath" = "8:" 13 | "SccProvider" = "8:" 14 | "Hierarchy" 15 | { 16 | "Entry" 17 | { 18 | "MsmKey" = "8:_09DB9C29F0C3386CB38D61D4016A8959" 19 | "OwnerKey" = "8:_2F1CD7D66AFB4571B04C8ECE8FF9B862" 20 | "MsmSig" = "8:_UNDEFINED" 21 | } 22 | "Entry" 23 | { 24 | "MsmKey" = "8:_2F1CD7D66AFB4571B04C8ECE8FF9B862" 25 | "OwnerKey" = "8:_UNDEFINED" 26 | "MsmSig" = "8:_UNDEFINED" 27 | } 28 | "Entry" 29 | { 30 | "MsmKey" = "8:_9608E9251818498CBE7680E2645962E3" 31 | "OwnerKey" = "8:_UNDEFINED" 32 | "MsmSig" = "8:_UNDEFINED" 33 | } 34 | "Entry" 35 | { 36 | "MsmKey" = "8:_CBD9DC7C24E649E89CA31336D3E9B694" 37 | "OwnerKey" = "8:_UNDEFINED" 38 | "MsmSig" = "8:_UNDEFINED" 39 | } 40 | "Entry" 41 | { 42 | "MsmKey" = "8:_CC959C4258B74636A891F5D785DBCAD1" 43 | "OwnerKey" = "8:_UNDEFINED" 44 | "MsmSig" = "8:_UNDEFINED" 45 | } 46 | "Entry" 47 | { 48 | "MsmKey" = "8:_E2746BFC66DF79C4EB85ABC615B0A846" 49 | "OwnerKey" = "8:_09DB9C29F0C3386CB38D61D4016A8959" 50 | "MsmSig" = "8:_UNDEFINED" 51 | } 52 | "Entry" 53 | { 54 | "MsmKey" = "8:_F2B5030701EA454F9739431D0CC1AC43" 55 | "OwnerKey" = "8:_UNDEFINED" 56 | "MsmSig" = "8:_UNDEFINED" 57 | } 58 | "Entry" 59 | { 60 | "MsmKey" = "8:_UNDEFINED" 61 | "OwnerKey" = "8:_2F1CD7D66AFB4571B04C8ECE8FF9B862" 62 | "MsmSig" = "8:_UNDEFINED" 63 | } 64 | "Entry" 65 | { 66 | "MsmKey" = "8:_UNDEFINED" 67 | "OwnerKey" = "8:_E2746BFC66DF79C4EB85ABC615B0A846" 68 | "MsmSig" = "8:_UNDEFINED" 69 | } 70 | "Entry" 71 | { 72 | "MsmKey" = "8:_UNDEFINED" 73 | "OwnerKey" = "8:_09DB9C29F0C3386CB38D61D4016A8959" 74 | "MsmSig" = "8:_UNDEFINED" 75 | } 76 | } 77 | "Configurations" 78 | { 79 | "Debug" 80 | { 81 | "DisplayName" = "8:Debug" 82 | "IsDebugOnly" = "11:TRUE" 83 | "IsReleaseOnly" = "11:FALSE" 84 | "OutputFilename" = "8:Debug\\键盘飞行辅助程序.msi" 85 | "PackageFilesAs" = "3:2" 86 | "PackageFileSize" = "3:-2147483648" 87 | "CabType" = "3:1" 88 | "Compression" = "3:2" 89 | "SignOutput" = "11:FALSE" 90 | "CertificateFile" = "8:" 91 | "PrivateKeyFile" = "8:" 92 | "TimeStampServer" = "8:" 93 | "InstallerBootstrapper" = "3:2" 94 | "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" 95 | { 96 | "Enabled" = "11:TRUE" 97 | "PromptEnabled" = "11:TRUE" 98 | "PrerequisitesLocation" = "2:1" 99 | "Url" = "8:" 100 | "ComponentsUrl" = "8:" 101 | "Items" 102 | { 103 | "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.7.2" 104 | { 105 | "Name" = "8:Microsoft .NET Framework 4.7.2 (x86 and x64)" 106 | "ProductCode" = "8:.NETFramework,Version=v4.7.2" 107 | } 108 | } 109 | } 110 | } 111 | "Release" 112 | { 113 | "DisplayName" = "8:Release" 114 | "IsDebugOnly" = "11:FALSE" 115 | "IsReleaseOnly" = "11:TRUE" 116 | "OutputFilename" = "8:Release\\键盘飞行辅助程序.msi" 117 | "PackageFilesAs" = "3:2" 118 | "PackageFileSize" = "3:-2147483648" 119 | "CabType" = "3:1" 120 | "Compression" = "3:2" 121 | "SignOutput" = "11:FALSE" 122 | "CertificateFile" = "8:" 123 | "PrivateKeyFile" = "8:" 124 | "TimeStampServer" = "8:" 125 | "InstallerBootstrapper" = "3:2" 126 | "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" 127 | { 128 | "Enabled" = "11:TRUE" 129 | "PromptEnabled" = "11:TRUE" 130 | "PrerequisitesLocation" = "2:1" 131 | "Url" = "8:" 132 | "ComponentsUrl" = "8:" 133 | "Items" 134 | { 135 | "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.7.2" 136 | { 137 | "Name" = "8:Microsoft .NET Framework 4.7.2 (x86 and x64)" 138 | "ProductCode" = "8:.NETFramework,Version=v4.7.2" 139 | } 140 | } 141 | } 142 | } 143 | } 144 | "Deployable" 145 | { 146 | "CustomAction" 147 | { 148 | } 149 | "DefaultFeature" 150 | { 151 | "Name" = "8:DefaultFeature" 152 | "Title" = "8:" 153 | "Description" = "8:" 154 | } 155 | "ExternalPersistence" 156 | { 157 | "LaunchCondition" 158 | { 159 | "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_21FCADB3A25B4C4D8B9DCB1991F0DF6A" 160 | { 161 | "Name" = "8:.NET Framework" 162 | "Message" = "8:[VSDNETMSG]" 163 | "FrameworkVersion" = "8:.NETFramework,Version=v4.7.2" 164 | "AllowLaterVersions" = "11:FALSE" 165 | "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=863262" 166 | } 167 | } 168 | } 169 | "File" 170 | { 171 | "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_09DB9C29F0C3386CB38D61D4016A8959" 172 | { 173 | "AssemblyRegister" = "3:1" 174 | "AssemblyIsInGAC" = "11:TRUE" 175 | "AssemblyAsmDisplayName" = "8:Microsoft.DirectX.DirectInput, Version=1.0.2902.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 176 | "ScatterAssemblies" 177 | { 178 | "_09DB9C29F0C3386CB38D61D4016A8959" 179 | { 180 | "Name" = "8:Microsoft.DirectX.DirectInput.dll" 181 | "Attributes" = "3:512" 182 | } 183 | } 184 | "SourcePath" = "8:Microsoft.DirectX.DirectInput.dll" 185 | "TargetName" = "8:" 186 | "Tag" = "8:" 187 | "Folder" = "8:_F5ECAF8FCF2F48DBBC8785140CD68034" 188 | "Condition" = "8:" 189 | "Transitive" = "11:FALSE" 190 | "Vital" = "11:TRUE" 191 | "ReadOnly" = "11:FALSE" 192 | "Hidden" = "11:FALSE" 193 | "System" = "11:FALSE" 194 | "Permanent" = "11:FALSE" 195 | "SharedLegacy" = "11:FALSE" 196 | "PackageAs" = "3:1" 197 | "Register" = "3:1" 198 | "Exclude" = "11:FALSE" 199 | "IsDependency" = "11:TRUE" 200 | "IsolateTo" = "8:" 201 | } 202 | "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_2F1CD7D66AFB4571B04C8ECE8FF9B862" 203 | { 204 | "AssemblyRegister" = "3:1" 205 | "AssemblyIsInGAC" = "11:FALSE" 206 | "AssemblyAsmDisplayName" = "8:DCS_DataLink, Version=1.0.6.0, Culture=neutral, processorArchitecture=MSIL" 207 | "ScatterAssemblies" 208 | { 209 | "_2F1CD7D66AFB4571B04C8ECE8FF9B862" 210 | { 211 | "Name" = "8:DCS_DataLink.exe" 212 | "Attributes" = "3:512" 213 | } 214 | } 215 | "SourcePath" = "8:..\\DCS_DataLink\\bin\\Debug\\DCS_DataLink.exe" 216 | "TargetName" = "8:" 217 | "Tag" = "8:" 218 | "Folder" = "8:_F5ECAF8FCF2F48DBBC8785140CD68034" 219 | "Condition" = "8:" 220 | "Transitive" = "11:FALSE" 221 | "Vital" = "11:TRUE" 222 | "ReadOnly" = "11:FALSE" 223 | "Hidden" = "11:FALSE" 224 | "System" = "11:FALSE" 225 | "Permanent" = "11:FALSE" 226 | "SharedLegacy" = "11:FALSE" 227 | "PackageAs" = "3:1" 228 | "Register" = "3:1" 229 | "Exclude" = "11:FALSE" 230 | "IsDependency" = "11:FALSE" 231 | "IsolateTo" = "8:" 232 | } 233 | "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9608E9251818498CBE7680E2645962E3" 234 | { 235 | "SourcePath" = "8:..\\DCS_DataLink\\ReadMe.txt" 236 | "TargetName" = "8:ReadMe.txt" 237 | "Tag" = "8:" 238 | "Folder" = "8:_F5ECAF8FCF2F48DBBC8785140CD68034" 239 | "Condition" = "8:" 240 | "Transitive" = "11:FALSE" 241 | "Vital" = "11:TRUE" 242 | "ReadOnly" = "11:FALSE" 243 | "Hidden" = "11:FALSE" 244 | "System" = "11:FALSE" 245 | "Permanent" = "11:FALSE" 246 | "SharedLegacy" = "11:FALSE" 247 | "PackageAs" = "3:1" 248 | "Register" = "3:1" 249 | "Exclude" = "11:FALSE" 250 | "IsDependency" = "11:FALSE" 251 | "IsolateTo" = "8:" 252 | } 253 | "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_CBD9DC7C24E649E89CA31336D3E9B694" 254 | { 255 | "SourcePath" = "8:..\\DCS_DataLink\\DCS-1.ico" 256 | "TargetName" = "8:DCS-1.ico" 257 | "Tag" = "8:" 258 | "Folder" = "8:_F5ECAF8FCF2F48DBBC8785140CD68034" 259 | "Condition" = "8:" 260 | "Transitive" = "11:FALSE" 261 | "Vital" = "11:TRUE" 262 | "ReadOnly" = "11:FALSE" 263 | "Hidden" = "11:FALSE" 264 | "System" = "11:FALSE" 265 | "Permanent" = "11:FALSE" 266 | "SharedLegacy" = "11:FALSE" 267 | "PackageAs" = "3:1" 268 | "Register" = "3:1" 269 | "Exclude" = "11:FALSE" 270 | "IsDependency" = "11:FALSE" 271 | "IsolateTo" = "8:" 272 | } 273 | "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_CC959C4258B74636A891F5D785DBCAD1" 274 | { 275 | "SourcePath" = "8:..\\DCS_DataLink\\bin\\Debug\\DCS_DataLink.exe.config" 276 | "TargetName" = "8:DCS_DataLink.exe.config" 277 | "Tag" = "8:" 278 | "Folder" = "8:_F5ECAF8FCF2F48DBBC8785140CD68034" 279 | "Condition" = "8:" 280 | "Transitive" = "11:FALSE" 281 | "Vital" = "11:TRUE" 282 | "ReadOnly" = "11:FALSE" 283 | "Hidden" = "11:FALSE" 284 | "System" = "11:FALSE" 285 | "Permanent" = "11:FALSE" 286 | "SharedLegacy" = "11:FALSE" 287 | "PackageAs" = "3:1" 288 | "Register" = "3:1" 289 | "Exclude" = "11:FALSE" 290 | "IsDependency" = "11:FALSE" 291 | "IsolateTo" = "8:" 292 | } 293 | "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_E2746BFC66DF79C4EB85ABC615B0A846" 294 | { 295 | "AssemblyRegister" = "3:1" 296 | "AssemblyIsInGAC" = "11:TRUE" 297 | "AssemblyAsmDisplayName" = "8:Microsoft.DirectX, Version=1.0.2902.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 298 | "ScatterAssemblies" 299 | { 300 | "_E2746BFC66DF79C4EB85ABC615B0A846" 301 | { 302 | "Name" = "8:Microsoft.DirectX.dll" 303 | "Attributes" = "3:512" 304 | } 305 | } 306 | "SourcePath" = "8:Microsoft.DirectX.dll" 307 | "TargetName" = "8:" 308 | "Tag" = "8:" 309 | "Folder" = "8:_F5ECAF8FCF2F48DBBC8785140CD68034" 310 | "Condition" = "8:" 311 | "Transitive" = "11:FALSE" 312 | "Vital" = "11:TRUE" 313 | "ReadOnly" = "11:FALSE" 314 | "Hidden" = "11:FALSE" 315 | "System" = "11:FALSE" 316 | "Permanent" = "11:FALSE" 317 | "SharedLegacy" = "11:FALSE" 318 | "PackageAs" = "3:1" 319 | "Register" = "3:1" 320 | "Exclude" = "11:FALSE" 321 | "IsDependency" = "11:TRUE" 322 | "IsolateTo" = "8:" 323 | } 324 | "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_F2B5030701EA454F9739431D0CC1AC43" 325 | { 326 | "SourcePath" = "8:..\\DCS_DataLink\\Export.lua" 327 | "TargetName" = "8:Export.lua" 328 | "Tag" = "8:" 329 | "Folder" = "8:_F5ECAF8FCF2F48DBBC8785140CD68034" 330 | "Condition" = "8:" 331 | "Transitive" = "11:FALSE" 332 | "Vital" = "11:TRUE" 333 | "ReadOnly" = "11:FALSE" 334 | "Hidden" = "11:FALSE" 335 | "System" = "11:FALSE" 336 | "Permanent" = "11:FALSE" 337 | "SharedLegacy" = "11:FALSE" 338 | "PackageAs" = "3:1" 339 | "Register" = "3:1" 340 | "Exclude" = "11:FALSE" 341 | "IsDependency" = "11:FALSE" 342 | "IsolateTo" = "8:" 343 | } 344 | } 345 | "FileType" 346 | { 347 | } 348 | "Folder" 349 | { 350 | "{1525181F-901A-416C-8A58-119130FE478E}:_4B89A00CE8EF4F95B24702787E004168" 351 | { 352 | "Name" = "8:#1916" 353 | "AlwaysCreate" = "11:FALSE" 354 | "Condition" = "8:" 355 | "Transitive" = "11:FALSE" 356 | "Property" = "8:DesktopFolder" 357 | "Folders" 358 | { 359 | } 360 | } 361 | "{1525181F-901A-416C-8A58-119130FE478E}:_54C4C9442B0C4B8D8F1A187399CD6722" 362 | { 363 | "Name" = "8:#1919" 364 | "AlwaysCreate" = "11:FALSE" 365 | "Condition" = "8:" 366 | "Transitive" = "11:FALSE" 367 | "Property" = "8:ProgramMenuFolder" 368 | "Folders" 369 | { 370 | } 371 | } 372 | "{3C67513D-01DD-4637-8A68-80971EB9504F}:_F5ECAF8FCF2F48DBBC8785140CD68034" 373 | { 374 | "DefaultLocation" = "8:[ProgramFilesFolder][Manufacturer]\\[ProductName]" 375 | "Name" = "8:#1925" 376 | "AlwaysCreate" = "11:FALSE" 377 | "Condition" = "8:" 378 | "Transitive" = "11:FALSE" 379 | "Property" = "8:TARGETDIR" 380 | "Folders" 381 | { 382 | } 383 | } 384 | } 385 | "LaunchCondition" 386 | { 387 | } 388 | "Locator" 389 | { 390 | } 391 | "MsiBootstrapper" 392 | { 393 | "LangId" = "3:2052" 394 | "RequiresElevation" = "11:FALSE" 395 | } 396 | "Product" 397 | { 398 | "Name" = "8:Microsoft Visual Studio" 399 | "ProductName" = "8:键盘飞行辅助程序" 400 | "ProductCode" = "8:{E82ECECB-A305-43E4-8152-43D55B530C84}" 401 | "PackageCode" = "8:{8C66094B-809E-4D3C-B265-A00B2D9E8CD4}" 402 | "UpgradeCode" = "8:{55BF4B3D-DC32-48E3-8F13-6C441AD588BE}" 403 | "AspNetVersion" = "8:2.0.50727.0" 404 | "RestartWWWService" = "11:FALSE" 405 | "RemovePreviousVersions" = "11:FALSE" 406 | "DetectNewerInstalledVersion" = "11:TRUE" 407 | "InstallAllUsers" = "11:FALSE" 408 | "ProductVersion" = "8:1.0.7" 409 | "Manufacturer" = "8:Laomai0208" 410 | "ARPHELPTELEPHONE" = "8:" 411 | "ARPHELPLINK" = "8:" 412 | "Title" = "8:键盘飞行辅助程序" 413 | "Subject" = "8:" 414 | "ARPCONTACT" = "8:Laomai0208" 415 | "Keywords" = "8:" 416 | "ARPCOMMENTS" = "8:" 417 | "ARPURLINFOABOUT" = "8:" 418 | "ARPPRODUCTICON" = "8:" 419 | "ARPIconIndex" = "3:0" 420 | "SearchPath" = "8:" 421 | "UseSystemSearchPath" = "11:TRUE" 422 | "TargetPlatform" = "3:0" 423 | "PreBuildEvent" = "8:" 424 | "PostBuildEvent" = "8:" 425 | "RunPostBuildEvent" = "3:0" 426 | } 427 | "Registry" 428 | { 429 | "HKLM" 430 | { 431 | "Keys" 432 | { 433 | "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_71203267381246F6803705F00CB17457" 434 | { 435 | "Name" = "8:Software" 436 | "Condition" = "8:" 437 | "AlwaysCreate" = "11:FALSE" 438 | "DeleteAtUninstall" = "11:FALSE" 439 | "Transitive" = "11:FALSE" 440 | "Keys" 441 | { 442 | "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_C463E0E2D0734943841C2F1360D9A019" 443 | { 444 | "Name" = "8:[Manufacturer]" 445 | "Condition" = "8:" 446 | "AlwaysCreate" = "11:FALSE" 447 | "DeleteAtUninstall" = "11:FALSE" 448 | "Transitive" = "11:FALSE" 449 | "Keys" 450 | { 451 | } 452 | "Values" 453 | { 454 | } 455 | } 456 | } 457 | "Values" 458 | { 459 | } 460 | } 461 | } 462 | } 463 | "HKCU" 464 | { 465 | "Keys" 466 | { 467 | "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_73D1DBE0C64949CF876E29EF3E8179A4" 468 | { 469 | "Name" = "8:Software" 470 | "Condition" = "8:" 471 | "AlwaysCreate" = "11:FALSE" 472 | "DeleteAtUninstall" = "11:FALSE" 473 | "Transitive" = "11:FALSE" 474 | "Keys" 475 | { 476 | "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_C7E21EAEF0D547498F99F111CE925784" 477 | { 478 | "Name" = "8:[Manufacturer]" 479 | "Condition" = "8:" 480 | "AlwaysCreate" = "11:FALSE" 481 | "DeleteAtUninstall" = "11:FALSE" 482 | "Transitive" = "11:FALSE" 483 | "Keys" 484 | { 485 | } 486 | "Values" 487 | { 488 | } 489 | } 490 | } 491 | "Values" 492 | { 493 | } 494 | } 495 | } 496 | } 497 | "HKCR" 498 | { 499 | "Keys" 500 | { 501 | } 502 | } 503 | "HKU" 504 | { 505 | "Keys" 506 | { 507 | } 508 | } 509 | "HKPU" 510 | { 511 | "Keys" 512 | { 513 | } 514 | } 515 | } 516 | "Sequences" 517 | { 518 | } 519 | "Shortcut" 520 | { 521 | "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_03C86AF516924C6BBC1058E6E0912083" 522 | { 523 | "Name" = "8:DCS辅助程序" 524 | "Arguments" = "8:" 525 | "Description" = "8:" 526 | "ShowCmd" = "3:1" 527 | "IconIndex" = "3:0" 528 | "Transitive" = "11:FALSE" 529 | "Target" = "8:_2F1CD7D66AFB4571B04C8ECE8FF9B862" 530 | "Folder" = "8:_4B89A00CE8EF4F95B24702787E004168" 531 | "WorkingFolder" = "8:_F5ECAF8FCF2F48DBBC8785140CD68034" 532 | "Icon" = "8:_CBD9DC7C24E649E89CA31336D3E9B694" 533 | "Feature" = "8:" 534 | } 535 | } 536 | "UserInterface" 537 | { 538 | "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_26FC0D480F104C428D991B6F6A180D06" 539 | { 540 | "Name" = "8:#1901" 541 | "Sequence" = "3:2" 542 | "Attributes" = "3:2" 543 | "Dialogs" 544 | { 545 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_E28C59A6E382488FA59FDB8B7B5C7EAB" 546 | { 547 | "Sequence" = "3:100" 548 | "DisplayName" = "8:进度" 549 | "UseDynamicProperties" = "11:TRUE" 550 | "IsDependency" = "11:FALSE" 551 | "SourcePath" = "8:\\VsdAdminProgressDlg.wid" 552 | "Properties" 553 | { 554 | "BannerBitmap" 555 | { 556 | "Name" = "8:BannerBitmap" 557 | "DisplayName" = "8:#1001" 558 | "Description" = "8:#1101" 559 | "Type" = "3:8" 560 | "ContextData" = "8:Bitmap" 561 | "Attributes" = "3:4" 562 | "Setting" = "3:1" 563 | "UsePlugInResources" = "11:TRUE" 564 | } 565 | "ShowProgress" 566 | { 567 | "Name" = "8:ShowProgress" 568 | "DisplayName" = "8:#1009" 569 | "Description" = "8:#1109" 570 | "Type" = "3:5" 571 | "ContextData" = "8:1;True=1;False=0" 572 | "Attributes" = "3:0" 573 | "Setting" = "3:0" 574 | "Value" = "3:1" 575 | "DefaultValue" = "3:1" 576 | "UsePlugInResources" = "11:TRUE" 577 | } 578 | } 579 | } 580 | } 581 | } 582 | "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_460B5F63205549CBA47067C672CADCC3" 583 | { 584 | "Name" = "8:#1901" 585 | "Sequence" = "3:1" 586 | "Attributes" = "3:2" 587 | "Dialogs" 588 | { 589 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_60F8457DE1A54940BD9DDA46E6EE0FF2" 590 | { 591 | "Sequence" = "3:100" 592 | "DisplayName" = "8:进度" 593 | "UseDynamicProperties" = "11:TRUE" 594 | "IsDependency" = "11:FALSE" 595 | "SourcePath" = "8:\\VsdProgressDlg.wid" 596 | "Properties" 597 | { 598 | "BannerBitmap" 599 | { 600 | "Name" = "8:BannerBitmap" 601 | "DisplayName" = "8:#1001" 602 | "Description" = "8:#1101" 603 | "Type" = "3:8" 604 | "ContextData" = "8:Bitmap" 605 | "Attributes" = "3:4" 606 | "Setting" = "3:1" 607 | "UsePlugInResources" = "11:TRUE" 608 | } 609 | "ShowProgress" 610 | { 611 | "Name" = "8:ShowProgress" 612 | "DisplayName" = "8:#1009" 613 | "Description" = "8:#1109" 614 | "Type" = "3:5" 615 | "ContextData" = "8:1;True=1;False=0" 616 | "Attributes" = "3:0" 617 | "Setting" = "3:0" 618 | "Value" = "3:1" 619 | "DefaultValue" = "3:1" 620 | "UsePlugInResources" = "11:TRUE" 621 | } 622 | } 623 | } 624 | } 625 | } 626 | "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_7ACAF647F3E749E9B8ABC2523870EE31" 627 | { 628 | "Name" = "8:#1900" 629 | "Sequence" = "3:1" 630 | "Attributes" = "3:1" 631 | "Dialogs" 632 | { 633 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_27060CD67E3E4551A877AB826DB03A48" 634 | { 635 | "Sequence" = "3:100" 636 | "DisplayName" = "8:欢迎使用" 637 | "UseDynamicProperties" = "11:TRUE" 638 | "IsDependency" = "11:FALSE" 639 | "SourcePath" = "8:\\VsdWelcomeDlg.wid" 640 | "Properties" 641 | { 642 | "BannerBitmap" 643 | { 644 | "Name" = "8:BannerBitmap" 645 | "DisplayName" = "8:#1001" 646 | "Description" = "8:#1101" 647 | "Type" = "3:8" 648 | "ContextData" = "8:Bitmap" 649 | "Attributes" = "3:4" 650 | "Setting" = "3:1" 651 | "UsePlugInResources" = "11:TRUE" 652 | } 653 | "CopyrightWarning" 654 | { 655 | "Name" = "8:CopyrightWarning" 656 | "DisplayName" = "8:#1002" 657 | "Description" = "8:#1102" 658 | "Type" = "3:3" 659 | "ContextData" = "8:" 660 | "Attributes" = "3:0" 661 | "Setting" = "3:1" 662 | "Value" = "8:#1202" 663 | "DefaultValue" = "8:#1202" 664 | "UsePlugInResources" = "11:TRUE" 665 | } 666 | "Welcome" 667 | { 668 | "Name" = "8:Welcome" 669 | "DisplayName" = "8:#1003" 670 | "Description" = "8:#1103" 671 | "Type" = "3:3" 672 | "ContextData" = "8:" 673 | "Attributes" = "3:0" 674 | "Setting" = "3:1" 675 | "Value" = "8:#1203" 676 | "DefaultValue" = "8:#1203" 677 | "UsePlugInResources" = "11:TRUE" 678 | } 679 | } 680 | } 681 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_4CE7AF88E0514252A69186CEB3C885CD" 682 | { 683 | "Sequence" = "3:300" 684 | "DisplayName" = "8:确认安装" 685 | "UseDynamicProperties" = "11:TRUE" 686 | "IsDependency" = "11:FALSE" 687 | "SourcePath" = "8:\\VsdConfirmDlg.wid" 688 | "Properties" 689 | { 690 | "BannerBitmap" 691 | { 692 | "Name" = "8:BannerBitmap" 693 | "DisplayName" = "8:#1001" 694 | "Description" = "8:#1101" 695 | "Type" = "3:8" 696 | "ContextData" = "8:Bitmap" 697 | "Attributes" = "3:4" 698 | "Setting" = "3:1" 699 | "UsePlugInResources" = "11:TRUE" 700 | } 701 | } 702 | } 703 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_AB9AADA1D22B41D19F273890979A6B84" 704 | { 705 | "Sequence" = "3:200" 706 | "DisplayName" = "8:安装文件夹" 707 | "UseDynamicProperties" = "11:TRUE" 708 | "IsDependency" = "11:FALSE" 709 | "SourcePath" = "8:\\VsdFolderDlg.wid" 710 | "Properties" 711 | { 712 | "BannerBitmap" 713 | { 714 | "Name" = "8:BannerBitmap" 715 | "DisplayName" = "8:#1001" 716 | "Description" = "8:#1101" 717 | "Type" = "3:8" 718 | "ContextData" = "8:Bitmap" 719 | "Attributes" = "3:4" 720 | "Setting" = "3:1" 721 | "UsePlugInResources" = "11:TRUE" 722 | } 723 | "InstallAllUsersVisible" 724 | { 725 | "Name" = "8:InstallAllUsersVisible" 726 | "DisplayName" = "8:#1059" 727 | "Description" = "8:#1159" 728 | "Type" = "3:5" 729 | "ContextData" = "8:1;True=1;False=0" 730 | "Attributes" = "3:0" 731 | "Setting" = "3:0" 732 | "Value" = "3:1" 733 | "DefaultValue" = "3:1" 734 | "UsePlugInResources" = "11:TRUE" 735 | } 736 | } 737 | } 738 | } 739 | } 740 | "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_8C427444168D4A278614714E19D3AB53" 741 | { 742 | "UseDynamicProperties" = "11:FALSE" 743 | "IsDependency" = "11:FALSE" 744 | "SourcePath" = "8:\\VsdBasicDialogs.wim" 745 | } 746 | "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_93569A22121A4217A11215A773394E2C" 747 | { 748 | "Name" = "8:#1900" 749 | "Sequence" = "3:2" 750 | "Attributes" = "3:1" 751 | "Dialogs" 752 | { 753 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_1F8E5EF5025241ABB22FBFB91E526024" 754 | { 755 | "Sequence" = "3:300" 756 | "DisplayName" = "8:确认安装" 757 | "UseDynamicProperties" = "11:TRUE" 758 | "IsDependency" = "11:FALSE" 759 | "SourcePath" = "8:\\VsdAdminConfirmDlg.wid" 760 | "Properties" 761 | { 762 | "BannerBitmap" 763 | { 764 | "Name" = "8:BannerBitmap" 765 | "DisplayName" = "8:#1001" 766 | "Description" = "8:#1101" 767 | "Type" = "3:8" 768 | "ContextData" = "8:Bitmap" 769 | "Attributes" = "3:4" 770 | "Setting" = "3:1" 771 | "UsePlugInResources" = "11:TRUE" 772 | } 773 | } 774 | } 775 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_2F66EE82C6A94C20BFD3426CE3325EB7" 776 | { 777 | "Sequence" = "3:100" 778 | "DisplayName" = "8:欢迎使用" 779 | "UseDynamicProperties" = "11:TRUE" 780 | "IsDependency" = "11:FALSE" 781 | "SourcePath" = "8:\\VsdAdminWelcomeDlg.wid" 782 | "Properties" 783 | { 784 | "BannerBitmap" 785 | { 786 | "Name" = "8:BannerBitmap" 787 | "DisplayName" = "8:#1001" 788 | "Description" = "8:#1101" 789 | "Type" = "3:8" 790 | "ContextData" = "8:Bitmap" 791 | "Attributes" = "3:4" 792 | "Setting" = "3:1" 793 | "UsePlugInResources" = "11:TRUE" 794 | } 795 | "CopyrightWarning" 796 | { 797 | "Name" = "8:CopyrightWarning" 798 | "DisplayName" = "8:#1002" 799 | "Description" = "8:#1102" 800 | "Type" = "3:3" 801 | "ContextData" = "8:" 802 | "Attributes" = "3:0" 803 | "Setting" = "3:1" 804 | "Value" = "8:#1202" 805 | "DefaultValue" = "8:#1202" 806 | "UsePlugInResources" = "11:TRUE" 807 | } 808 | "Welcome" 809 | { 810 | "Name" = "8:Welcome" 811 | "DisplayName" = "8:#1003" 812 | "Description" = "8:#1103" 813 | "Type" = "3:3" 814 | "ContextData" = "8:" 815 | "Attributes" = "3:0" 816 | "Setting" = "3:1" 817 | "Value" = "8:#1203" 818 | "DefaultValue" = "8:#1203" 819 | "UsePlugInResources" = "11:TRUE" 820 | } 821 | } 822 | } 823 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_C1B2CF1EE76D49048134110BDFF173BE" 824 | { 825 | "Sequence" = "3:200" 826 | "DisplayName" = "8:安装文件夹" 827 | "UseDynamicProperties" = "11:TRUE" 828 | "IsDependency" = "11:FALSE" 829 | "SourcePath" = "8:\\VsdAdminFolderDlg.wid" 830 | "Properties" 831 | { 832 | "BannerBitmap" 833 | { 834 | "Name" = "8:BannerBitmap" 835 | "DisplayName" = "8:#1001" 836 | "Description" = "8:#1101" 837 | "Type" = "3:8" 838 | "ContextData" = "8:Bitmap" 839 | "Attributes" = "3:4" 840 | "Setting" = "3:1" 841 | "UsePlugInResources" = "11:TRUE" 842 | } 843 | } 844 | } 845 | } 846 | } 847 | "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_AB166EB6BBC547B5B5A08ECA30843551" 848 | { 849 | "UseDynamicProperties" = "11:FALSE" 850 | "IsDependency" = "11:FALSE" 851 | "SourcePath" = "8:\\VsdUserInterface.wim" 852 | } 853 | "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_E6D34712C732448A9EF9B211D7C076D4" 854 | { 855 | "Name" = "8:#1902" 856 | "Sequence" = "3:1" 857 | "Attributes" = "3:3" 858 | "Dialogs" 859 | { 860 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_D22B48A6A36048C58C4A1093C90427D2" 861 | { 862 | "Sequence" = "3:100" 863 | "DisplayName" = "8:已完成" 864 | "UseDynamicProperties" = "11:TRUE" 865 | "IsDependency" = "11:FALSE" 866 | "SourcePath" = "8:\\VsdFinishedDlg.wid" 867 | "Properties" 868 | { 869 | "BannerBitmap" 870 | { 871 | "Name" = "8:BannerBitmap" 872 | "DisplayName" = "8:#1001" 873 | "Description" = "8:#1101" 874 | "Type" = "3:8" 875 | "ContextData" = "8:Bitmap" 876 | "Attributes" = "3:4" 877 | "Setting" = "3:1" 878 | "UsePlugInResources" = "11:TRUE" 879 | } 880 | "UpdateText" 881 | { 882 | "Name" = "8:UpdateText" 883 | "DisplayName" = "8:#1058" 884 | "Description" = "8:#1158" 885 | "Type" = "3:15" 886 | "ContextData" = "8:" 887 | "Attributes" = "3:0" 888 | "Setting" = "3:1" 889 | "Value" = "8:#1258" 890 | "DefaultValue" = "8:#1258" 891 | "UsePlugInResources" = "11:TRUE" 892 | } 893 | } 894 | } 895 | } 896 | } 897 | "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_E9E775F5801E4C659A9BB51B4CEFE484" 898 | { 899 | "Name" = "8:#1902" 900 | "Sequence" = "3:2" 901 | "Attributes" = "3:3" 902 | "Dialogs" 903 | { 904 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_1BF964F1F7C14BBEBB2BAE6D78AED766" 905 | { 906 | "Sequence" = "3:100" 907 | "DisplayName" = "8:已完成" 908 | "UseDynamicProperties" = "11:TRUE" 909 | "IsDependency" = "11:FALSE" 910 | "SourcePath" = "8:\\VsdAdminFinishedDlg.wid" 911 | "Properties" 912 | { 913 | "BannerBitmap" 914 | { 915 | "Name" = "8:BannerBitmap" 916 | "DisplayName" = "8:#1001" 917 | "Description" = "8:#1101" 918 | "Type" = "3:8" 919 | "ContextData" = "8:Bitmap" 920 | "Attributes" = "3:4" 921 | "Setting" = "3:1" 922 | "UsePlugInResources" = "11:TRUE" 923 | } 924 | } 925 | } 926 | } 927 | } 928 | } 929 | "MergeModule" 930 | { 931 | } 932 | "ProjectOutput" 933 | { 934 | } 935 | } 936 | } 937 | -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/Form1.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace DCS_DataLink 2 | { 3 | partial class Form1 4 | { 5 | /// 6 | /// 必需的设计器变量。 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// 清理所有正在使用的资源。 12 | /// 13 | /// 如果应释放托管资源,为 true;否则为 false。 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows 窗体设计器生成的代码 24 | 25 | /// 26 | /// 设计器支持所需的方法 - 不要 27 | /// 使用代码编辑器修改此方法的内容。 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.components = new System.ComponentModel.Container(); 32 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); 33 | this.button1 = new System.Windows.Forms.Button(); 34 | this.button2 = new System.Windows.Forms.Button(); 35 | this.textBox1 = new System.Windows.Forms.TextBox(); 36 | this.label1 = new System.Windows.Forms.Label(); 37 | this.label2 = new System.Windows.Forms.Label(); 38 | this.pictureBox1 = new System.Windows.Forms.PictureBox(); 39 | this.richTextBox1 = new System.Windows.Forms.RichTextBox(); 40 | this.button5 = new System.Windows.Forms.Button(); 41 | this.trackBar1 = new System.Windows.Forms.TrackBar(); 42 | this.timer1 = new System.Windows.Forms.Timer(this.components); 43 | this.button6 = new System.Windows.Forms.Button(); 44 | this.button7 = new System.Windows.Forms.Button(); 45 | this.button8 = new System.Windows.Forms.Button(); 46 | this.textBoxTrackBar = new System.Windows.Forms.TextBox(); 47 | this.button4 = new System.Windows.Forms.Button(); 48 | this.checkBox1 = new System.Windows.Forms.CheckBox(); 49 | this.checkBox2 = new System.Windows.Forms.CheckBox(); 50 | this.checkBox3 = new System.Windows.Forms.CheckBox(); 51 | this.trackBarSens1 = new System.Windows.Forms.TrackBar(); 52 | this.label3 = new System.Windows.Forms.Label(); 53 | this.textBoxMaxTime1 = new System.Windows.Forms.TextBox(); 54 | this.textBoxPitch = new System.Windows.Forms.TextBox(); 55 | this.textBoxRoll = new System.Windows.Forms.TextBox(); 56 | this.textBoxThrust = new System.Windows.Forms.TextBox(); 57 | this.label4 = new System.Windows.Forms.Label(); 58 | this.label5 = new System.Windows.Forms.Label(); 59 | this.label6 = new System.Windows.Forms.Label(); 60 | this.label7 = new System.Windows.Forms.Label(); 61 | this.label8 = new System.Windows.Forms.Label(); 62 | this.label9 = new System.Windows.Forms.Label(); 63 | this.label10 = new System.Windows.Forms.Label(); 64 | this.label11 = new System.Windows.Forms.Label(); 65 | this.textBoxMaxCtrl1 = new System.Windows.Forms.TextBox(); 66 | this.label12 = new System.Windows.Forms.Label(); 67 | this.trackBarMaxCtrl1 = new System.Windows.Forms.TrackBar(); 68 | this.button3 = new System.Windows.Forms.Button(); 69 | this.PitchKeyPButton = new System.Windows.Forms.Button(); 70 | this.RollKeyPButton = new System.Windows.Forms.Button(); 71 | this.ThrustKeyPButton = new System.Windows.Forms.Button(); 72 | this.ThrustKeyNButton = new System.Windows.Forms.Button(); 73 | this.RollKeyNButton = new System.Windows.Forms.Button(); 74 | this.PitchKeyNButton = new System.Windows.Forms.Button(); 75 | this.label13 = new System.Windows.Forms.Label(); 76 | this.label14 = new System.Windows.Forms.Label(); 77 | this.textBoxMaxCtrl2 = new System.Windows.Forms.TextBox(); 78 | this.label15 = new System.Windows.Forms.Label(); 79 | this.trackBarMaxCtrl2 = new System.Windows.Forms.TrackBar(); 80 | this.textBoxMaxTime2 = new System.Windows.Forms.TextBox(); 81 | this.label16 = new System.Windows.Forms.Label(); 82 | this.trackBarSens2 = new System.Windows.Forms.TrackBar(); 83 | this.textBoxMaxCtrl3 = new System.Windows.Forms.TextBox(); 84 | this.label17 = new System.Windows.Forms.Label(); 85 | this.trackBarMaxCtrl3 = new System.Windows.Forms.TrackBar(); 86 | this.textBoxMaxTime3 = new System.Windows.Forms.TextBox(); 87 | this.label18 = new System.Windows.Forms.Label(); 88 | this.trackBarSens3 = new System.Windows.Forms.TrackBar(); 89 | this.label19 = new System.Windows.Forms.Label(); 90 | this.button9 = new System.Windows.Forms.Button(); 91 | this.textBoxJoystick = new System.Windows.Forms.TextBox(); 92 | this.buttonSelectUp = new System.Windows.Forms.Button(); 93 | this.buttonSelectDown = new System.Windows.Forms.Button(); 94 | this.buttonSelectLeft = new System.Windows.Forms.Button(); 95 | this.buttonSelectRight = new System.Windows.Forms.Button(); 96 | this.button10 = new System.Windows.Forms.Button(); 97 | this.textBoxSelector = new System.Windows.Forms.TextBox(); 98 | this.label20 = new System.Windows.Forms.Label(); 99 | this.trackBarSelector = new System.Windows.Forms.TrackBar(); 100 | this.textBoxSV = new System.Windows.Forms.TextBox(); 101 | this.textBoxSH = new System.Windows.Forms.TextBox(); 102 | this.checkBox4 = new System.Windows.Forms.CheckBox(); 103 | this.button11 = new System.Windows.Forms.Button(); 104 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); 105 | ((System.ComponentModel.ISupportInitialize)(this.trackBar1)).BeginInit(); 106 | ((System.ComponentModel.ISupportInitialize)(this.trackBarSens1)).BeginInit(); 107 | ((System.ComponentModel.ISupportInitialize)(this.trackBarMaxCtrl1)).BeginInit(); 108 | ((System.ComponentModel.ISupportInitialize)(this.trackBarMaxCtrl2)).BeginInit(); 109 | ((System.ComponentModel.ISupportInitialize)(this.trackBarSens2)).BeginInit(); 110 | ((System.ComponentModel.ISupportInitialize)(this.trackBarMaxCtrl3)).BeginInit(); 111 | ((System.ComponentModel.ISupportInitialize)(this.trackBarSens3)).BeginInit(); 112 | ((System.ComponentModel.ISupportInitialize)(this.trackBarSelector)).BeginInit(); 113 | this.SuspendLayout(); 114 | // 115 | // button1 116 | // 117 | this.button1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("button1.BackgroundImage"))); 118 | this.button1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; 119 | this.button1.Location = new System.Drawing.Point(11, 423); 120 | this.button1.Margin = new System.Windows.Forms.Padding(2); 121 | this.button1.Name = "button1"; 122 | this.button1.Size = new System.Drawing.Size(120, 34); 123 | this.button1.TabIndex = 4; 124 | this.button1.Text = "DCS遥控打开"; 125 | this.button1.UseVisualStyleBackColor = true; 126 | this.button1.Click += new System.EventHandler(this.button1_Click); 127 | // 128 | // button2 129 | // 130 | this.button2.Location = new System.Drawing.Point(26, 461); 131 | this.button2.Margin = new System.Windows.Forms.Padding(2); 132 | this.button2.Name = "button2"; 133 | this.button2.Size = new System.Drawing.Size(90, 34); 134 | this.button2.TabIndex = 5; 135 | this.button2.Text = "DCS遥控关闭"; 136 | this.button2.UseVisualStyleBackColor = true; 137 | this.button2.Click += new System.EventHandler(this.button2_Click); 138 | // 139 | // textBox1 140 | // 141 | this.textBox1.Location = new System.Drawing.Point(11, 398); 142 | this.textBox1.Margin = new System.Windows.Forms.Padding(2); 143 | this.textBox1.Name = "textBox1"; 144 | this.textBox1.Size = new System.Drawing.Size(120, 21); 145 | this.textBox1.TabIndex = 6; 146 | this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; 147 | // 148 | // label1 149 | // 150 | this.label1.AutoSize = true; 151 | this.label1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 152 | this.label1.Location = new System.Drawing.Point(281, 9); 153 | this.label1.Name = "label1"; 154 | this.label1.Size = new System.Drawing.Size(204, 17); 155 | this.label1.TabIndex = 7; 156 | this.label1.Text = "DCS World各机型键鼠操作辅助程序"; 157 | // 158 | // label2 159 | // 160 | this.label2.AutoSize = true; 161 | this.label2.Dock = System.Windows.Forms.DockStyle.Right; 162 | this.label2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 163 | this.label2.Location = new System.Drawing.Point(892, 0); 164 | this.label2.Name = "label2"; 165 | this.label2.Size = new System.Drawing.Size(152, 17); 166 | this.label2.TabIndex = 8; 167 | this.label2.Text = "B站飞友特供版@老麦0208"; 168 | // 169 | // pictureBox1 170 | // 171 | this.pictureBox1.BackColor = System.Drawing.SystemColors.Window; 172 | this.pictureBox1.Location = new System.Drawing.Point(560, 12); 173 | this.pictureBox1.Name = "pictureBox1"; 174 | this.pictureBox1.Size = new System.Drawing.Size(200, 200); 175 | this.pictureBox1.TabIndex = 9; 176 | this.pictureBox1.TabStop = false; 177 | // 178 | // richTextBox1 179 | // 180 | this.richTextBox1.BackColor = System.Drawing.SystemColors.InactiveCaption; 181 | this.richTextBox1.Location = new System.Drawing.Point(146, 391); 182 | this.richTextBox1.Name = "richTextBox1"; 183 | this.richTextBox1.Size = new System.Drawing.Size(444, 144); 184 | this.richTextBox1.TabIndex = 12; 185 | this.richTextBox1.Text = ""; 186 | // 187 | // button5 188 | // 189 | this.button5.Location = new System.Drawing.Point(278, 543); 190 | this.button5.Name = "button5"; 191 | this.button5.Size = new System.Drawing.Size(66, 29); 192 | this.button5.TabIndex = 13; 193 | this.button5.Text = "遥测隐藏"; 194 | this.button5.UseVisualStyleBackColor = true; 195 | this.button5.Click += new System.EventHandler(this.button5_Click); 196 | // 197 | // trackBar1 198 | // 199 | this.trackBar1.Location = new System.Drawing.Point(794, 143); 200 | this.trackBar1.Maximum = 99; 201 | this.trackBar1.Minimum = 1; 202 | this.trackBar1.Name = "trackBar1"; 203 | this.trackBar1.Size = new System.Drawing.Size(200, 45); 204 | this.trackBar1.TabIndex = 14; 205 | this.trackBar1.Value = 50; 206 | // 207 | // timer1 208 | // 209 | this.timer1.Interval = 10; 210 | this.timer1.Tick += new System.EventHandler(this.timer1_Tick); 211 | // 212 | // button6 213 | // 214 | this.button6.Location = new System.Drawing.Point(440, 43); 215 | this.button6.Name = "button6"; 216 | this.button6.Size = new System.Drawing.Size(80, 40); 217 | this.button6.TabIndex = 15; 218 | this.button6.Text = "俯仰步进\r\n曲线调节"; 219 | this.button6.UseVisualStyleBackColor = true; 220 | this.button6.Click += new System.EventHandler(this.button6_Click_1); 221 | // 222 | // button7 223 | // 224 | this.button7.Location = new System.Drawing.Point(440, 89); 225 | this.button7.Name = "button7"; 226 | this.button7.Size = new System.Drawing.Size(80, 40); 227 | this.button7.TabIndex = 16; 228 | this.button7.Text = "滚转步进\r\n曲线调节"; 229 | this.button7.UseVisualStyleBackColor = true; 230 | this.button7.Click += new System.EventHandler(this.button7_Click); 231 | // 232 | // button8 233 | // 234 | this.button8.Location = new System.Drawing.Point(440, 135); 235 | this.button8.Name = "button8"; 236 | this.button8.Size = new System.Drawing.Size(80, 40); 237 | this.button8.TabIndex = 17; 238 | this.button8.Text = "油门步进\r\n曲线调节"; 239 | this.button8.UseVisualStyleBackColor = true; 240 | this.button8.Click += new System.EventHandler(this.button8_Click); 241 | // 242 | // textBoxTrackBar 243 | // 244 | this.textBoxTrackBar.BackColor = System.Drawing.SystemColors.Info; 245 | this.textBoxTrackBar.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 246 | this.textBoxTrackBar.ForeColor = System.Drawing.SystemColors.Highlight; 247 | this.textBoxTrackBar.Location = new System.Drawing.Point(875, 118); 248 | this.textBoxTrackBar.Name = "textBoxTrackBar"; 249 | this.textBoxTrackBar.Size = new System.Drawing.Size(40, 23); 250 | this.textBoxTrackBar.TabIndex = 18; 251 | this.textBoxTrackBar.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; 252 | // 253 | // button4 254 | // 255 | this.button4.Location = new System.Drawing.Point(178, 543); 256 | this.button4.Name = "button4"; 257 | this.button4.Size = new System.Drawing.Size(66, 29); 258 | this.button4.TabIndex = 11; 259 | this.button4.Text = "遥测显示"; 260 | this.button4.UseVisualStyleBackColor = true; 261 | this.button4.Click += new System.EventHandler(this.button4_Click); 262 | // 263 | // checkBox1 264 | // 265 | this.checkBox1.AutoSize = true; 266 | this.checkBox1.Location = new System.Drawing.Point(26, 56); 267 | this.checkBox1.Name = "checkBox1"; 268 | this.checkBox1.Size = new System.Drawing.Size(96, 16); 269 | this.checkBox1.TabIndex = 19; 270 | this.checkBox1.Text = "俯仰自动回中"; 271 | this.checkBox1.UseVisualStyleBackColor = true; 272 | // 273 | // checkBox2 274 | // 275 | this.checkBox2.AutoSize = true; 276 | this.checkBox2.Location = new System.Drawing.Point(26, 102); 277 | this.checkBox2.Name = "checkBox2"; 278 | this.checkBox2.Size = new System.Drawing.Size(96, 16); 279 | this.checkBox2.TabIndex = 20; 280 | this.checkBox2.Text = "滚转自动回中"; 281 | this.checkBox2.UseVisualStyleBackColor = true; 282 | // 283 | // checkBox3 284 | // 285 | this.checkBox3.AutoSize = true; 286 | this.checkBox3.Location = new System.Drawing.Point(26, 148); 287 | this.checkBox3.Name = "checkBox3"; 288 | this.checkBox3.Size = new System.Drawing.Size(96, 16); 289 | this.checkBox3.TabIndex = 21; 290 | this.checkBox3.Text = "油门自动回中"; 291 | this.checkBox3.UseVisualStyleBackColor = true; 292 | // 293 | // trackBarSens1 294 | // 295 | this.trackBarSens1.Location = new System.Drawing.Point(26, 260); 296 | this.trackBarSens1.Maximum = 100; 297 | this.trackBarSens1.Minimum = 1; 298 | this.trackBarSens1.Name = "trackBarSens1"; 299 | this.trackBarSens1.Size = new System.Drawing.Size(270, 45); 300 | this.trackBarSens1.TabIndex = 22; 301 | this.trackBarSens1.Value = 1; 302 | // 303 | // label3 304 | // 305 | this.label3.AutoSize = true; 306 | this.label3.Location = new System.Drawing.Point(110, 236); 307 | this.label3.Name = "label3"; 308 | this.label3.Size = new System.Drawing.Size(77, 12); 309 | this.label3.TabIndex = 23; 310 | this.label3.Text = "俯仰总行程:"; 311 | // 312 | // textBoxMaxTime1 313 | // 314 | this.textBoxMaxTime1.BackColor = System.Drawing.SystemColors.Info; 315 | this.textBoxMaxTime1.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 316 | this.textBoxMaxTime1.ForeColor = System.Drawing.SystemColors.Highlight; 317 | this.textBoxMaxTime1.Location = new System.Drawing.Point(212, 231); 318 | this.textBoxMaxTime1.Name = "textBoxMaxTime1"; 319 | this.textBoxMaxTime1.Size = new System.Drawing.Size(40, 23); 320 | this.textBoxMaxTime1.TabIndex = 24; 321 | this.textBoxMaxTime1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; 322 | // 323 | // textBoxPitch 324 | // 325 | this.textBoxPitch.BackColor = System.Drawing.SystemColors.Info; 326 | this.textBoxPitch.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 327 | this.textBoxPitch.ForeColor = System.Drawing.SystemColors.Highlight; 328 | this.textBoxPitch.Location = new System.Drawing.Point(220, 53); 329 | this.textBoxPitch.Name = "textBoxPitch"; 330 | this.textBoxPitch.Size = new System.Drawing.Size(40, 23); 331 | this.textBoxPitch.TabIndex = 25; 332 | this.textBoxPitch.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; 333 | // 334 | // textBoxRoll 335 | // 336 | this.textBoxRoll.BackColor = System.Drawing.SystemColors.Info; 337 | this.textBoxRoll.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 338 | this.textBoxRoll.ForeColor = System.Drawing.SystemColors.Highlight; 339 | this.textBoxRoll.Location = new System.Drawing.Point(220, 99); 340 | this.textBoxRoll.Name = "textBoxRoll"; 341 | this.textBoxRoll.Size = new System.Drawing.Size(40, 23); 342 | this.textBoxRoll.TabIndex = 26; 343 | this.textBoxRoll.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; 344 | // 345 | // textBoxThrust 346 | // 347 | this.textBoxThrust.BackColor = System.Drawing.SystemColors.Info; 348 | this.textBoxThrust.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 349 | this.textBoxThrust.ForeColor = System.Drawing.SystemColors.Highlight; 350 | this.textBoxThrust.Location = new System.Drawing.Point(220, 145); 351 | this.textBoxThrust.Name = "textBoxThrust"; 352 | this.textBoxThrust.Size = new System.Drawing.Size(40, 23); 353 | this.textBoxThrust.TabIndex = 27; 354 | this.textBoxThrust.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; 355 | // 356 | // label4 357 | // 358 | this.label4.AutoSize = true; 359 | this.label4.Location = new System.Drawing.Point(153, 57); 360 | this.label4.Name = "label4"; 361 | this.label4.Size = new System.Drawing.Size(65, 12); 362 | this.label4.TabIndex = 28; 363 | this.label4.Text = "俯仰命令:"; 364 | // 365 | // label5 366 | // 367 | this.label5.AutoSize = true; 368 | this.label5.Location = new System.Drawing.Point(153, 103); 369 | this.label5.Name = "label5"; 370 | this.label5.Size = new System.Drawing.Size(65, 12); 371 | this.label5.TabIndex = 29; 372 | this.label5.Text = "滚转命令:"; 373 | // 374 | // label6 375 | // 376 | this.label6.AutoSize = true; 377 | this.label6.Location = new System.Drawing.Point(153, 149); 378 | this.label6.Name = "label6"; 379 | this.label6.Size = new System.Drawing.Size(65, 12); 380 | this.label6.TabIndex = 30; 381 | this.label6.Text = "油门命令:"; 382 | // 383 | // label7 384 | // 385 | this.label7.AutoSize = true; 386 | this.label7.Location = new System.Drawing.Point(3, 199); 387 | this.label7.Name = "label7"; 388 | this.label7.Size = new System.Drawing.Size(551, 12); 389 | this.label7.TabIndex = 31; 390 | this.label7.Text = "/////////////////////////////////////////////////////////////////////////////////" + 391 | "//////////"; 392 | // 393 | // label8 394 | // 395 | this.label8.AutoSize = true; 396 | this.label8.Location = new System.Drawing.Point(525, 56); 397 | this.label8.Name = "label8"; 398 | this.label8.Size = new System.Drawing.Size(29, 12); 399 | this.label8.TabIndex = 32; 400 | this.label8.Text = ">>>>"; 401 | // 402 | // label9 403 | // 404 | this.label9.AutoSize = true; 405 | this.label9.Location = new System.Drawing.Point(525, 103); 406 | this.label9.Name = "label9"; 407 | this.label9.Size = new System.Drawing.Size(29, 12); 408 | this.label9.TabIndex = 33; 409 | this.label9.Text = ">>>>"; 410 | // 411 | // label10 412 | // 413 | this.label10.AutoSize = true; 414 | this.label10.Location = new System.Drawing.Point(525, 149); 415 | this.label10.Name = "label10"; 416 | this.label10.Size = new System.Drawing.Size(29, 12); 417 | this.label10.TabIndex = 34; 418 | this.label10.Text = ">>>>"; 419 | // 420 | // label11 421 | // 422 | this.label11.AutoSize = true; 423 | this.label11.Location = new System.Drawing.Point(3, 376); 424 | this.label11.Name = "label11"; 425 | this.label11.Size = new System.Drawing.Size(1031, 12); 426 | this.label11.TabIndex = 35; 427 | this.label11.Text = "/////////////////////////////////////////////////////////////////////////////////" + 428 | "////////////////////////////////////////////////////////////////////////////////" + 429 | "//////////"; 430 | // 431 | // textBoxMaxCtrl1 432 | // 433 | this.textBoxMaxCtrl1.BackColor = System.Drawing.SystemColors.Info; 434 | this.textBoxMaxCtrl1.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 435 | this.textBoxMaxCtrl1.ForeColor = System.Drawing.SystemColors.Highlight; 436 | this.textBoxMaxCtrl1.Location = new System.Drawing.Point(212, 293); 437 | this.textBoxMaxCtrl1.Name = "textBoxMaxCtrl1"; 438 | this.textBoxMaxCtrl1.Size = new System.Drawing.Size(40, 23); 439 | this.textBoxMaxCtrl1.TabIndex = 38; 440 | this.textBoxMaxCtrl1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; 441 | // 442 | // label12 443 | // 444 | this.label12.AutoSize = true; 445 | this.label12.Location = new System.Drawing.Point(110, 298); 446 | this.label12.Name = "label12"; 447 | this.label12.Size = new System.Drawing.Size(77, 12); 448 | this.label12.TabIndex = 37; 449 | this.label12.Text = "俯仰限位器:"; 450 | // 451 | // trackBarMaxCtrl1 452 | // 453 | this.trackBarMaxCtrl1.Location = new System.Drawing.Point(26, 322); 454 | this.trackBarMaxCtrl1.Maximum = 100; 455 | this.trackBarMaxCtrl1.Minimum = 1; 456 | this.trackBarMaxCtrl1.Name = "trackBarMaxCtrl1"; 457 | this.trackBarMaxCtrl1.Size = new System.Drawing.Size(270, 45); 458 | this.trackBarMaxCtrl1.TabIndex = 36; 459 | this.trackBarMaxCtrl1.Value = 1; 460 | // 461 | // button3 462 | // 463 | this.button3.Location = new System.Drawing.Point(863, 37); 464 | this.button3.Name = "button3"; 465 | this.button3.Size = new System.Drawing.Size(67, 31); 466 | this.button3.TabIndex = 39; 467 | this.button3.Text = "切换线型"; 468 | this.button3.UseVisualStyleBackColor = true; 469 | this.button3.Click += new System.EventHandler(this.button3_Click); 470 | // 471 | // PitchKeyPButton 472 | // 473 | this.PitchKeyPButton.BackColor = System.Drawing.SystemColors.GradientActiveCaption; 474 | this.PitchKeyPButton.Location = new System.Drawing.Point(302, 48); 475 | this.PitchKeyPButton.Name = "PitchKeyPButton"; 476 | this.PitchKeyPButton.Size = new System.Drawing.Size(58, 33); 477 | this.PitchKeyPButton.TabIndex = 40; 478 | this.PitchKeyPButton.Text = "俯仰+"; 479 | this.PitchKeyPButton.UseVisualStyleBackColor = false; 480 | this.PitchKeyPButton.Click += new System.EventHandler(this.PitchKeyPButton_Click); 481 | // 482 | // RollKeyPButton 483 | // 484 | this.RollKeyPButton.BackColor = System.Drawing.SystemColors.GradientActiveCaption; 485 | this.RollKeyPButton.Location = new System.Drawing.Point(302, 94); 486 | this.RollKeyPButton.Name = "RollKeyPButton"; 487 | this.RollKeyPButton.Size = new System.Drawing.Size(58, 33); 488 | this.RollKeyPButton.TabIndex = 41; 489 | this.RollKeyPButton.Text = "滚转+"; 490 | this.RollKeyPButton.UseVisualStyleBackColor = false; 491 | this.RollKeyPButton.Click += new System.EventHandler(this.RollKeyPButton_Click); 492 | // 493 | // ThrustKeyPButton 494 | // 495 | this.ThrustKeyPButton.BackColor = System.Drawing.SystemColors.GradientActiveCaption; 496 | this.ThrustKeyPButton.Location = new System.Drawing.Point(302, 140); 497 | this.ThrustKeyPButton.Name = "ThrustKeyPButton"; 498 | this.ThrustKeyPButton.Size = new System.Drawing.Size(58, 33); 499 | this.ThrustKeyPButton.TabIndex = 42; 500 | this.ThrustKeyPButton.Text = "油门+"; 501 | this.ThrustKeyPButton.UseVisualStyleBackColor = false; 502 | this.ThrustKeyPButton.Click += new System.EventHandler(this.ThrustKeyPButton_Click); 503 | // 504 | // ThrustKeyNButton 505 | // 506 | this.ThrustKeyNButton.BackColor = System.Drawing.SystemColors.GradientActiveCaption; 507 | this.ThrustKeyNButton.Location = new System.Drawing.Point(366, 140); 508 | this.ThrustKeyNButton.Name = "ThrustKeyNButton"; 509 | this.ThrustKeyNButton.Size = new System.Drawing.Size(58, 33); 510 | this.ThrustKeyNButton.TabIndex = 45; 511 | this.ThrustKeyNButton.Text = "油门-"; 512 | this.ThrustKeyNButton.UseVisualStyleBackColor = false; 513 | this.ThrustKeyNButton.Click += new System.EventHandler(this.ThrustKeyNButton_Click); 514 | // 515 | // RollKeyNButton 516 | // 517 | this.RollKeyNButton.BackColor = System.Drawing.SystemColors.GradientActiveCaption; 518 | this.RollKeyNButton.Location = new System.Drawing.Point(366, 94); 519 | this.RollKeyNButton.Name = "RollKeyNButton"; 520 | this.RollKeyNButton.Size = new System.Drawing.Size(58, 33); 521 | this.RollKeyNButton.TabIndex = 44; 522 | this.RollKeyNButton.Text = "滚转-"; 523 | this.RollKeyNButton.UseVisualStyleBackColor = false; 524 | this.RollKeyNButton.Click += new System.EventHandler(this.RollKeyNButton_Click); 525 | // 526 | // PitchKeyNButton 527 | // 528 | this.PitchKeyNButton.BackColor = System.Drawing.SystemColors.GradientActiveCaption; 529 | this.PitchKeyNButton.Location = new System.Drawing.Point(366, 48); 530 | this.PitchKeyNButton.Name = "PitchKeyNButton"; 531 | this.PitchKeyNButton.Size = new System.Drawing.Size(58, 33); 532 | this.PitchKeyNButton.TabIndex = 43; 533 | this.PitchKeyNButton.Text = "俯仰-"; 534 | this.PitchKeyNButton.UseVisualStyleBackColor = false; 535 | this.PitchKeyNButton.Click += new System.EventHandler(this.PitchKeyNButton_Click); 536 | // 537 | // label13 538 | // 539 | this.label13.AutoSize = true; 540 | this.label13.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 541 | this.label13.Location = new System.Drawing.Point(326, 29); 542 | this.label13.Name = "label13"; 543 | this.label13.Size = new System.Drawing.Size(16, 16); 544 | this.label13.TabIndex = 46; 545 | this.label13.Text = "+"; 546 | // 547 | // label14 548 | // 549 | this.label14.AutoSize = true; 550 | this.label14.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 551 | this.label14.Location = new System.Drawing.Point(389, 29); 552 | this.label14.Name = "label14"; 553 | this.label14.Size = new System.Drawing.Size(16, 16); 554 | this.label14.TabIndex = 47; 555 | this.label14.Text = "-"; 556 | // 557 | // textBoxMaxCtrl2 558 | // 559 | this.textBoxMaxCtrl2.BackColor = System.Drawing.SystemColors.Info; 560 | this.textBoxMaxCtrl2.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 561 | this.textBoxMaxCtrl2.ForeColor = System.Drawing.SystemColors.Highlight; 562 | this.textBoxMaxCtrl2.Location = new System.Drawing.Point(532, 293); 563 | this.textBoxMaxCtrl2.Name = "textBoxMaxCtrl2"; 564 | this.textBoxMaxCtrl2.Size = new System.Drawing.Size(40, 23); 565 | this.textBoxMaxCtrl2.TabIndex = 53; 566 | this.textBoxMaxCtrl2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; 567 | // 568 | // label15 569 | // 570 | this.label15.AutoSize = true; 571 | this.label15.Location = new System.Drawing.Point(422, 298); 572 | this.label15.Name = "label15"; 573 | this.label15.Size = new System.Drawing.Size(77, 12); 574 | this.label15.TabIndex = 52; 575 | this.label15.Text = "滚转限位器:"; 576 | // 577 | // trackBarMaxCtrl2 578 | // 579 | this.trackBarMaxCtrl2.Location = new System.Drawing.Point(346, 322); 580 | this.trackBarMaxCtrl2.Maximum = 100; 581 | this.trackBarMaxCtrl2.Minimum = 1; 582 | this.trackBarMaxCtrl2.Name = "trackBarMaxCtrl2"; 583 | this.trackBarMaxCtrl2.Size = new System.Drawing.Size(270, 45); 584 | this.trackBarMaxCtrl2.TabIndex = 51; 585 | this.trackBarMaxCtrl2.Value = 1; 586 | // 587 | // textBoxMaxTime2 588 | // 589 | this.textBoxMaxTime2.BackColor = System.Drawing.SystemColors.Info; 590 | this.textBoxMaxTime2.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 591 | this.textBoxMaxTime2.ForeColor = System.Drawing.SystemColors.Highlight; 592 | this.textBoxMaxTime2.Location = new System.Drawing.Point(532, 231); 593 | this.textBoxMaxTime2.Name = "textBoxMaxTime2"; 594 | this.textBoxMaxTime2.Size = new System.Drawing.Size(40, 23); 595 | this.textBoxMaxTime2.TabIndex = 50; 596 | this.textBoxMaxTime2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; 597 | // 598 | // label16 599 | // 600 | this.label16.AutoSize = true; 601 | this.label16.Location = new System.Drawing.Point(422, 236); 602 | this.label16.Name = "label16"; 603 | this.label16.Size = new System.Drawing.Size(77, 12); 604 | this.label16.TabIndex = 49; 605 | this.label16.Text = "滚转总行程:"; 606 | // 607 | // trackBarSens2 608 | // 609 | this.trackBarSens2.Location = new System.Drawing.Point(346, 260); 610 | this.trackBarSens2.Maximum = 100; 611 | this.trackBarSens2.Minimum = 1; 612 | this.trackBarSens2.Name = "trackBarSens2"; 613 | this.trackBarSens2.Size = new System.Drawing.Size(270, 45); 614 | this.trackBarSens2.TabIndex = 48; 615 | this.trackBarSens2.Value = 1; 616 | // 617 | // textBoxMaxCtrl3 618 | // 619 | this.textBoxMaxCtrl3.BackColor = System.Drawing.SystemColors.Info; 620 | this.textBoxMaxCtrl3.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 621 | this.textBoxMaxCtrl3.ForeColor = System.Drawing.SystemColors.Highlight; 622 | this.textBoxMaxCtrl3.Location = new System.Drawing.Point(863, 293); 623 | this.textBoxMaxCtrl3.Name = "textBoxMaxCtrl3"; 624 | this.textBoxMaxCtrl3.Size = new System.Drawing.Size(40, 23); 625 | this.textBoxMaxCtrl3.TabIndex = 59; 626 | this.textBoxMaxCtrl3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; 627 | // 628 | // label17 629 | // 630 | this.label17.AutoSize = true; 631 | this.label17.Location = new System.Drawing.Point(763, 298); 632 | this.label17.Name = "label17"; 633 | this.label17.Size = new System.Drawing.Size(77, 12); 634 | this.label17.TabIndex = 58; 635 | this.label17.Text = "油门限位器:"; 636 | // 637 | // trackBarMaxCtrl3 638 | // 639 | this.trackBarMaxCtrl3.Location = new System.Drawing.Point(677, 322); 640 | this.trackBarMaxCtrl3.Maximum = 100; 641 | this.trackBarMaxCtrl3.Minimum = 1; 642 | this.trackBarMaxCtrl3.Name = "trackBarMaxCtrl3"; 643 | this.trackBarMaxCtrl3.Size = new System.Drawing.Size(270, 45); 644 | this.trackBarMaxCtrl3.TabIndex = 57; 645 | this.trackBarMaxCtrl3.Value = 1; 646 | // 647 | // textBoxMaxTime3 648 | // 649 | this.textBoxMaxTime3.BackColor = System.Drawing.SystemColors.Info; 650 | this.textBoxMaxTime3.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 651 | this.textBoxMaxTime3.ForeColor = System.Drawing.SystemColors.Highlight; 652 | this.textBoxMaxTime3.Location = new System.Drawing.Point(863, 231); 653 | this.textBoxMaxTime3.Name = "textBoxMaxTime3"; 654 | this.textBoxMaxTime3.Size = new System.Drawing.Size(40, 23); 655 | this.textBoxMaxTime3.TabIndex = 56; 656 | this.textBoxMaxTime3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; 657 | // 658 | // label18 659 | // 660 | this.label18.AutoSize = true; 661 | this.label18.Location = new System.Drawing.Point(763, 236); 662 | this.label18.Name = "label18"; 663 | this.label18.Size = new System.Drawing.Size(77, 12); 664 | this.label18.TabIndex = 55; 665 | this.label18.Text = "油门总行程:"; 666 | // 667 | // trackBarSens3 668 | // 669 | this.trackBarSens3.Location = new System.Drawing.Point(677, 260); 670 | this.trackBarSens3.Maximum = 100; 671 | this.trackBarSens3.Minimum = 1; 672 | this.trackBarSens3.Name = "trackBarSens3"; 673 | this.trackBarSens3.Size = new System.Drawing.Size(270, 45); 674 | this.trackBarSens3.TabIndex = 54; 675 | this.trackBarSens3.Value = 1; 676 | // 677 | // label19 678 | // 679 | this.label19.AutoSize = true; 680 | this.label19.Location = new System.Drawing.Point(858, 176); 681 | this.label19.Name = "label19"; 682 | this.label19.Size = new System.Drawing.Size(77, 12); 683 | this.label19.TabIndex = 60; 684 | this.label19.Text = "步进曲线调节"; 685 | // 686 | // button9 687 | // 688 | this.button9.Location = new System.Drawing.Point(680, 439); 689 | this.button9.Name = "button9"; 690 | this.button9.Size = new System.Drawing.Size(77, 36); 691 | this.button9.TabIndex = 61; 692 | this.button9.Text = "连接摇杆"; 693 | this.button9.UseVisualStyleBackColor = true; 694 | this.button9.Click += new System.EventHandler(this.button9_Click); 695 | // 696 | // textBoxJoystick 697 | // 698 | this.textBoxJoystick.Location = new System.Drawing.Point(658, 398); 699 | this.textBoxJoystick.Name = "textBoxJoystick"; 700 | this.textBoxJoystick.Size = new System.Drawing.Size(120, 21); 701 | this.textBoxJoystick.TabIndex = 62; 702 | // 703 | // buttonSelectUp 704 | // 705 | this.buttonSelectUp.BackColor = System.Drawing.SystemColors.GradientActiveCaption; 706 | this.buttonSelectUp.Location = new System.Drawing.Point(861, 412); 707 | this.buttonSelectUp.Name = "buttonSelectUp"; 708 | this.buttonSelectUp.Size = new System.Drawing.Size(73, 29); 709 | this.buttonSelectUp.TabIndex = 63; 710 | this.buttonSelectUp.Text = "上"; 711 | this.buttonSelectUp.UseVisualStyleBackColor = false; 712 | this.buttonSelectUp.Click += new System.EventHandler(this.buttonSelectUp_Click); 713 | // 714 | // buttonSelectDown 715 | // 716 | this.buttonSelectDown.BackColor = System.Drawing.SystemColors.GradientActiveCaption; 717 | this.buttonSelectDown.Location = new System.Drawing.Point(861, 482); 718 | this.buttonSelectDown.Name = "buttonSelectDown"; 719 | this.buttonSelectDown.Size = new System.Drawing.Size(73, 29); 720 | this.buttonSelectDown.TabIndex = 64; 721 | this.buttonSelectDown.Text = "下"; 722 | this.buttonSelectDown.UseVisualStyleBackColor = false; 723 | this.buttonSelectDown.Click += new System.EventHandler(this.buttonSelectDown_Click); 724 | // 725 | // buttonSelectLeft 726 | // 727 | this.buttonSelectLeft.BackColor = System.Drawing.SystemColors.GradientActiveCaption; 728 | this.buttonSelectLeft.Location = new System.Drawing.Point(816, 449); 729 | this.buttonSelectLeft.Name = "buttonSelectLeft"; 730 | this.buttonSelectLeft.Size = new System.Drawing.Size(72, 29); 731 | this.buttonSelectLeft.TabIndex = 65; 732 | this.buttonSelectLeft.Text = "左"; 733 | this.buttonSelectLeft.UseVisualStyleBackColor = false; 734 | this.buttonSelectLeft.Click += new System.EventHandler(this.buttonSelectLeft_Click); 735 | // 736 | // buttonSelectRight 737 | // 738 | this.buttonSelectRight.BackColor = System.Drawing.SystemColors.GradientActiveCaption; 739 | this.buttonSelectRight.Location = new System.Drawing.Point(906, 449); 740 | this.buttonSelectRight.Name = "buttonSelectRight"; 741 | this.buttonSelectRight.Size = new System.Drawing.Size(72, 29); 742 | this.buttonSelectRight.TabIndex = 66; 743 | this.buttonSelectRight.Text = "右"; 744 | this.buttonSelectRight.UseVisualStyleBackColor = false; 745 | this.buttonSelectRight.Click += new System.EventHandler(this.buttonSelectRight_Click); 746 | // 747 | // button10 748 | // 749 | this.button10.Location = new System.Drawing.Point(680, 482); 750 | this.button10.Name = "button10"; 751 | this.button10.Size = new System.Drawing.Size(77, 36); 752 | this.button10.TabIndex = 67; 753 | this.button10.Text = "断开摇杆"; 754 | this.button10.UseVisualStyleBackColor = true; 755 | this.button10.Click += new System.EventHandler(this.button10_Click); 756 | // 757 | // textBoxSelector 758 | // 759 | this.textBoxSelector.BackColor = System.Drawing.SystemColors.Info; 760 | this.textBoxSelector.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 761 | this.textBoxSelector.ForeColor = System.Drawing.SystemColors.Highlight; 762 | this.textBoxSelector.Location = new System.Drawing.Point(935, 525); 763 | this.textBoxSelector.Name = "textBoxSelector"; 764 | this.textBoxSelector.Size = new System.Drawing.Size(40, 23); 765 | this.textBoxSelector.TabIndex = 70; 766 | this.textBoxSelector.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; 767 | // 768 | // label20 769 | // 770 | this.label20.AutoSize = true; 771 | this.label20.Location = new System.Drawing.Point(852, 530); 772 | this.label20.Name = "label20"; 773 | this.label20.Size = new System.Drawing.Size(77, 12); 774 | this.label20.TabIndex = 69; 775 | this.label20.Text = "游标总行程:"; 776 | // 777 | // trackBarSelector 778 | // 779 | this.trackBarSelector.Location = new System.Drawing.Point(775, 550); 780 | this.trackBarSelector.Maximum = 100; 781 | this.trackBarSelector.Minimum = 1; 782 | this.trackBarSelector.Name = "trackBarSelector"; 783 | this.trackBarSelector.Size = new System.Drawing.Size(270, 45); 784 | this.trackBarSelector.TabIndex = 68; 785 | this.trackBarSelector.Value = 1; 786 | // 787 | // textBoxSV 788 | // 789 | this.textBoxSV.Location = new System.Drawing.Point(861, 391); 790 | this.textBoxSV.Name = "textBoxSV"; 791 | this.textBoxSV.Size = new System.Drawing.Size(73, 21); 792 | this.textBoxSV.TabIndex = 71; 793 | // 794 | // textBoxSH 795 | // 796 | this.textBoxSH.Location = new System.Drawing.Point(984, 454); 797 | this.textBoxSH.Name = "textBoxSH"; 798 | this.textBoxSH.Size = new System.Drawing.Size(58, 21); 799 | this.textBoxSH.TabIndex = 72; 800 | // 801 | // checkBox4 802 | // 803 | this.checkBox4.AutoSize = true; 804 | this.checkBox4.Location = new System.Drawing.Point(673, 550); 805 | this.checkBox4.Name = "checkBox4"; 806 | this.checkBox4.Size = new System.Drawing.Size(96, 16); 807 | this.checkBox4.TabIndex = 73; 808 | this.checkBox4.Text = "游标自动回中"; 809 | this.checkBox4.UseVisualStyleBackColor = true; 810 | // 811 | // button11 812 | // 813 | this.button11.Location = new System.Drawing.Point(418, 541); 814 | this.button11.Name = "button11"; 815 | this.button11.Size = new System.Drawing.Size(81, 31); 816 | this.button11.TabIndex = 74; 817 | this.button11.Text = "打开AAR辅助"; 818 | this.button11.UseVisualStyleBackColor = true; 819 | this.button11.Click += new System.EventHandler(this.button11_Click); 820 | // 821 | // Form1 822 | // 823 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 824 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 825 | this.AutoSize = true; 826 | this.BackColor = System.Drawing.SystemColors.ActiveCaption; 827 | this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; 828 | this.ClientSize = new System.Drawing.Size(1044, 577); 829 | this.Controls.Add(this.button11); 830 | this.Controls.Add(this.checkBox4); 831 | this.Controls.Add(this.textBoxSH); 832 | this.Controls.Add(this.textBoxSV); 833 | this.Controls.Add(this.textBoxSelector); 834 | this.Controls.Add(this.label20); 835 | this.Controls.Add(this.trackBarSelector); 836 | this.Controls.Add(this.button10); 837 | this.Controls.Add(this.buttonSelectRight); 838 | this.Controls.Add(this.buttonSelectLeft); 839 | this.Controls.Add(this.buttonSelectDown); 840 | this.Controls.Add(this.buttonSelectUp); 841 | this.Controls.Add(this.textBoxJoystick); 842 | this.Controls.Add(this.button9); 843 | this.Controls.Add(this.label19); 844 | this.Controls.Add(this.textBoxMaxCtrl3); 845 | this.Controls.Add(this.label17); 846 | this.Controls.Add(this.trackBarMaxCtrl3); 847 | this.Controls.Add(this.textBoxMaxTime3); 848 | this.Controls.Add(this.label18); 849 | this.Controls.Add(this.trackBarSens3); 850 | this.Controls.Add(this.textBoxMaxCtrl2); 851 | this.Controls.Add(this.label15); 852 | this.Controls.Add(this.trackBarMaxCtrl2); 853 | this.Controls.Add(this.textBoxMaxTime2); 854 | this.Controls.Add(this.label16); 855 | this.Controls.Add(this.trackBarSens2); 856 | this.Controls.Add(this.label14); 857 | this.Controls.Add(this.label13); 858 | this.Controls.Add(this.ThrustKeyNButton); 859 | this.Controls.Add(this.RollKeyNButton); 860 | this.Controls.Add(this.PitchKeyNButton); 861 | this.Controls.Add(this.ThrustKeyPButton); 862 | this.Controls.Add(this.RollKeyPButton); 863 | this.Controls.Add(this.PitchKeyPButton); 864 | this.Controls.Add(this.button3); 865 | this.Controls.Add(this.textBoxMaxCtrl1); 866 | this.Controls.Add(this.label12); 867 | this.Controls.Add(this.trackBarMaxCtrl1); 868 | this.Controls.Add(this.label11); 869 | this.Controls.Add(this.label10); 870 | this.Controls.Add(this.label9); 871 | this.Controls.Add(this.label8); 872 | this.Controls.Add(this.label7); 873 | this.Controls.Add(this.label6); 874 | this.Controls.Add(this.label5); 875 | this.Controls.Add(this.label4); 876 | this.Controls.Add(this.textBoxThrust); 877 | this.Controls.Add(this.textBoxRoll); 878 | this.Controls.Add(this.textBoxPitch); 879 | this.Controls.Add(this.textBoxMaxTime1); 880 | this.Controls.Add(this.label3); 881 | this.Controls.Add(this.trackBarSens1); 882 | this.Controls.Add(this.checkBox3); 883 | this.Controls.Add(this.checkBox2); 884 | this.Controls.Add(this.checkBox1); 885 | this.Controls.Add(this.textBoxTrackBar); 886 | this.Controls.Add(this.button8); 887 | this.Controls.Add(this.button7); 888 | this.Controls.Add(this.button6); 889 | this.Controls.Add(this.trackBar1); 890 | this.Controls.Add(this.button5); 891 | this.Controls.Add(this.richTextBox1); 892 | this.Controls.Add(this.button4); 893 | this.Controls.Add(this.pictureBox1); 894 | this.Controls.Add(this.label2); 895 | this.Controls.Add(this.label1); 896 | this.Controls.Add(this.textBox1); 897 | this.Controls.Add(this.button2); 898 | this.Controls.Add(this.button1); 899 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 900 | this.Margin = new System.Windows.Forms.Padding(2); 901 | this.Name = "Form1"; 902 | this.Text = "键盘飞行辅助程序V1.0.7beta"; 903 | this.Load += new System.EventHandler(this.Form1_Load); 904 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); 905 | ((System.ComponentModel.ISupportInitialize)(this.trackBar1)).EndInit(); 906 | ((System.ComponentModel.ISupportInitialize)(this.trackBarSens1)).EndInit(); 907 | ((System.ComponentModel.ISupportInitialize)(this.trackBarMaxCtrl1)).EndInit(); 908 | ((System.ComponentModel.ISupportInitialize)(this.trackBarMaxCtrl2)).EndInit(); 909 | ((System.ComponentModel.ISupportInitialize)(this.trackBarSens2)).EndInit(); 910 | ((System.ComponentModel.ISupportInitialize)(this.trackBarMaxCtrl3)).EndInit(); 911 | ((System.ComponentModel.ISupportInitialize)(this.trackBarSens3)).EndInit(); 912 | ((System.ComponentModel.ISupportInitialize)(this.trackBarSelector)).EndInit(); 913 | this.ResumeLayout(false); 914 | this.PerformLayout(); 915 | 916 | } 917 | 918 | #endregion 919 | private System.Windows.Forms.Button button1; 920 | private System.Windows.Forms.Button button2; 921 | private System.Windows.Forms.TextBox textBox1; 922 | private System.Windows.Forms.Label label1; 923 | private System.Windows.Forms.Label label2; 924 | private System.Windows.Forms.PictureBox pictureBox1; 925 | private System.Windows.Forms.RichTextBox richTextBox1; 926 | private System.Windows.Forms.Button button5; 927 | private System.Windows.Forms.TrackBar trackBar1; 928 | private System.Windows.Forms.Timer timer1; 929 | private System.Windows.Forms.Button button6; 930 | private System.Windows.Forms.Button button7; 931 | private System.Windows.Forms.Button button8; 932 | private System.Windows.Forms.TextBox textBoxTrackBar; 933 | private System.Windows.Forms.Button button4; 934 | private System.Windows.Forms.CheckBox checkBox1; 935 | private System.Windows.Forms.CheckBox checkBox2; 936 | private System.Windows.Forms.CheckBox checkBox3; 937 | private System.Windows.Forms.TrackBar trackBarSens1; 938 | private System.Windows.Forms.Label label3; 939 | private System.Windows.Forms.TextBox textBoxMaxTime1; 940 | private System.Windows.Forms.TextBox textBoxPitch; 941 | private System.Windows.Forms.TextBox textBoxRoll; 942 | private System.Windows.Forms.TextBox textBoxThrust; 943 | private System.Windows.Forms.Label label4; 944 | private System.Windows.Forms.Label label5; 945 | private System.Windows.Forms.Label label6; 946 | private System.Windows.Forms.Label label7; 947 | private System.Windows.Forms.Label label8; 948 | private System.Windows.Forms.Label label9; 949 | private System.Windows.Forms.Label label10; 950 | private System.Windows.Forms.Label label11; 951 | private System.Windows.Forms.TextBox textBoxMaxCtrl1; 952 | private System.Windows.Forms.Label label12; 953 | private System.Windows.Forms.TrackBar trackBarMaxCtrl1; 954 | private System.Windows.Forms.Button button3; 955 | private System.Windows.Forms.Button PitchKeyPButton; 956 | private System.Windows.Forms.Button RollKeyPButton; 957 | private System.Windows.Forms.Button ThrustKeyPButton; 958 | private System.Windows.Forms.Button ThrustKeyNButton; 959 | private System.Windows.Forms.Button RollKeyNButton; 960 | private System.Windows.Forms.Button PitchKeyNButton; 961 | private System.Windows.Forms.Label label13; 962 | private System.Windows.Forms.Label label14; 963 | private System.Windows.Forms.TextBox textBoxMaxCtrl2; 964 | private System.Windows.Forms.Label label15; 965 | private System.Windows.Forms.TrackBar trackBarMaxCtrl2; 966 | private System.Windows.Forms.TextBox textBoxMaxTime2; 967 | private System.Windows.Forms.Label label16; 968 | private System.Windows.Forms.TrackBar trackBarSens2; 969 | private System.Windows.Forms.TextBox textBoxMaxCtrl3; 970 | private System.Windows.Forms.Label label17; 971 | private System.Windows.Forms.TrackBar trackBarMaxCtrl3; 972 | private System.Windows.Forms.TextBox textBoxMaxTime3; 973 | private System.Windows.Forms.Label label18; 974 | private System.Windows.Forms.TrackBar trackBarSens3; 975 | private System.Windows.Forms.Label label19; 976 | private System.Windows.Forms.Button button9; 977 | private System.Windows.Forms.TextBox textBoxJoystick; 978 | private System.Windows.Forms.Button buttonSelectUp; 979 | private System.Windows.Forms.Button buttonSelectDown; 980 | private System.Windows.Forms.Button buttonSelectLeft; 981 | private System.Windows.Forms.Button buttonSelectRight; 982 | private System.Windows.Forms.Button button10; 983 | private System.Windows.Forms.TextBox textBoxSelector; 984 | private System.Windows.Forms.Label label20; 985 | private System.Windows.Forms.TrackBar trackBarSelector; 986 | private System.Windows.Forms.TextBox textBoxSV; 987 | private System.Windows.Forms.TextBox textBoxSH; 988 | private System.Windows.Forms.CheckBox checkBox4; 989 | private System.Windows.Forms.Button button11; 990 | } 991 | } 992 | 993 | -------------------------------------------------------------------------------- /DCS_KA/DCS_DataLink/Export.lua: -------------------------------------------------------------------------------- 1 | --- DO NOT EDIT. 2 | --- This file is for reference purposes only 3 | --- All user modifications should go to $HOME\Saved Games\DCS\Scripts\Export.lua 4 | 5 | -- Data export script for DCS, version 1.2. 6 | -- Copyright (C) 2006-2014, Eagle Dynamics. 7 | -- See http://www.lua.org for Lua script system info 8 | -- We recommend to use the LuaSocket addon (http://www.tecgraf.puc-rio.br/luasocket) 9 | -- to use standard network protocols in Lua scripts. 10 | -- LuaSocket 2.0 files (*.dll and *.lua) are supplied in the Scripts/LuaSocket folder 11 | -- and in the installation folder of the DCS. 12 | 13 | -- Expand the functionality of following functions for your external application needs. 14 | -- Look into Saved Games\DCS\Logs\dcs.log for this script errors, please. 15 | 16 | -- copyright @ DamienLIU 20200730 17 | -- version 1.0.1 18 | 19 | --[[ 20 | -- Uncomment if using Vector class from the Scripts\Vector.lua file 21 | local lfs = require('lfs') 22 | LUA_PATH = "?;?.lua;"..lfs.currentdir().."/Scripts/?.lua" 23 | require 'Vector' 24 | -- See the Scripts\Vector.lua file for Vector class details, please. 25 | --]] 26 | 27 | local default_output_file = nil 28 | 29 | function LuaExportStart() 30 | -- Works once just before mission start. 31 | -- Make initializations of your files or connections here. 32 | -- For example: 33 | -- 1) File 34 | 35 | -- default_output_file = io.open("D:/Export.log", "w") 36 | -- default_output_file:write("test\n") 37 | 38 | -- 2) Socket 39 | package.path = package.path..";"..lfs.currentdir().."/LuaSocket/?.lua" 40 | package.cpath = package.cpath..";"..lfs.currentdir().."/LuaSocket/?.dll" 41 | socket = require("socket") 42 | host = "127.0.0.1" 43 | port1 = 12345 44 | port2 = 12344 45 | 46 | socket = require("socket") 47 | 48 | -- send 49 | c = socket.udp() 50 | c:setpeername(host, port1) 51 | c:settimeout(.01) -- set the timeout for reading the socket 52 | 53 | -- receive 54 | d = socket.udp() 55 | d:setsockname('*', port2) 56 | d:settimeout(0) -- set the timeout for reading the socket 57 | 58 | end 59 | 60 | function LuaExportBeforeNextFrame() 61 | ProcessInput() 62 | -- LoSetCommand(3, 0.25) 63 | -- LoSetCommand(64,1) 64 | -- Call Lo*() functions to set data to Lock On here 65 | -- For example: 66 | -- LoSetCommand(3, 0.25) -- rudder 0.25 right 67 | -- LoSetCommand(64) -- increase thrust 68 | 69 | 70 | end 71 | 72 | function LuaExportAfterNextFrame() 73 | -- Works just after every simulation frame. 74 | 75 | -- Call Lo*() functions to get data from Lock On here. 76 | -- For example: 77 | 78 | local t = LoGetModelTime() 79 | local name = LoGetPilotName() 80 | local altBar = LoGetAltitudeAboveSeaLevel() 81 | local altRad = LoGetAltitudeAboveGroundLevel() 82 | local pitch, bank, yaw = LoGetADIPitchBankYaw() 83 | local engine = LoGetEngineInfo() 84 | local HSI = LoGetControlPanel_HSI() 85 | local IAS = LoGetIndicatedAirSpeed() 86 | local ID = LoGetPlayerPlaneId() 87 | local o = LoGetObjectById(ID) 88 | local Lat = o.LatLongAlt.Lat 89 | local Long = o.LatLongAlt.Long 90 | local Alt = o.LatLongAlt.Alt 91 | local x = o.Position.x 92 | local y = o.Position.y 93 | local z = o.Position.z 94 | local tas = LoGetTrueAirSpeed() 95 | local mssage = "" 96 | local obj = LoGetWorldObjects() 97 | 98 | if x==nil then 99 | x=0 100 | end 101 | 102 | if y==nil then 103 | y=0 104 | end 105 | if z==nil then 106 | z=0 107 | end 108 | 109 | -- for k,v in pairs(o) do 110 | -- p=string.format("%s",v.Country) 111 | -- end 112 | 113 | p = o.Type.level4 114 | 115 | if p==nil then 116 | p = "bug" 117 | end 118 | 119 | --msg = string.format("t=%.2f, IAS = %.2f, ID=%.0f, Long=%.4f, x=%.2f, y=%.2f, z=%.2f, planeName:%s",t,IAS,ID,Long,x,y,z,p) 120 | 121 | 122 | for k,v in pairs(obj) do 123 | --socket.try(c:send(string.format("t = %.2f, ID = %d, name = %s, country = %s(%s), LatLongAlt = (%f, %f, %f), heading = %f\n", t, k, v.Name, v.Country, v.Coalition, v.LatLongAlt.x, v.LatLongAlt.Long, v.LatLongAlt.Alt, v.Heading))) 124 | p1 = v.Type.level4 125 | if p1==nil then 126 | p1 = "bug" 127 | end 128 | 129 | p2 = v.Name 130 | if p2 ==nil then 131 | p2 = "NilName" 132 | end 133 | 134 | p3 = v.Country 135 | if p3 ==nil then 136 | p3 = "NilCountry" 137 | end 138 | 139 | p4 = v.LatLongAlt 140 | if p4 ==nil then 141 | p4 = {0,0,0} 142 | end 143 | 144 | p5 = v.Position 145 | if p5 ==nil then 146 | p5 = {0,0,0} 147 | end 148 | 149 | p6 = v.Heading 150 | if p6 ==nil then 151 | p6 = 0 152 | end 153 | 154 | p7 = v.Pitch 155 | if p7 ==nil then 156 | p7 = 0 157 | end 158 | 159 | p8 = v.Bank 160 | if p8 ==nil then 161 | p8 = 0 162 | end 163 | 164 | 165 | 166 | 167 | --[[ 168 | if p1 == 28 169 | then 170 | msg = string.format("TankerInfo: planeID:%s, name = %s, country = %s, LatLongAlt = (%f, %f, %f), Heading = %f", p1, p2, p3, p4.Lat,p4.Long,p4.Alt,p5) 171 | else 172 | msg = string.format("FighterInfo: planeID:%s, name = %s, country = %s, LatLongAlt = (%f, %f, %f), Heading = %f", p1, p2, p3, p4.Lat,p4.Long,p4.Alt,p5) 173 | end 174 | --]] 175 | 176 | if k == ID 177 | then 178 | msg = string.format("%f,%f,%f,%f,%f,%f,%f;",t, p5.x, p5.y, p5.z, p6, p7, p8) 179 | mssage = table.concat({mssage,msg}) 180 | elseif p1 == 28 181 | then 182 | msg = string.format("%f,%f,%f,%f,%f,%f,%f",t, p5.x, p5.y, p5.z, p6, p7, p8) 183 | mssage = table.concat({mssage,msg}) 184 | else 185 | end 186 | 187 | -- msg = string.format("FighterInfo: planeID:%s, name = %s, country = %s, LatLongAlt = (%f, %f, %f), Position = (%f, %f, %f), Heading = %f, Pitch = %f, Bank = %f", ID, p2, p3, p4.Lat, p4.Long, p4.Alt, p5.x, p5.y, p5.z, p6, p7, p8) 188 | -- msg = table.concat({msg,"\n"}) 189 | 190 | 191 | end 192 | 193 | socket.try(c:send(string.format("tm%.2f",t))) 194 | socket.try(c:send(string.format("va%.2f",tas))) 195 | socket.try(c:send(string.format("ms%s",mssage))) 196 | 197 | 198 | 199 | 200 | -- Then send data to your file or to your receiving program: 201 | -- 1) File 202 | -- if default_output_file then 203 | -- default_output_file:write(string.format("t = %.2f, name = %s, altBar = %.2f, altRad = %.2f, pitch = %.2f, bank = %.2f, yaw = %.2f \n", t, name, altBar, altRad, 57.3*pitch, 57.3*bank, 57.3*yaw)) 204 | -- default_output_file:write(string.format("t = %.2f ,RPM left = %f fuel_internal = %f \n",t,engine.RPM.left,engine.fuel_internal)) 205 | -- default_output_file:write(string.format("ADF = %f RMI = %f\n ",57.3*HSI.ADF,57.3*HSI.RMI)) 206 | -- end 207 | -- 2) Socket 208 | -- socket.try(c:send("you\n"))) 209 | --socket.try(c:send(string.format(" t=%.2f, IAS = %.2f, ID=%.0f, Long=%.4f, x=%.2f, y=%.2f, z=%.2f",t,IAS,ID,Long,x,y,z))) 210 | -- socket.try(c:send(string.format("t = %.2f, name = %s, Long = %.2f, Lat = %.2f, Alt = %.2f\n",t,name, Long, Lat, Alt))) 211 | -- socket.try(c:send(string.format("t = %.2f, name = %s, altBar = %.2f, alrRad = %.2f, pitch = %.2f, bank = %.2f, yaw = %.2f, Hp = %.2f\n", t, name, altRad, altBar, pitch, bank, yaw, engine.HydraulicPressure.left))) 212 | -- ProcessInput() 213 | end 214 | 215 | function LuaExportStop() 216 | -- Works once just after mission stop. 217 | -- Close files and/or connections here. 218 | -- 1) File 219 | -- if default_output_file then 220 | -- default_output_file:close() 221 | -- default_output_file = nil 222 | -- end 223 | -- 2) Socket 224 | socket.try(c:send("quit")) -- to close the listener socket 225 | c:close() 226 | -- local lfs = require("lfs") 227 | -- local io = require("io") 228 | -- f = io.open("D:/input.txt", "w") 229 | -- if f then 230 | -- f:write("\n\n*** fenv:\n") 231 | -- for k, v in pairs(getfenv()) do 232 | -- f:write(tostring(k)) 233 | -- f:write("\t") 234 | -- f:write(tostring(v)) 235 | -- f:write("\n") 236 | -- end 237 | -- f:close() 238 | -- end 239 | 240 | f:close() 241 | end 242 | 243 | function LuaExportActivityNextEvent(t) 244 | local tNext = t 245 | 246 | -- Put your event code here and increase tNext for the next event 247 | -- so this function will be called automatically at your custom 248 | -- model times. 249 | -- If tNext == t then the activity will be terminated. 250 | 251 | -- For example: 252 | -- 1) File 253 | -- if default_output_file then 254 | -- local o = LoGetWorldObjects() 255 | -- for k,v in pairs(o) do 256 | -- default_output_file:write(string.format("t = %.2f, ID = %d, name = %s, country = %s(%s), LatLongAlt = (%f, %f, %f), heading = %f\n", t, k, v.Name, v.Country, v.Coalition, v.LatLongAlt.Lat, v.LatLongAlt.Long, v.LatLongAlt.Alt, v.Heading)) 257 | -- end 258 | -- local trg = LoGetLockedTargetInformation() 259 | -- default_output_file:write(string.format("locked targets ,time = %.2f\n",t)) 260 | -- for i,cur in pairs(trg) do 261 | -- default_output_file:write(string.format("ID = %d, position = (%f,%f,%f) , V = (%f,%f,%f),flags = 0x%x\n",cur.ID,cur.position.p.x,cur.position.p.y,cur.position.p.z,cur.velocity.x,cur.velocity.y,cur.velocity.z,cur.flags)) 262 | -- end 263 | -- local route = LoGetRoute() 264 | -- default_output_file:write(string.format("t = %f\n",t)) 265 | -- if route then 266 | -- default_output_file:write(string.format("Goto_point :\n point_num = %d ,wpt_pos = (%f, %f ,%f) ,next %d\n",route.goto_point.this_point_num,route.goto_point.world_point.x,route.goto_point.world_point.y,route.goto_point.world_point.z,route.goto_point.next_point_num)) 267 | -- default_output_file:write(string.format("Route points:\n")) 268 | -- for num,wpt in pairs(route.route) do 269 | -- default_output_file:write(string.format("point_num = %d ,wpt_pos = (%f, %f ,%f) ,next %d\n",wpt.this_point_num,wpt.world_point.x,wpt.world_point.y,wpt.world_point.z,wpt.next_point_num)) 270 | -- end 271 | -- end 272 | 273 | -- local stations = LoGetPayloadInfo() 274 | -- if stations then 275 | -- default_output_file:write(string.format("Current = %d \n",stations.CurrentStation)) 276 | 277 | -- for i_st,st in pairs (stations.Stations) do 278 | -- local name = LoGetNameByType(st.weapon.level1,st.weapon.level2,st.weapon.level3,st.weapon.level4); 279 | -- if name then 280 | -- default_output_file:write(string.format("weapon = %s ,count = %d \n",name,st.count)) 281 | -- else 282 | -- default_output_file:write(string.format("weapon = {%d,%d,%d,%d} ,count = %d \n", st.weapon.level1,st.weapon.level2,st.weapon.level3,st.weapon.level4,st.count)) 283 | -- end 284 | -- end 285 | -- end 286 | 287 | -- local Nav = LoGetNavigationInfo() 288 | -- if Nav then 289 | -- default_output_file:write(string.format("%s ,%s ,ACS: %s\n",Nav.SystemMode.master,Nav.SystemMode.submode,Nav.ACS.mode)) 290 | -- default_output_file:write(string.format("Requirements :\n\t roll %d\n\t pitch %d\n\t speed %d\n",Nav.Requirements.roll,Nav.Requirements.pitch,Nav.Requirements.speed)) 291 | -- end 292 | -- end 293 | 294 | 295 | --tNext = tNext + 1.0 296 | -- 2) Socket 297 | -- local o = LoGetWorldObjects() 298 | -- for k,v in pairs(o) do 299 | -- socket.try(c:send(string.format("t = %.2f, ID = %d, name = %s, country = %s(%s), LatLongAlt = (%f, %f, %f), heading = %f\n", t, k, v.Name, v.Country, v.Coalition, v.LatLongAlt.x, v.LatLongAlt.Long, v.LatLongAlt.Alt, v.Heading))) 300 | -- end 301 | 302 | -- socket.try(c:send(string.format(" t=%.2f, IAS = %.2f, ID=%.0f, Long=%.4f, x=%.2f, y=%.2f, z=%.2f",t,IAS,ID,Long,x,y,z))) 303 | 304 | --tNext = tNext + 0.1 305 | 306 | return tNext 307 | end 308 | 309 | function ProcessInput() 310 | 311 | data = d:receive() 312 | 313 | dataSub0h = string.sub(data,1,1) 314 | dataSub0b = string.sub(data,2,5) 315 | dataSub1h = string.sub(data,6,6) 316 | dataSub1b = string.sub(data,7,10) 317 | dataSub2h = string.sub(data,11,11) 318 | dataSub2b = string.sub(data,12,15) 319 | dataSub3h = string.sub(data,16,16) 320 | dataSub3b = string.sub(data,17,20) 321 | dataSub4h = string.sub(data,21,21) 322 | dataSub4b = string.sub(data,22,25) 323 | 324 | if dataSub0h=="1" then 325 | pitch = -tonumber(dataSub0b)/1000 326 | end 327 | if dataSub0h=="2" then 328 | pitch = tonumber(dataSub0b)/1000 329 | end 330 | if dataSub0h~="0" then 331 | LoSetCommand(2001,pitch) 332 | end 333 | 334 | if dataSub1h=="1" then 335 | roll = -tonumber(dataSub1b)/1000 336 | end 337 | if dataSub1h=="2" then 338 | roll = tonumber(dataSub1b)/1000 339 | end 340 | if dataSub1h~="0" then 341 | LoSetCommand(2002,roll) 342 | end 343 | 344 | if dataSub2h=="1" then 345 | thrust = -tonumber(dataSub2b)/1000 346 | end 347 | if dataSub2h=="2" then 348 | thrust = tonumber(dataSub2b)/1000 349 | end 350 | 351 | 352 | -- local ID = LoGetPlayerPlaneId() 353 | -- local o = LoGetObjectById(ID) 354 | if dataSub2h~="0" then 355 | -- local pt = o.Type.level4 356 | mstr = string.format("%s",p) 357 | 358 | if mstr == "267" then 359 | LoSetCommand(2024,thrust) 360 | else 361 | LoSetCommand(2004,thrust) 362 | end 363 | end 364 | 365 | if dataSub3h=="1" then 366 | selecterV = -tonumber(dataSub3b)/1000 367 | end 368 | if dataSub3h=="2" then 369 | selecterV = tonumber(dataSub3b)/1000 370 | end 371 | if dataSub3h~="0" then 372 | LoSetCommand(2034,selecterV) 373 | end 374 | --JF17 2034 375 | --F18 ??? 376 | 377 | if dataSub4h=="1" then 378 | selecterH = -tonumber(dataSub4b)/1000 379 | end 380 | if dataSub4h=="2" then 381 | selecterH = tonumber(dataSub4b)/1000 382 | end 383 | if dataSub4h~="0" then 384 | LoSetCommand(2033,selecterH) 385 | end 386 | --JF17 2033 387 | --F18 ??? 388 | end 389 | --[[ 390 | 391 | -- Lock On supports Lua coroutines using internal LoCreateCoroutineActivity() and 392 | -- external CoroutineResume() functions. Here is an example of using scripted coroutine. 393 | 394 | Coroutines = {} -- global coroutines table 395 | CoroutineIndex = 0 -- global last created coroutine index 396 | 397 | -- This function will be called by Lock On model timer for every coroutine to resume it 398 | function CoroutineResume(index, tCurrent) 399 | -- Resume coroutine and give it current model time value 400 | coroutine.resume(Coroutines[index], tCurrent) 401 | return coroutine.status(Coroutines[index]) ~= "dead" 402 | -- If status == "dead" then Lock On activity for this coroutine dies too 403 | end 404 | 405 | -- Coroutine function example using coroutine.yield() to suspend 406 | function f(t) 407 | local tNext = t 408 | local file = io.open("./Temp/Coroutine.log", "w") 409 | file:write(string.format("t = %f, started\n", tNext)) 410 | tNext = coroutine.yield() 411 | for i = 1,10 do 412 | file:write(string.format("t = %f, continued\n", tNext)) 413 | tNext = coroutine.yield() 414 | end 415 | file:write(string.format("t = %f, finished\n", tNext)) 416 | file:close() 417 | end 418 | 419 | -- Create your coroutines and save them in Coriutines table, e.g.: 420 | CoroutineIndex = CoroutineIndex + 1 421 | Coroutines[CoroutineIndex] = coroutine.create(f) 422 | 423 | -- Use LoCreateCoroutineActivity(index, tStart, tPeriod) to plan your coroutines 424 | -- activity at model times, e.g.: 425 | LoCreateCoroutineActivity(CoroutineIndex, 1.0, 3.0) -- to start at 1.0 second with 3.0 seconds period 426 | -- Coroutine output in the Coroutine.log file: 427 | -- t = 1.000000, started 428 | -- t = 4.000000, continued 429 | -- t = 7.000000, continued 430 | -- t = 10.000000, continued 431 | -- t = 13.000000, continued 432 | -- t = 16.000000, continued 433 | -- t = 19.000000, continued 434 | -- t = 22.000000, continued 435 | -- t = 25.000000, continued 436 | -- t = 28.000000, continued 437 | -- t = 31.000000, continued 438 | -- t = 34.000000, finished 439 | --]] 440 | 441 | --[[ You can use registered Lock On internal data exporting functions in this script 442 | and in your scripts called from this script. 443 | 444 | Note: following functions are implemented for exporting technology experiments only, 445 | so they may be changed or removed in the future by developers. 446 | 447 | All returned values are Lua numbers if not pointed other type. 448 | 449 | Output: 450 | LoIsObjectExportAllowed() -- returns true if world objects data is available 451 | LoIsSensorExportAllowed() -- returns true if radar/targets data is available 452 | LoIsOwnshipExportAllowed() -- true if ownship data is available 453 | 454 | LoGetModelTime() -- returns current model time (args - 0, results - 1 (sec)) 455 | LoGetMissionStartTime() -- returns mission start time (args - 0, results - 1 (sec)) 456 | LoGetPilotName() -- (args - 0, results - 1 (text string)) 457 | LoGetPlayerPlaneId() -- (args - 0, results - 1 (number)) 458 | LoGetIndicatedAirSpeed() -- (args - 0, results - 1 (m/s)) 459 | LoGetTrueAirSpeed() -- (args - 0, results - 1 (m/s)) 460 | LoGetAltitudeAboveSeaLevel() -- (args - 0, results - 1 (meters)) 461 | LoGetAltitudeAboveGroundLevel() -- (args - 0, results - 1 (meterst)) 462 | LoGetAngleOfAttack() -- (args - 0, results - 1 (rad)) 463 | LoGetAccelerationUnits() -- (args - 0, results - table {x = Nx,y = NY,z = NZ} 1 (G)) 464 | LoGetVerticalVelocity() -- (args - 0, results - 1(m/s)) 465 | LoGetMachNumber() -- (args - 0, results - 1) 466 | LoGetADIPitchBankYaw() -- (args - 0, results - 3 (rad)) 467 | LoGetMagneticYaw() -- (args - 0, results - 1 (rad) 468 | LoGetGlideDeviation() -- (args - 0,results - 1)( -1 < result < 1) 469 | LoGetSideDeviation() -- (args - 0,results - 1)( -1 < result < 1) 470 | LoGetSlipBallPosition() -- (args - 0,results - 1)( -1 < result < 1) 471 | LoGetBasicAtmospherePressure() -- (args - 0,results - 1) (mm hg) 472 | LoGetControlPanel_HSI() -- (args - 0,results - table) 473 | result = 474 | { 475 | ADF_raw, (rad) 476 | RMI_raw, (rad) 477 | Heading_raw, (rad) 478 | HeadingPointer, (rad) 479 | Course, (rad) 480 | BearingPointer, (rad) 481 | CourseDeviation, (rad) 482 | } 483 | LoGetEngineInfo() -- (args - 0 ,results = table) 484 | engineinfo = 485 | { 486 | RPM = {left, right},(%) 487 | Temperature = { left, right}, (Celcium degrees) 488 | HydraulicPressure = {left ,right},kg per square centimeter 489 | FuelConsumption = {left ,right},kg per sec 490 | fuel_internal -- fuel quantity internal tanks kg 491 | fuel_external -- fuel quantity external tanks kg 492 | 493 | } 494 | 495 | LoGetRoute() -- (args - 0,results = table) 496 | get_route_result = 497 | { 498 | goto_point, -- next waypoint 499 | route -- all waypoints of route (or approach route if arrival or landing) 500 | } 501 | waypoint_table = 502 | { 503 | this_point_num, -- number of point ( >= 0) 504 | world_point = {x,y,z}, -- world position in meters 505 | speed_req, -- speed at point m/s 506 | estimated_time, -- sec 507 | next_point_num, -- if -1 that's the end of route 508 | point_action -- name of action "ATTACKPOINT","TURNPOINT","LANDING","TAKEOFF" 509 | } 510 | LoGetNavigationInfo() (args - 0,results - 1( table )) -- information about ACS 511 | get_navigation_info_result = 512 | { 513 | SystemMode = {master,submode}, -- (string,string) current mode and submode 514 | --[=[ 515 | master values (depend of plane type) 516 | "NAV" -- navigation 517 | "BVR" -- beyond visual range AA mode 518 | "CAC" -- close air combat 519 | "LNG" -- longitudinal mode 520 | "A2G" -- air to ground 521 | "OFF" -- mode is absent 522 | submode values (depend of plane type and master mode) 523 | "NAV" submodes 524 | { 525 | "ROUTE" 526 | "ARRIVAL" 527 | "LANDING" 528 | "OFF" 529 | } 530 | "BVR" submodes 531 | { 532 | "GUN" -- Gunmode 533 | "RWS" -- RangeWhileSearch 534 | "TWS" -- TrackWhileSearch 535 | "STT" -- SingleTrackTarget (Attack submode) 536 | "OFF" 537 | } 538 | "CAC" submodes 539 | { 540 | "GUN" 541 | "VERTICAL_SCAN" 542 | "BORE" 543 | "HELMET" 544 | "STT" 545 | "OFF" 546 | } 547 | "LNG" submodes 548 | { 549 | "GUN" 550 | "OFF" 551 | "FLOOD" -- F-15 only 552 | } 553 | "A2G" submodes 554 | { 555 | "GUN" 556 | "ETS" -- Emitter Targeting System On 557 | "PINPOINT" 558 | "UNGUIDED" -- unguided weapon (free fall bombs, dispensers , rockets) 559 | "OFF" 560 | } 561 | --]=] 562 | Requirements = -- required parameters of flight 563 | { 564 | roll, -- required roll,pitch.. , etc. 565 | pitch, 566 | speed, 567 | vertical_speed, 568 | altitude, 569 | } 570 | ACS = -- current state of the Automatic Control System 571 | { 572 | mode = string , 573 | --[=[ 574 | mode values are : 575 | "FOLLOW_ROUTE", 576 | "BARO_HOLD", 577 | "RADIO_HOLD", 578 | "BARO_ROLL_HOLD", 579 | "HORIZON_HOLD", 580 | "PITCH_BANK_HOLD", 581 | "OFF" 582 | --]=] 583 | autothrust , -- 1(true) if autothrust mode is on or 0(false) when not; 584 | } 585 | } 586 | LoGetMCPState() -- (args - 0, results - 1 (table of key(string).value(boolean)) 587 | returned table keys for LoGetMCPState(): 588 | "LeftEngineFailure" 589 | "RightEngineFailure" 590 | "HydraulicsFailure" 591 | "ACSFailure" 592 | "AutopilotFailure" 593 | "AutopilotOn" 594 | "MasterWarning" 595 | "LeftTailPlaneFailure" 596 | "RightTailPlaneFailure" 597 | "LeftAileronFailure" 598 | "RightAileronFailure" 599 | "CanopyOpen" 600 | "CannonFailure" 601 | "StallSignalization" 602 | "LeftMainPumpFailure" 603 | "RightMainPumpFailure" 604 | "LeftWingPumpFailure" 605 | "RightWingPumpFailure" 606 | "RadarFailure" 607 | "EOSFailure" 608 | "MLWSFailure" 609 | "RWSFailure" 610 | "ECMFailure" 611 | "GearFailure" 612 | "MFDFailure" 613 | "HUDFailure" 614 | "HelmetFailure" 615 | "FuelTankDamage" 616 | LoGetObjectById() -- (args - 1 (number), results - 1 (table)) 617 | Returned object table structure: 618 | { 619 | Name = 620 | Type = {level1,level2,level3,level4}, ( see Scripts/database/wsTypes.lua) Subtype is absent now 621 | Country = number ( see Scripts/database/db_countries.lua 622 | Coalition = 623 | CoalitionID = number ( 1 or 2 ) 624 | LatLongAlt = { Lat = , Long = , Alt = } 625 | Heading = radians 626 | Pitch = radians 627 | Bank = radians 628 | Position = {x,y,z} -- in internal DCS coordinate system ( see convertion routnes below) 629 | only for units ( Planes,Hellicopters,Tanks etc) 630 | UnitName = unit name from mission (UTF8) 631 | GroupName = unit name from mission (UTF8) 632 | Flags = { 633 | RadarActive = true if the unit has its radar on 634 | Human = true if the unit is human-controlled 635 | Jamming = true if the unit uses EMI jamming 636 | IRJamming = -- same for IR jamming 637 | Born = true if the unit is born (activated) 638 | AI_ON = true if the unit's AI is active 639 | Invisible = true if the unit is invisible 640 | Static - true if the unit is a static object 641 | } 642 | } 643 | 644 | 645 | LoGetWorldObjects() -- (args - 0- 1, results - 1 (table of object tables)) arg can be 646 | "units" (default) 647 | "ballistic" - for different type of unguided munition ()bombs,shells,rockets) 648 | "airdromes" - to get airdrome objects 649 | Returned table index = object identificator 650 | Returned object table structure (see LoGetObjectById()) 651 | 652 | LoGetSelfData return the same result as LoGetObjectById but only for your aircraft and not depended on anti-cheat setting in Export/Config.lua 653 | 654 | LoGetAltitude(x, z) -- (args - 2 : meters, results - 1 : altitude above terrain surface, meters) 655 | 656 | LoGetCameraPosition() -- (args - 0, results - 1 : view camera current position table: 657 | { 658 | x = {x = ..., y = ..., z = ...}, -- orientation x-vector 659 | y = (x = ..., y = ..., z = ...}, -- orientation y-vector 660 | z = {x = ..., y = ..., z = ...}, -- orientation z-vector 661 | p = {x = ..., y = ..., z = ...} -- point vector 662 | } 663 | all coordinates are in meters. You can use Vector class for position vectors. 664 | 665 | -- Weapon Control System 666 | LoGetNameByType () -- args 4 (number : level1,level2,level3,level4), result string 667 | 668 | LoGetTargetInformation() -- (args - 0, results - 1 (table of current targets tables)) 669 | LoGetLockedTargetInformation() -- (args - 0, results - 1 (table of current locked targets tables)) 670 | this functions return the table of the next target data 671 | target = 672 | { 673 | ID , -- world ID (may be 0 ,when ground point track) 674 | type = {level1,level2,level3,level4}, -- world database classification 675 | country = , -- object country 676 | position = {x = {x,y,z}, -- orientation X ort 677 | y = {x,y,z}, -- orientation Y ort 678 | z = {x,y,z}, -- orientation Z ort 679 | p = {x,y,z}} -- position of the center 680 | velocity = {x,y,z}, -- world velocity vector m/s 681 | distance = , -- distance in meters 682 | convergence_velocity = , -- closing speed in m/s 683 | mach = , -- M number 684 | delta_psi = , -- aspect angle rad 685 | fim = , -- viewing angle horizontal (in your body axis) rad 686 | fin = , -- viewing angle vertical (in your body axis) rad 687 | flags = , -- field with constants detemining method of the tracking 688 | -- whTargetRadarView = 0x0002; -- Radar review (BVR) 689 | -- whTargetEOSView = 0x0004; -- EOS review (BVR) 690 | -- whTargetRadarLock = 0x0008; -- Radar lock (STT) == whStaticObjectLock (pinpoint) (static objects,buildings lock) 691 | -- whTargetEOSLock = 0x0010; -- EOS lock (STT) == whWorldObjectLock (pinpoint) (ground units lock) 692 | -- whTargetRadarTrack = 0x0020; -- Radar lock (TWS) 693 | -- whTargetEOSTrack = 0x0040; -- Radar lock (TWS) == whImpactPointTrack (pinpoint) (ground point track) 694 | -- whTargetNetHumanPlane = 0x0200; -- net HumanPlane 695 | -- whTargetAutoLockOn = 0x0400; -- EasyRadar autolockon 696 | -- whTargetLockOnJammer = 0x0800; -- HOJ mode 697 | 698 | reflection = , -- target cross section square meters 699 | course = , -- target course rad 700 | isjamming = , -- target ECM on or not 701 | start_of_lock = , -- time of the beginning of lock 702 | forces = { x,y,z}, -- vector of the acceleration units 703 | updates_number = , -- number of the radar updates 704 | 705 | jammer_burned = true/false -- indicates that jammer are burned 706 | } 707 | LoGetSightingSystemInfo() -- sight system info 708 | { 709 | Manufacturer = "RUS"/"USA" 710 | LaunchAuthorized = true/false 711 | ScanZone = 712 | { 713 | position 714 | { 715 | azimuth 716 | elevation 717 | if Manufacturer == "RUS" then 718 | distance_manual 719 | exceeding_manual 720 | end 721 | } 722 | coverage_H 723 | { 724 | min 725 | max 726 | } 727 | size 728 | { 729 | azimuth 730 | elevation 731 | } 732 | } 733 | scale 734 | { 735 | distance 736 | azimuth 737 | } 738 | TDC 739 | { 740 | x 741 | y 742 | } 743 | 744 | radar_on = true/false 745 | optical_system_on= true/false 746 | ECM_on= true/false 747 | laser_on= true/false 748 | 749 | PRF = 750 | { 751 | current , -- current PRF value ( changed in ILV mode ) , values are "MED" or "HI" 752 | selection , -- selection value can be "MED" "HI" or "ILV" 753 | } 754 | 755 | } 756 | LoGetTWSInfo() -- return Threat Warning System status (result the table ) 757 | result_of_LoGetTWSInfo = 758 | { 759 | Mode = , -- current mode (0 - all ,1 - lock only,2 - launch only 760 | Emitters = {table of emitters} 761 | } 762 | emitter_table = 763 | { 764 | ID =, -- world ID 765 | Type = {level1,level2,level3,level4}, -- world database classification of emitter 766 | Power =, -- power of signal 767 | Azimuth =, 768 | Priority =,-- priority of emitter (int) 769 | SignalType =, -- string with vlues: "scan" ,"lock", "missile_radio_guided","track_while_scan"; 770 | } 771 | LoGetPayloadInfo() -- return weapon stations 772 | result_of_LoGetPayloadInfo 773 | { 774 | CurrentStation = , -- number of current station (0 if no station selected) 775 | Stations = {},-- table of stations 776 | Cannon = 777 | { 778 | shells -- current shells count 779 | } 780 | } 781 | station 782 | { 783 | container = true/false , -- is station container 784 | weapon = {level1,level2,level3,level4} , -- world database classification of weapon 785 | count = , 786 | } 787 | LoGetMechInfo() -- mechanization info 788 | result_is = 789 | { 790 | gear = {status,value,main = {left = {rod},right = {rod},nose = {rod}}} 791 | flaps = {status,value} 792 | speedbrakes = {status,value} 793 | refuelingboom = {status,value} 794 | airintake = {status,value} 795 | noseflap = {status,value} 796 | parachute = {status,value} 797 | wheelbrakes = {status,value} 798 | hook = {status,value} 799 | wing = {status,value} 800 | canopy = {status,value} 801 | controlsurfaces = {elevator = {left,right},eleron = {left,right},rudder = {left,right}} -- relative vlues (-1,1) (min /max) (sorry:( 802 | } 803 | 804 | LoGetRadioBeaconsStatus() -- beacons lock 805 | { 806 | airfield_near , 807 | airfield_far, 808 | course_deviation_beacon_lock , 809 | glideslope_deviation_beacon_lock 810 | } 811 | 812 | LoGetWingInfo() -- your wingmens info result is vector of wingmens with value: 813 | wingmen_is = 814 | { 815 | wingmen_id -- world id of wingmen 816 | wingmen_position -- world position {x = {x,y,z}, -- orientation X ort 817 | y = {x,y,z}, -- orientation Y ort 818 | z = {x,y,z}, -- orientation Z ort 819 | p = {x,y,z}} -- position of the center 820 | current_target -- world id of target 821 | ordered_target -- world id of target 822 | current_task -- name of task 823 | ordered_task -- name of task 824 | --[=[ 825 | name can be : 826 | "NOTHING" 827 | "ROUTE" 828 | "DEPARTURE" 829 | "ARRIVAL" 830 | "REFUELING" 831 | "SOS" -- Save Soul of your Wingmen :) 832 | "ROUTE" 833 | "INTERCEPT" 834 | "PATROL" 835 | "AIR_ATTACK" 836 | "REFUELING" 837 | "AWACS" 838 | "RECON" 839 | "ESCORT" 840 | "PINPOINT" 841 | "CAS" 842 | "MISSILE_EVASION" 843 | "ENEMY_EVASION" 844 | "SEAD" 845 | "ANTISHIP" 846 | "RUNWAY_ATTACK" 847 | "TRANSPORT" 848 | "LANDING" 849 | "TAKEOFF" 850 | "TAXIING" 851 | --]=] 852 | 853 | } 854 | 855 | Coordinates convertion : 856 | {x,y,z} = LoGeoCoordinatesToLoCoordinates(longitude_degrees,latitude_degrees) 857 | {latitude,longitude} = LoLoCoordinatesToGeoCoordinates(x,z); 858 | 859 | LoGetVectorVelocity = {x,y,z} -- vector of self velocity (world axis) 860 | LoGetAngularVelocity = {x,y,z} -- angular velocity euler angles , rad per sec 861 | LoGetVectorWindVelocity = {x,y,z} -- vector of wind velocity (world axis) 862 | LoGetWingTargets = table of {x,y,z} 863 | LoGetSnares = {chaff,flare} 864 | Input: 865 | LoSetCameraPosition(pos) -- (args - 1: view camera current position table, results - 0) 866 | pos table structure: 867 | { 868 | x = {x = ..., y = ..., z = ...}, -- orientation x-vector 869 | y = (x = ..., y = ..., z = ...}, -- orientation y-vector 870 | z = {x = ..., y = ..., z = ...}, -- orientation z-vector 871 | p = {x = ..., y = ..., z = ...} -- point vector 872 | } 873 | all coordinates are in meters. You can use Vector class for position vectors. 874 | 875 | LoSetCommand(command, value) -- (args - 2, results - 0) 876 | -1.0 <= value <= 1.0 877 | 878 | Some analogous joystick/mouse input commands: 879 | command = 2001 - joystick pitch 880 | command = 2002 - joystick roll 881 | command = 2003 - joystick rudder 882 | -- Thrust values are inverted for some internal reasons, sorry. 883 | command = 2004 - joystick thrust (both engines) 884 | command = 2005 - joystick left engine thrust 885 | command = 2006 - joystick right engine thrust 886 | command = 2007 - mouse camera rotate left/right 887 | command = 2008 - mouse camera rotate up/down 888 | command = 2009 - mouse camera zoom 889 | command = 2010 - joystick camera rotate left/right 890 | command = 2011 - joystick camera rotate up/down 891 | command = 2012 - joystick camera zoom 892 | command = 2013 - mouse pitch 893 | command = 2014 - mouse roll 894 | command = 2015 - mouse rudder 895 | -- Thrust values are inverted for some internal reasons, sorry. 896 | command = 2016 - mouse thrust (both engines) 897 | command = 2017 - mouse left engine thrust 898 | command = 2018 - mouse right engine thrust 899 | command = 2019 - mouse trim pitch 900 | command = 2020 - mouse trim roll 901 | command = 2021 - mouse trim rudder 902 | command = 2022 - joystick trim pitch 903 | command = 2023 - joystick trim roll 904 | command = 2024 - trim rudder 905 | command = 2025 - mouse rotate radar antenna left/right 906 | command = 2026 - mouse rotate radar antenna up/down 907 | command = 2027 - joystick rotate radar antenna left/right 908 | command = 2028 - joystick rotate radar antenna up/down 909 | command = 2029 - mouse MFD zoom 910 | command = 2030 - joystick MFD zoom 911 | command = 2031 - mouse move selecter left/right 912 | command = 2032 - mouse move selecter up/down 913 | command = 2033 - joystick move selecter left/right 914 | command = 2034 - joystick move selecter up/down 915 | 916 | Some discrete keyboard input commands (value is absent): 917 | command = 7 -- Cockpit view 918 | command = 8 -- External view 919 | command = 9 -- Fly-by view 920 | command = 10 -- Ground units view 921 | command = 11 -- Civilian transport view 922 | command = 12 -- Chase view 923 | command = 13 -- Navy view 924 | command = 14 -- Close air combat view 925 | command = 15 -- Theater view 926 | command = 16 -- Airfield (free camera) view 927 | command = 17 -- Instruments panel view on 928 | command = 18 -- Instruments panel view off 929 | command = 19 -- Padlock toggle 930 | command = 20 -- Stop padlock (in cockpit only) 931 | command = 21 -- External view for my plane 932 | command = 22 -- Automatic chase mode for launched weapon 933 | command = 23 -- View allies only filter 934 | command = 24 -- View enemies only filter 935 | command = 26 -- View allies & enemies filter 936 | command = 28 -- Rotate the camera left fast 937 | command = 29 -- Rotate the camera right fast 938 | command = 30 -- Rotate the camera up fast 939 | command = 31 -- Rotate the camera down fast 940 | command = 32 -- Rotate the camera left slow 941 | command = 33 -- Rotate the camera right slow 942 | command = 34 -- Rotate the camera up slow 943 | command = 35 -- Rotate the camera down slow 944 | command = 36 -- Return the camera to default position 945 | command = 37 -- View zoom in fast 946 | command = 38 -- View zoom out fast 947 | command = 39 -- View zoom in slow 948 | command = 40 -- View zoom out slow 949 | command = 41 -- Pan the camera left 950 | command = 42 -- Pan the camera right 951 | command = 43 -- Pan the camera up 952 | command = 44 -- Pan the camera down 953 | command = 45 -- Pan the camera left slow 954 | command = 46 -- Pan the camera right slow 955 | command = 47 -- Pan the camera up slow 956 | command = 48 -- Pan the camera down slow 957 | command = 49 -- Disable panning the camera 958 | command = 50 -- Allies chat 959 | command = 51 -- Mission quit 960 | command = 52 -- Suspend/resume model time 961 | command = 53 -- Accelerate model time 962 | command = 54 -- Step by step simulation when model time is suspended 963 | command = 55 -- Take control in the track 964 | command = 57 -- Common chat 965 | command = 59 -- Altitude stabilization 966 | command = 62 -- Autopilot 967 | command = 63 -- Auto-thrust 968 | command = 64 -- Power up 969 | command = 65 -- Power down 970 | command = 68 -- Gear 971 | command = 69 -- Hook 972 | command = 70 -- Pack wings 973 | command = 71 -- Canopy 974 | command = 72 -- Flaps 975 | command = 73 -- Air brake 976 | command = 74 -- Wheel brakes on 977 | command = 75 -- Wheel brakes off 978 | command = 76 -- Release drogue chute 979 | command = 77 -- Drop snar 980 | command = 78 -- Wingtip smoke 981 | command = 79 -- Refuel on 982 | command = 80 -- Refuel off 983 | command = 81 -- Salvo 984 | command = 82 -- Jettison weapons 985 | command = 83 -- Eject 986 | command = 84 -- Fire on 987 | command = 85 -- Fire off 988 | command = 86 -- Radar 989 | command = 87 -- EOS 990 | command = 88 -- Rotate the radar antenna left 991 | command = 89 -- Rotate the radar antenna right 992 | command = 90 -- Rotate the radar antenna up 993 | command = 91 -- Rotate the radar antenna down 994 | command = 92 -- Center the radar antenna 995 | command = 93 -- Trim left 996 | command = 94 -- Trim right 997 | command = 95 -- Trim up 998 | command = 96 -- Trim down 999 | command = 97 -- Cancel trimming 1000 | command = 98 -- Trim the rudder left 1001 | command = 99 -- Trim the rudder right 1002 | command = 100 -- Lock the target 1003 | command = 101 -- Change weapon 1004 | command = 102 -- Change target 1005 | command = 103 -- MFD zoom in 1006 | command = 104 -- MFD zoom out 1007 | command = 105 -- Navigation mode (value 1, 2, 3, 4 for navmode_none, navmode_route, navmode_arrival ,navmode_landing ) 1008 | command = 106 -- BVR mode 1009 | command = 107 -- VS mode 1010 | command = 108 -- Bore mode 1011 | command = 109 -- Helmet mode 1012 | command = 110 -- FI0 mode 1013 | command = 111 -- A2G mode 1014 | command = 112 -- Grid mode 1015 | command = 113 -- Cannon 1016 | command = 114 -- Dispatch wingman - complete mission and RTB 1017 | command = 115 -- Dispatch wingman - complete mission and rejoin 1018 | command = 116 -- Dispatch wingman - toggle formation 1019 | command = 117 -- Dispatch wingman - join up formation 1020 | command = 118 -- Dispatch wingman - attack my target 1021 | command = 119 -- Dispatch wingman - cover my six 1022 | command = 120 -- Take off from ship 1023 | command = 121 -- Cobra 1024 | command = 122 -- Sound on/off 1025 | command = 123 -- Sound recording on 1026 | command = 124 -- Sound recording off 1027 | command = 125 -- View right mirror on 1028 | command = 126 -- View right mirror off 1029 | command = 127 -- View left mirror on 1030 | command = 128 -- View left mirror off 1031 | command = 129 -- Natural head movement view 1032 | command = 131 -- LSO view 1033 | command = 135 -- Weapon to target view 1034 | command = 136 -- Active jamming 1035 | command = 137 -- Increase details level 1036 | command = 138 -- Decrease details level 1037 | command = 139 -- Scan zone left 1038 | command = 140 -- Scan zone right 1039 | command = 141 -- Scan zone up 1040 | command = 142 -- Scan zone down 1041 | command = 143 -- Unlock target 1042 | command = 144 -- Reset master warning 1043 | command = 145 -- Flaps on 1044 | command = 146 -- Flaps off 1045 | command = 147 -- Air brake on 1046 | command = 148 -- Air brake off 1047 | command = 149 -- Weapons view 1048 | command = 150 -- Static objects view 1049 | command = 151 -- Mission targets view 1050 | command = 152 -- Info bar details 1051 | command = 155 -- Refueling boom 1052 | command = 156 -- HUD color selection 1053 | command = 158 -- Jump to terrain view 1054 | command = 159 -- Starts moving F11 camera forward 1055 | command = 160 -- Starts moving F11 camera backward 1056 | command = 161 -- Power up left engine 1057 | command = 162 -- Power down left engine 1058 | command = 163 -- Power up right engine 1059 | command = 164 -- Power down right engine 1060 | command = 169 -- Immortal mode 1061 | command = 175 -- On-board lights 1062 | command = 176 -- Drop snar once 1063 | command = 177 -- Default cockpit angle of view 1064 | command = 178 -- Jettison fuel tanks 1065 | command = 179 -- Wingmen commands panel 1066 | command = 180 -- Reverse objects switching in views 1067 | command = 181 -- Forward objects switching in views 1068 | command = 182 -- Ignore current object in views 1069 | command = 183 -- View all ignored objects in views again 1070 | command = 184 -- Padlock terrain point 1071 | command = 185 -- Reverse the camera 1072 | command = 186 -- Plane up 1073 | command = 187 -- Plane down 1074 | command = 188 -- Bank left 1075 | command = 189 -- Bank right 1076 | command = 190 -- Local camera rotation mode 1077 | command = 191 -- Decelerate model time 1078 | command = 192 -- Jump into the other plane 1079 | command = 193 -- Nose down 1080 | command = 194 -- Nose down end 1081 | command = 195 -- Nose up 1082 | command = 196 -- Nose up end 1083 | command = 197 -- Bank left 1084 | command = 198 -- Bank left end 1085 | command = 199 -- Bank right 1086 | command = 200 -- Bank right end 1087 | command = 201 -- Rudder left 1088 | command = 202 -- Rudder left end 1089 | command = 203 -- Rudder right 1090 | command = 204 -- Rudder right end 1091 | command = 205 -- View up right 1092 | command = 206 -- View down right 1093 | command = 207 -- View down left 1094 | command = 208 -- View up left 1095 | command = 209 -- View stop 1096 | command = 210 -- View up right slow 1097 | command = 211 -- View down right slow 1098 | command = 212 -- View down left slow 1099 | command = 213 -- View up left slow 1100 | command = 214 -- View stop slow 1101 | command = 215 -- Stop trimming 1102 | command = 226 -- Scan zone up right 1103 | command = 227 -- Scan zone down right 1104 | command = 228 -- Scan zone down left 1105 | command = 229 -- Scan zone up left 1106 | command = 230 -- Scan zone stop 1107 | command = 231 -- Radar antenna up right 1108 | command = 232 -- Radar antenna down right 1109 | command = 233 -- Radar antenna down left 1110 | command = 234 -- Radar antenna up left 1111 | command = 235 -- Radar antenna stop 1112 | command = 236 -- Save snap view angles 1113 | command = 237 -- Cockpit panel view toggle 1114 | command = 245 -- Coordinates units toggle 1115 | command = 246 -- Disable model time acceleration 1116 | command = 252 -- Automatic spin recovery 1117 | command = 253 -- Speed retention 1118 | command = 254 -- Easy landing 1119 | command = 258 -- Threat missile padlock 1120 | command = 259 -- All missiles padlock 1121 | command = 261 -- Marker state 1122 | command = 262 -- Decrease radar scan area 1123 | command = 263 -- Increase radar scan area 1124 | command = 264 -- Marker state plane 1125 | command = 265 -- Marker state rocket 1126 | command = 266 -- Marker state plane ship 1127 | command = 267 -- Ask AWACS home airbase 1128 | command = 268 -- Ask AWACS available tanker 1129 | command = 269 -- Ask AWACS nearest target 1130 | command = 270 -- Ask AWACS declare target 1131 | command = 271 -- Easy radar 1132 | command = 272 -- Auto lock on nearest aircraft 1133 | command = 273 -- Auto lock on center aircraft 1134 | command = 274 -- Auto lock on next aircraft 1135 | command = 275 -- Auto lock on previous aircraft 1136 | command = 276 -- Auto lock on nearest surface target 1137 | command = 277 -- Auto lock on center surface target 1138 | command = 278 -- Auto lock on next surface target 1139 | command = 279 -- Auto lock on previous surface target 1140 | command = 280 -- Change cannon rate of fire 1141 | command = 281 -- Change ripple quantity 1142 | command = 282 -- Change ripple interval 1143 | command = 283 -- Switch master arm 1144 | command = 284 -- Change release mode 1145 | command = 285 -- Change radar mode RWS/TWS 1146 | command = 286 -- Change RWR/SPO mode 1147 | command = 288 -- Flight clock reset 1148 | command = 289 -- Zoom in slow stop 1149 | command = 290 -- Zoom out slow stop 1150 | command = 291 -- Zoom in stop 1151 | command = 292 -- Zoom out stop 1152 | command = 295 -- View horizontal stop 1153 | command = 296 -- View vertical stop 1154 | command = 298 -- Jump to fly-by view 1155 | command = 299 -- Camera jiggle 1156 | command = 300 -- Cockpit illumination 1157 | command = 308 -- Change ripple interval down 1158 | command = 309 -- Engines start 1159 | command = 310 -- Engines stop 1160 | command = 311 -- Left engine start 1161 | command = 312 -- Right engine start 1162 | command = 313 -- Left engine stop 1163 | command = 314 -- Right engine stop 1164 | command = 315 -- Power on/off 1165 | command = 316 -- Altimeter pressure increase 1166 | command = 317 -- Altimeter pressure decrease 1167 | command = 318 -- Altimeter pressure stop 1168 | command = 321 -- Fast mouse in views 1169 | command = 322 -- Slow mouse in views 1170 | command = 323 -- Normal mouse in views 1171 | command = 326 -- HUD only view 1172 | command = 327 -- Recover my plane 1173 | command = 328 -- Toggle gear light Near/Far/Off 1174 | command = 331 -- Fast keyboard in views 1175 | command = 332 -- Slow keyboard in views 1176 | command = 333 -- Normal keyboard in views 1177 | command = 334 -- Zoom in for external views 1178 | command = 335 -- Stop zoom in for external views 1179 | command = 336 -- Zoom out for external views 1180 | command = 337 -- Stop zoom out for external views 1181 | command = 338 -- Default zoom in external views 1182 | command = 341 -- A2G combat view 1183 | command = 342 -- Camera view up-left 1184 | command = 343 -- Camera view up-right 1185 | command = 344 -- Camera view down-left 1186 | command = 345 -- Camera view down right 1187 | command = 346 -- Camera pan mode toggle 1188 | command = 347 -- Return the camera 1189 | command = 348 -- Trains/cars toggle 1190 | command = 349 -- Launch permission override 1191 | command = 350 -- Release weapon 1192 | command = 351 -- Stop release weapon 1193 | command = 352 -- Return camera base 1194 | command = 353 -- Camera view up-left slow 1195 | command = 354 -- Camera view up-right slow 1196 | command = 355 -- Camera view down-left slow 1197 | command = 356 -- Camera view down-right slow 1198 | command = 357 -- Drop flare once 1199 | command = 358 -- Drop chaff once 1200 | command = 359 -- Rear view 1201 | command = 360 -- Scores window 1202 | command = 386 -- PlaneStabPitchBank 1203 | command = 387 -- PlaneStabHbarBank 1204 | command = 388 -- PlaneStabHorizont 1205 | command = 389 -- PlaneStabHbar 1206 | command = 390 -- PlaneStabHrad 1207 | command = 391 -- Active IR jamming on/off 1208 | command = 392 -- Laser range-finder on/off 1209 | command = 393 -- Night TV on/off(IR or LLTV) 1210 | command = 394 -- Change radar PRF 1211 | command = 395 -- Keep F11 camera altitude over terrain 1212 | command = 396 -- SnapView0 1213 | command = 397 -- SnapView1 1214 | command = 398 -- SnapView2 1215 | command = 399 -- SnapView3 1216 | command = 400 -- SnapView4 1217 | command = 401 -- SnapView5 1218 | command = 402 -- SnapView6 1219 | command = 403 -- SnapView7 1220 | command = 404 -- SnapView8 1221 | command = 405 -- SnapView9 1222 | command = 406 -- SnapViewStop 1223 | command = 407 -- F11 view binocular mode 1224 | command = 408 -- PlaneStabCancel 1225 | command = 409 -- ThreatWarnSoundVolumeDown 1226 | command = 410 -- ThreatWarnSoundVolumeUp 1227 | command = 411 -- F11 binocular view laser range-finder on/off 1228 | command = 412 -- PlaneIncreaseBase_Distance 1229 | command = 413 -- PlaneDecreaseBase_Distance 1230 | command = 414 -- PlaneStopBase_Distance 1231 | command = 425 -- F11 binocular view IR mode on/off 1232 | command = 426 -- F8 view player targets / all targets 1233 | command = 427 -- Plane autopilot override on 1234 | command = 428 -- Plane autopilot override off 1235 | command = 429 -- Plane route autopilot on/off 1236 | command = 430 -- Gear up 1237 | command = 431 -- Gear down 1238 | 1239 | To be continued... 1240 | --]] 1241 | 1242 | -- LoEnableExternalFlightModel() call one time in start 1243 | -- LoUpdateExternalFlightModel(binary_data) update function 1244 | 1245 | 1246 | --LoGetHelicopterFMData() 1247 | -- return table with fm data 1248 | --{ 1249 | --G_factor = {x,y,z } in cockpit 1250 | --speed = {x,y,z} center of mass ,body axis 1251 | --acceleration= {x,y,z} center of mass ,body axis 1252 | --angular_speed= {x,y,z} rad/s 1253 | --angular_acceleration= {x,y,z} rad/s^2 1254 | --yaw radians 1255 | --pitch radians 1256 | --roll radians 1257 | --} 1258 | 1259 | --#ifndef _EXTERNAL_FM_DATA_H 1260 | --#define _EXTERNAL_FM_DATA_H 1261 | 1262 | --struct external_FM_data 1263 | --{ 1264 | -- double orientation_X[3]; 1265 | -- double orientation_Y[3]; 1266 | -- double orientation_Z[3]; 1267 | -- double pos[3]; 1268 | 1269 | -- // 1270 | 1271 | -- double velocity[3]; 1272 | -- double acceleration[3]; 1273 | -- double omega[3]; 1274 | --}; 1275 | -- #endif _EXTERNAL_FM_DATA_H 1276 | 1277 | 1278 | -- you can export render targets via shared memory interface 1279 | -- using next functions 1280 | -- LoSetSharedTexture(name) -- register texture with name "name" to export 1281 | -- LoRemoveSharedTexture(name) -- copy texture with name "name" to named shared memory area "name" 1282 | -- LoUpdateSharedTexture(name) -- unregister texture 1283 | -- texture exported like Windows BMP file 1284 | -- -------------------------------- 1285 | -- |BITMAPFILEHEADER | 1286 | -- |BITMAPINFOHEADER | 1287 | -- |bits | 1288 | -- -------------------------------- 1289 | -- sample textures : "mfd0" - full SHKVAL screen 1290 | -- "mfd1" - ABRIS map screen 1291 | -- "mfd2" - not used 1292 | -- "mfd3" - not used 1293 | -- "mirrors" - mirrors --------------------------------------------------------------------------------