diff options
Diffstat (limited to 'proto-simconnect')
-rw-r--r-- | proto-simconnect/CMakeLists.txt | 3 | ||||
-rw-r--r-- | proto-simconnect/ftnoir-protocol-sc.rc | 4 | ||||
-rw-r--r-- | proto-simconnect/ftnoir_protocol_sc.cpp | 193 | ||||
-rw-r--r-- | proto-simconnect/ftnoir_protocol_sc.h | 108 | ||||
-rw-r--r-- | proto-simconnect/ftnoir_protocol_sc_dialog.cpp | 35 | ||||
-rw-r--r-- | proto-simconnect/ftnoir_sccontrols.ui | 109 | ||||
-rw-r--r-- | proto-simconnect/images/fsx.png | bin | 0 -> 813 bytes | |||
-rw-r--r-- | proto-simconnect/images/fsx1.png | bin | 0 -> 1920 bytes | |||
-rw-r--r-- | proto-simconnect/lang/nl_NL.ts | 45 | ||||
-rw-r--r-- | proto-simconnect/lang/ru_RU.ts | 45 | ||||
-rw-r--r-- | proto-simconnect/lang/stub.ts | 45 | ||||
-rw-r--r-- | proto-simconnect/sc-protocol.qrc | 5 | ||||
-rw-r--r-- | proto-simconnect/scserver.manifest | 13 | ||||
-rw-r--r-- | proto-simconnect/scserver_acceleration.manifest | 13 | ||||
-rw-r--r-- | proto-simconnect/scserver_sp2.manifest | 13 |
15 files changed, 631 insertions, 0 deletions
diff --git a/proto-simconnect/CMakeLists.txt b/proto-simconnect/CMakeLists.txt new file mode 100644 index 00000000..26047b6f --- /dev/null +++ b/proto-simconnect/CMakeLists.txt @@ -0,0 +1,3 @@ +if(WIN32) + otr_module(proto-simconnect) +endif() diff --git a/proto-simconnect/ftnoir-protocol-sc.rc b/proto-simconnect/ftnoir-protocol-sc.rc new file mode 100644 index 00000000..c89eb9a7 --- /dev/null +++ b/proto-simconnect/ftnoir-protocol-sc.rc @@ -0,0 +1,4 @@ +#include <winuser.h> +142 RT_MANIFEST scserver.manifest +143 RT_MANIFEST scserver_sp2.manifest +144 RT_MANIFEST scserver_acceleration.manifest
\ No newline at end of file diff --git a/proto-simconnect/ftnoir_protocol_sc.cpp b/proto-simconnect/ftnoir_protocol_sc.cpp new file mode 100644 index 00000000..c8df0443 --- /dev/null +++ b/proto-simconnect/ftnoir_protocol_sc.cpp @@ -0,0 +1,193 @@ +/* Homepage http://facetracknoir.sourceforge.net/home/default.htm * + * * + * ISC License (ISC) * + * * + * Copyright (c) 2015, Wim Vriend + * Copyright (c) 2014, Stanislaw Halik <sthalik@misaki.pl> + * * + * Permission to use, copy, modify, and/or distribute this software for any * + * purpose with or without fee is hereby granted, provided that the above * + * copyright notice and this permission notice appear in all copies. * + */ +#include "ftnoir_protocol_sc.h" +#include "api/plugin-api.hpp" +#include "opentrack-library-path.h" + +simconnect::simconnect() : should_stop(false), hSimConnect(nullptr) +{ +} + +simconnect::~simconnect() +{ + should_stop = true; + wait(); +} + +void simconnect::run() +{ + HANDLE event = CreateEvent(NULL, FALSE, FALSE, nullptr); + + if (event == nullptr) + { + qDebug() << "simconnect: event create" << GetLastError(); + return; + } + + while (!should_stop) + { + if (SUCCEEDED(simconnect_open(&hSimConnect, "opentrack", NULL, 0, event, 0))) + { + simconnect_subscribetosystemevent(hSimConnect, 0, "Frame"); + + while (!should_stop) + { + if (WaitForSingleObject(event, 10) == WAIT_OBJECT_0) + { + if (FAILED(simconnect_calldispatch(hSimConnect, processNextSimconnectEvent, reinterpret_cast<void*>(this)))) + break; + } + } + + (void) simconnect_close(hSimConnect); + } + + if (!should_stop) + Sleep(100); + } + + CloseHandle(event); +} + +void simconnect::pose( const double *headpose ) { + // euler degrees + virtSCRotX = float(-headpose[Pitch]); + virtSCRotY = float(headpose[Yaw]); + virtSCRotZ = float(headpose[Roll]); + + // cm to meters + virtSCPosX = float(-headpose[TX]/100); + virtSCPosY = float(headpose[TY]/100); + virtSCPosZ = float(-headpose[TZ]/100); +} + +#ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wmissing-field-initializers" +#endif + +class ActivationContext { +public: + ActivationContext(const int resid) : ok(false) { + hactctx = INVALID_HANDLE_VALUE; + actctx_cookie = 0; + ACTCTXA actx = {0}; + actx.cbSize = sizeof(ACTCTXA); + actx.lpResourceName = MAKEINTRESOURCEA(resid); + actx.dwFlags = ACTCTX_FLAG_RESOURCE_NAME_VALID; +#ifdef _MSC_VER +# define PREFIX "" +#else +# define PREFIX "lib" +#endif + static const QString prefix = OPENTRACK_BASE_PATH + OPENTRACK_LIBRARY_PATH; + QString path = prefix + PREFIX "opentrack-proto-simconnect.dll"; + QByteArray name = QFile::encodeName(path); + actx.lpSource = name.constData(); + hactctx = CreateActCtxA(&actx); + actctx_cookie = 0; + if (hactctx != INVALID_HANDLE_VALUE) { + if (!ActivateActCtx(hactctx, &actctx_cookie)) { + qDebug() << "SC: can't set win32 activation context" << GetLastError(); + ReleaseActCtx(hactctx); + hactctx = INVALID_HANDLE_VALUE; + } + else + ok = true; + } else { + qDebug() << "SC: can't create win32 activation context" << GetLastError(); + } + } + ~ActivationContext() { + if (hactctx != INVALID_HANDLE_VALUE) + { + DeactivateActCtx(0, actctx_cookie); + ReleaseActCtx(hactctx); + } + } + bool is_ok() { return ok; } +private: + ULONG_PTR actctx_cookie; + HANDLE hactctx; + bool ok; +}; + +bool simconnect::correct() +{ + if (!SCClientLib.isLoaded()) + { + ActivationContext ctx(142 + static_cast<int>(s.sxs_manifest)); + + if (ctx.is_ok()) + { + SCClientLib.setFileName("SimConnect.dll"); + if (!SCClientLib.load()) { + qDebug() << "SC load" << SCClientLib.errorString(); + return false; + } + } + else + return false; + } + + simconnect_open = (importSimConnect_Open) SCClientLib.resolve("SimConnect_Open"); + if (simconnect_open == NULL) { + qDebug() << "simconnect::correct() says: SimConnect_Open function not found in DLL!"; + return false; + } + simconnect_set6DOF = (importSimConnect_CameraSetRelative6DOF) SCClientLib.resolve("SimConnect_CameraSetRelative6DOF"); + if (simconnect_set6DOF == NULL) { + qDebug() << "simconnect::correct() says: SimConnect_CameraSetRelative6DOF function not found in DLL!"; + return false; + } + simconnect_close = (importSimConnect_Close) SCClientLib.resolve("SimConnect_Close"); + if (simconnect_close == NULL) { + qDebug() << "simconnect::correct() says: SimConnect_Close function not found in DLL!"; + return false; + } + + simconnect_calldispatch = (importSimConnect_CallDispatch) SCClientLib.resolve("SimConnect_CallDispatch"); + if (simconnect_calldispatch == NULL) { + qDebug() << "simconnect::correct() says: SimConnect_CallDispatch function not found in DLL!"; + return false; + } + + simconnect_subscribetosystemevent = (importSimConnect_SubscribeToSystemEvent) SCClientLib.resolve("SimConnect_SubscribeToSystemEvent"); + if (simconnect_subscribetosystemevent == NULL) { + qDebug() << "simconnect::correct() says: SimConnect_SubscribeToSystemEvent function not found in DLL!"; + return false; + } + + start(); + + return true; +} + +void simconnect::handle() +{ + (void) simconnect_set6DOF(hSimConnect, virtSCPosX, virtSCPosY, virtSCPosZ, virtSCRotX, virtSCRotZ, virtSCRotY); +} + +void CALLBACK simconnect::processNextSimconnectEvent(SIMCONNECT_RECV* pData, DWORD, void *self_) +{ + simconnect& self = *reinterpret_cast<simconnect*>(self_); + + switch(pData->dwID) + { + default: + break; + case SIMCONNECT_RECV_ID_EVENT_FRAME: + self.handle(); + break; + } +} + +OPENTRACK_DECLARE_PROTOCOL(simconnect, SCControls, simconnectDll) diff --git a/proto-simconnect/ftnoir_protocol_sc.h b/proto-simconnect/ftnoir_protocol_sc.h new file mode 100644 index 00000000..ff664351 --- /dev/null +++ b/proto-simconnect/ftnoir_protocol_sc.h @@ -0,0 +1,108 @@ +/* Homepage http://facetracknoir.sourceforge.net/home/default.htm * + * * + * ISC License (ISC) * + * * + * Copyright (c) 2015, Wim Vriend * + * Copyright (c) 2014, Stanislaw Halik * + * * + * Permission to use, copy, modify, and/or distribute this software for any * + * purpose with or without fee is hereby granted, provided that the above * + * copyright notice and this permission notice appear in all copies. * + */ +#pragma once +#include "api/plugin-api.hpp" + +#include "ui_ftnoir_sccontrols.h" +#include <QThread> +#include <QMessageBox> +#include <QSettings> +#include <QLibrary> +#include <QProcess> +#include <QDebug> +#include <QFile> +#include "options/options.hpp" +using namespace options; +#include <windows.h> + +struct settings : opts { + value<int> sxs_manifest; + settings() : + opts("proto-simconnect"), + sxs_manifest(b, "sxs-manifest-version", 0) + {} +}; + +class simconnect : public IProtocol, private QThread +{ +public: + simconnect(); + ~simconnect() override; + bool correct(); + void pose(const double* headpose); + void handle(); + QString game_name() { + return "FS2004/FSX"; + } +private: + enum { SIMCONNECT_RECV_ID_EVENT_FRAME = 7 }; + + #pragma pack(push, 1) + struct SIMCONNECT_RECV + { + DWORD dwSize; + DWORD dwVersion; + DWORD dwID; + }; + #pragma pack(pop) + + typedef void (CALLBACK *DispatchProc)(SIMCONNECT_RECV*, DWORD, void*); + + typedef HRESULT (WINAPI *importSimConnect_Open)(HANDLE * phSimConnect, LPCSTR szName, HWND hWnd, DWORD UserEventWin32, HANDLE hEventHandle, DWORD ConfigIndex); + typedef HRESULT (WINAPI *importSimConnect_Close)(HANDLE hSimConnect); + typedef HRESULT (WINAPI *importSimConnect_CameraSetRelative6DOF)(HANDLE hSimConnect, float fDeltaX, float fDeltaY, float fDeltaZ, float fPitchDeg, float fBankDeg, float fHeadingDeg); + typedef HRESULT (WINAPI *importSimConnect_CallDispatch)(HANDLE hSimConnect, DispatchProc pfcnDispatch, void * pContext); + typedef HRESULT (WINAPI *importSimConnect_SubscribeToSystemEvent)(HANDLE hSimConnect, DWORD EventID, const char * SystemEventName); + + void run() override; + volatile bool should_stop; + + volatile float virtSCPosX; + volatile float virtSCPosY; + volatile float virtSCPosZ; + volatile float virtSCRotX; + volatile float virtSCRotY; + volatile float virtSCRotZ; + + importSimConnect_Open simconnect_open; + importSimConnect_Close simconnect_close; + importSimConnect_CameraSetRelative6DOF simconnect_set6DOF; + importSimConnect_CallDispatch simconnect_calldispatch; + importSimConnect_SubscribeToSystemEvent simconnect_subscribetosystemevent; + + HANDLE hSimConnect; + static void CALLBACK processNextSimconnectEvent(SIMCONNECT_RECV* pData, DWORD cbData, void *pContext); + settings s; + QLibrary SCClientLib; +}; + +class SCControls: public IProtocolDialog +{ + Q_OBJECT +public: + SCControls(); + void register_protocol(IProtocol *) {} + void unregister_protocol() {} +private: + Ui::UICSCControls ui; + settings s; +private slots: + void doOK(); + void doCancel(); +}; + +class simconnectDll : public Metadata +{ +public: + QString name() { return QString(QCoreApplication::translate("simconnectDll", "Microsoft FSX SimConnect")); } + QIcon icon() { return QIcon(":/images/fsx.png"); } +}; diff --git a/proto-simconnect/ftnoir_protocol_sc_dialog.cpp b/proto-simconnect/ftnoir_protocol_sc_dialog.cpp new file mode 100644 index 00000000..a14c6b44 --- /dev/null +++ b/proto-simconnect/ftnoir_protocol_sc_dialog.cpp @@ -0,0 +1,35 @@ +/* Homepage http://facetracknoir.sourceforge.net/home/default.htm * + * * + * ISC License (ISC) * + * * + * Copyright (c) 2015, Wim Vriend * + * * + * Permission to use, copy, modify, and/or distribute this software for any * + * purpose with or without fee is hereby granted, provided that the above * + * copyright notice and this permission notice appear in all copies. * + */ +#include "ftnoir_protocol_sc.h" +#include <QDebug> +#include "api/plugin-api.hpp" + +SCControls::SCControls() +{ + ui.setupUi( this ); + + // Connect Qt signals to member-functions + connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(doOK())); + connect(ui.buttonBox, SIGNAL(rejected()), this, SLOT(doCancel())); + + tie_setting(s.sxs_manifest, ui.comboBox); +} + +void SCControls::doOK() { + s.b->save(); + close(); +} + +void SCControls::doCancel() +{ + close(); +} + diff --git a/proto-simconnect/ftnoir_sccontrols.ui b/proto-simconnect/ftnoir_sccontrols.ui new file mode 100644 index 00000000..887d6d80 --- /dev/null +++ b/proto-simconnect/ftnoir_sccontrols.ui @@ -0,0 +1,109 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>UICSCControls</class> + <widget class="QWidget" name="UICSCControls"> + <property name="windowModality"> + <enum>Qt::NonModal</enum> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>346</width> + <height>148</height> + </rect> + </property> + <property name="windowTitle"> + <string>Protocol settings</string> + </property> + <property name="windowIcon"> + <iconset> + <normaloff>images/FaceTrackNoIR.png</normaloff>images/FaceTrackNoIR.png</iconset> + </property> + <property name="layoutDirection"> + <enum>Qt::LeftToRight</enum> + </property> + <property name="autoFillBackground"> + <bool>false</bool> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QFrame" name="frame"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Maximum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string>FSX version</string> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="comboBox"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <item> + <property name="text"> + <string>SP1</string> + </property> + </item> + <item> + <property name="text"> + <string>SP2</string> + </property> + </item> + <item> + <property name="text"> + <string>Acceleration</string> + </property> + </item> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QLabel" name="label_2"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Minimum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>You need to install SimConnect SDK for your FSX version. For the Steam version, choose SP1 in the above combo box.</string> + </property> + <property name="alignment"> + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="standardButtons"> + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> + <slots> + <slot>startEngineClicked()</slot> + <slot>stopEngineClicked()</slot> + <slot>cameraSettingsClicked()</slot> + </slots> +</ui> diff --git a/proto-simconnect/images/fsx.png b/proto-simconnect/images/fsx.png Binary files differnew file mode 100644 index 00000000..16b072a1 --- /dev/null +++ b/proto-simconnect/images/fsx.png diff --git a/proto-simconnect/images/fsx1.png b/proto-simconnect/images/fsx1.png Binary files differnew file mode 100644 index 00000000..a1f0f188 --- /dev/null +++ b/proto-simconnect/images/fsx1.png diff --git a/proto-simconnect/lang/nl_NL.ts b/proto-simconnect/lang/nl_NL.ts new file mode 100644 index 00000000..f01f6d88 --- /dev/null +++ b/proto-simconnect/lang/nl_NL.ts @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="nl_NL"> +<context> + <name>UICSCControls</name> + <message> + <location filename="../ftnoir_sccontrols.ui" line="+17"/> + <source>Protocol settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+25"/> + <source>FSX version</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+14"/> + <source>SP1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>SP2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Acceleration</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+17"/> + <source>You need to install SimConnect SDK for your FSX version. For the Steam version, choose SP1 in the above combo box.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>simconnectDll</name> + <message> + <location filename="../ftnoir_protocol_sc.h" line="+106"/> + <source>Microsoft FSX SimConnect</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/proto-simconnect/lang/ru_RU.ts b/proto-simconnect/lang/ru_RU.ts new file mode 100644 index 00000000..3d49c8b8 --- /dev/null +++ b/proto-simconnect/lang/ru_RU.ts @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="ru_RU"> +<context> + <name>UICSCControls</name> + <message> + <location filename="../ftnoir_sccontrols.ui" line="+17"/> + <source>Protocol settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+25"/> + <source>FSX version</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+14"/> + <source>SP1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>SP2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Acceleration</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+17"/> + <source>You need to install SimConnect SDK for your FSX version. For the Steam version, choose SP1 in the above combo box.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>simconnectDll</name> + <message> + <location filename="../ftnoir_protocol_sc.h" line="+106"/> + <source>Microsoft FSX SimConnect</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/proto-simconnect/lang/stub.ts b/proto-simconnect/lang/stub.ts new file mode 100644 index 00000000..522fc4e8 --- /dev/null +++ b/proto-simconnect/lang/stub.ts @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1"> +<context> + <name>UICSCControls</name> + <message> + <location filename="../ftnoir_sccontrols.ui" line="+17"/> + <source>Protocol settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+25"/> + <source>FSX version</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+14"/> + <source>SP1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>SP2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Acceleration</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+17"/> + <source>You need to install SimConnect SDK for your FSX version. For the Steam version, choose SP1 in the above combo box.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>simconnectDll</name> + <message> + <location filename="../ftnoir_protocol_sc.h" line="+106"/> + <source>Microsoft FSX SimConnect</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/proto-simconnect/sc-protocol.qrc b/proto-simconnect/sc-protocol.qrc new file mode 100644 index 00000000..127d5180 --- /dev/null +++ b/proto-simconnect/sc-protocol.qrc @@ -0,0 +1,5 @@ +<RCC> + <qresource prefix="/"> + <file>images/fsx.png</file> + </qresource> +</RCC> diff --git a/proto-simconnect/scserver.manifest b/proto-simconnect/scserver.manifest new file mode 100644 index 00000000..d342cfda --- /dev/null +++ b/proto-simconnect/scserver.manifest @@ -0,0 +1,13 @@ +<?xml version='1.0' encoding='UTF-8' standalone='yes'?> +<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> + <dependency> + <dependentAssembly> + <assemblyIdentity type='win32' name='Microsoft.FlightSimulator.SimConnect' version='10.0.61259.0' processorArchitecture='x86' publicKeyToken='67c7c14424d61b5b' /> + </dependentAssembly> + </dependency> + <dependency> + <dependentAssembly> + <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' /> + </dependentAssembly> + </dependency> +</assembly> diff --git a/proto-simconnect/scserver_acceleration.manifest b/proto-simconnect/scserver_acceleration.manifest new file mode 100644 index 00000000..06459587 --- /dev/null +++ b/proto-simconnect/scserver_acceleration.manifest @@ -0,0 +1,13 @@ +<?xml version='1.0' encoding='UTF-8' standalone='yes'?> +<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> + <dependency> + <dependentAssembly> + <assemblyIdentity type='win32' name='Microsoft.FlightSimulator.SimConnect ' version='10.0.61242.0' processorArchitecture='x86' publicKeyToken='67c7c14424d61b5b' /> + </dependentAssembly> + </dependency> + <dependency> + <dependentAssembly> + <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' /> + </dependentAssembly> + </dependency> +</assembly> diff --git a/proto-simconnect/scserver_sp2.manifest b/proto-simconnect/scserver_sp2.manifest new file mode 100644 index 00000000..3020d16c --- /dev/null +++ b/proto-simconnect/scserver_sp2.manifest @@ -0,0 +1,13 @@ +<?xml version='1.0' encoding='UTF-8' standalone='yes'?> +<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> + <dependency> + <dependentAssembly> + <assemblyIdentity type='win32' name='Microsoft.FlightSimulator.SimConnect ' version='10.0.60905.0' processorArchitecture='x86' publicKeyToken='67c7c14424d61b5b' /> + </dependentAssembly> + </dependency> + <dependency> + <dependentAssembly> + <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' /> + </dependentAssembly> + </dependency> +</assembly> |