<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>http://www.fsdeveloper.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Russdirks</id>
	<title>FSDeveloper Wiki - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="http://www.fsdeveloper.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Russdirks"/>
	<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php/Special:Contributions/Russdirks"/>
	<updated>2026-05-17T10:28:34Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=Talk:FSX_KML&amp;diff=1919</id>
		<title>Talk:FSX KML</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=Talk:FSX_KML&amp;diff=1919"/>
		<updated>2006-10-28T20:12:04Z</updated>

		<summary type="html">&lt;p&gt;Russdirks: /* 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 1 ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;&#039;FSX KML expects the SDK to be installed in the standard SDK subfolder of your FSX installation&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
I&#039;m really looking forward to using your program, however if the above statement still holds true when you make your final release, I and many other people won&#039;t be able to use it, since we installed either the game itself, or the SDK, to places of our own preference.  I think it is essential that your program have an options screen where the user can specify a path to the SDK.&lt;br /&gt;
&lt;br /&gt;
--[[User:Russdirks|Russdirks]] 18:10, 14 October 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
Ok. Good point. I will add config setting for SDK path also.&lt;br /&gt;
&lt;br /&gt;
--[[User:MatthewS|MatthewS]] 22:39, 14 October 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
Thanks for adding that feature.  Maybe you already have this on your to-do list, but another suggestion I have is to make it so the program remembers the SDK path settings, and also the other options, like the one to put the bgl files into Addon Scenery.  I generally like to put scenery outside of the FSX folder tree.  Overall though, great program!  I love the user interface!  Very clean.  I think this program has great potential.  Thanks for writing it.&lt;br /&gt;
&lt;br /&gt;
Eagerly awaiting the ISLAND tag feature! :)&lt;br /&gt;
&lt;br /&gt;
--[[User:Russdirks|Russdirks]] 22:10, 28 October 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
== 2 == &lt;br /&gt;
Google Earth Free Version&lt;br /&gt;
&lt;br /&gt;
Q. Is it possible do this without purchasing GE plus? If so - how?&lt;br /&gt;
&lt;br /&gt;
A. It would be hard. GE plus allows you to easily draw polygons and polylines. I think GE plus it is definitely worth the $20.  Otherwise you would have to somehow manually input a list of coordinates for each placemark. With GE plus you can &amp;quot;trace&amp;quot; your scenery, very very easy and quick!&lt;br /&gt;
&lt;br /&gt;
--[[User:MatthewS|MatthewS]] 12:47, 27 October 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
== 3 ==&lt;br /&gt;
&lt;br /&gt;
Thanks for the answer.  I bought GE PLUS, and i&#039;m now tryin to make some scenery.  However, I have no expirirence doing thisl and I have lots of questions.  I cant figure out how to make exlusions work for example.  I made a new accurate coastline but its just sitting in the sea of the shore! how do I exclude the old scenery? and make the land come out to the shore?  &lt;br /&gt;
&lt;br /&gt;
Are there any good tutorials giving instruvtions for this?  Do the instuctions for fs2004 still apply for fsx?&lt;br /&gt;
&lt;br /&gt;
Genoius program by the way.  Would it be possible to get accurate shoreline data, by downloading and merging aerial images and then messing with the contrast in photoshop and deriving a line somehow?&lt;br /&gt;
&lt;br /&gt;
Great program, thanks for your brilliant work.&lt;br /&gt;
&lt;br /&gt;
Juicifer&lt;/div&gt;</summary>
		<author><name>Russdirks</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=Talk:FSX_KML&amp;diff=1918</id>
		<title>Talk:FSX KML</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=Talk:FSX_KML&amp;diff=1918"/>
		<updated>2006-10-28T20:11:49Z</updated>

		<summary type="html">&lt;p&gt;Russdirks: /* 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 1 ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;&#039;FSX KML expects the SDK to be installed in the standard SDK subfolder of your FSX installation&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
I&#039;m really looking forward to using your program, however if the above statement still holds true when you make your final release, I and many other people won&#039;t be able to use it, since we installed either the game itself, or the SDK, to places of our own preference.  I think it is essential that your program have an options screen where the user can specify a path to the SDK.&lt;br /&gt;
&lt;br /&gt;
--[[User:Russdirks|Russdirks]] 18:10, 14 October 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
Ok. Good point. I will add config setting for SDK path also.&lt;br /&gt;
&lt;br /&gt;
--[[User:MatthewS|MatthewS]] 22:39, 14 October 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
Thanks for adding that feature.  Maybe you already have this on your to-do list, but another suggestion I have is to make it so the program remembers the SDK path settings, and also the other options, like the one to put the bgl files into Addon Scenery.  I generally like to put scenery outside of the FSX folder tree.  Overall though, great program!  I love the user interface!  Very clean.  I think this program has great potential.  Thanks for writing it.&lt;br /&gt;
&lt;br /&gt;
Eagerly awaiting the ISLAND tag feature! :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Russdirks|Russdirks]] 22:10, 28 October 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
== 2 == &lt;br /&gt;
Google Earth Free Version&lt;br /&gt;
&lt;br /&gt;
Q. Is it possible do this without purchasing GE plus? If so - how?&lt;br /&gt;
&lt;br /&gt;
A. It would be hard. GE plus allows you to easily draw polygons and polylines. I think GE plus it is definitely worth the $20.  Otherwise you would have to somehow manually input a list of coordinates for each placemark. With GE plus you can &amp;quot;trace&amp;quot; your scenery, very very easy and quick!&lt;br /&gt;
&lt;br /&gt;
--[[User:MatthewS|MatthewS]] 12:47, 27 October 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
== 3 ==&lt;br /&gt;
&lt;br /&gt;
Thanks for the answer.  I bought GE PLUS, and i&#039;m now tryin to make some scenery.  However, I have no expirirence doing thisl and I have lots of questions.  I cant figure out how to make exlusions work for example.  I made a new accurate coastline but its just sitting in the sea of the shore! how do I exclude the old scenery? and make the land come out to the shore?  &lt;br /&gt;
&lt;br /&gt;
Are there any good tutorials giving instruvtions for this?  Do the instuctions for fs2004 still apply for fsx?&lt;br /&gt;
&lt;br /&gt;
Genoius program by the way.  Would it be possible to get accurate shoreline data, by downloading and merging aerial images and then messing with the contrast in photoshop and deriving a line somehow?&lt;br /&gt;
&lt;br /&gt;
Great program, thanks for your brilliant work.&lt;br /&gt;
&lt;br /&gt;
Juicifer&lt;/div&gt;</summary>
		<author><name>Russdirks</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=Talk:FSX_KML&amp;diff=1917</id>
		<title>Talk:FSX KML</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=Talk:FSX_KML&amp;diff=1917"/>
		<updated>2006-10-28T20:10:47Z</updated>

		<summary type="html">&lt;p&gt;Russdirks: /* 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 1 ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;&#039;FSX KML expects the SDK to be installed in the standard SDK subfolder of your FSX installation&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
I&#039;m really looking forward to using your program, however if the above statement still holds true when you make your final release, I and many other people won&#039;t be able to use it, since we installed either the game itself, or the SDK, to places of our own preference.  I think it is essential that your program have an options screen where the user can specify a path to the SDK.&lt;br /&gt;
&lt;br /&gt;
--[[User:Russdirks|Russdirks]] 18:10, 14 October 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
Ok. Good point. I will add config setting for SDK path also.&lt;br /&gt;
&lt;br /&gt;
--[[User:MatthewS|MatthewS]] 22:39, 14 October 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
Thanks for adding that feature.  Maybe you already have this on your to-do list, but another suggestion I have is to make it so the program remembers the SDK path settings, and also the other options, like the one to put the bgl files into Addon Scenery.  I generally like to put scenery outside of the FSX folder tree.  Overall though, great program!  I love the user interface!  Very clean.  I think this program has great potential.  Thanks for writing it.&lt;br /&gt;
&lt;br /&gt;
--[[User:Russdirks|Russdirks]] 22:10, 28 October 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
== 2 == &lt;br /&gt;
Google Earth Free Version&lt;br /&gt;
&lt;br /&gt;
Q. Is it possible do this without purchasing GE plus? If so - how?&lt;br /&gt;
&lt;br /&gt;
A. It would be hard. GE plus allows you to easily draw polygons and polylines. I think GE plus it is definitely worth the $20.  Otherwise you would have to somehow manually input a list of coordinates for each placemark. With GE plus you can &amp;quot;trace&amp;quot; your scenery, very very easy and quick!&lt;br /&gt;
&lt;br /&gt;
--[[User:MatthewS|MatthewS]] 12:47, 27 October 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
== 3 ==&lt;br /&gt;
&lt;br /&gt;
Thanks for the answer.  I bought GE PLUS, and i&#039;m now tryin to make some scenery.  However, I have no expirirence doing thisl and I have lots of questions.  I cant figure out how to make exlusions work for example.  I made a new accurate coastline but its just sitting in the sea of the shore! how do I exclude the old scenery? and make the land come out to the shore?  &lt;br /&gt;
&lt;br /&gt;
Are there any good tutorials giving instruvtions for this?  Do the instuctions for fs2004 still apply for fsx?&lt;br /&gt;
&lt;br /&gt;
Genoius program by the way.  Would it be possible to get accurate shoreline data, by downloading and merging aerial images and then messing with the contrast in photoshop and deriving a line somehow?&lt;br /&gt;
&lt;br /&gt;
Great program, thanks for your brilliant work.&lt;br /&gt;
&lt;br /&gt;
Juicifer&lt;/div&gt;</summary>
		<author><name>Russdirks</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=Talk:FSX_KML&amp;diff=1840</id>
		<title>Talk:FSX KML</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=Talk:FSX_KML&amp;diff=1840"/>
		<updated>2006-10-14T16:10:30Z</updated>

		<summary type="html">&lt;p&gt;Russdirks: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;quot;&#039;&#039;FSX KML expects the SDK to be installed in the standard SDK subfolder of your FSX installation&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
I&#039;m really looking forward to using your program, however if the above statement still holds true when you make your final release, I and many other people won&#039;t be able to use it, since we installed either the game itself, or the SDK, to places of our own preference.  I think it is essential that your program have an options screen where the user can specify a path to the SDK.&lt;br /&gt;
&lt;br /&gt;
--[[User:Russdirks|Russdirks]] 18:10, 14 October 2006 (CEST)&lt;/div&gt;</summary>
		<author><name>Russdirks</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=SimConnect_-_Accessing_from_VB&amp;diff=1794</id>
		<title>SimConnect - Accessing from VB</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=SimConnect_-_Accessing_from_VB&amp;diff=1794"/>
		<updated>2006-10-09T17:14:29Z</updated>

		<summary type="html">&lt;p&gt;Russdirks: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The SimConnect documentation states that you must use C or C++ to access SimConnect, unless you use the managed API, in which case you can use any of the Microsoft .Net language compilers.  However I have found, after a bit of experimentation, that you can access the non-managed SimConnect API from VB and VBA, using appropriate DECLARE statements.&lt;br /&gt;
&lt;br /&gt;
Below are the DECLARE statements I have written so far.  Others can contribute to this section if they wish, until the entire API is covered.&lt;br /&gt;
&lt;br /&gt;
Note : to make these work, you&#039;ll have to place a copy of SimConnect.dll somewhere where VB can find it, or else specify the path to it directly in the Declare statement&lt;br /&gt;
&lt;br /&gt;
==Declare Statements==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Declare Function SimConnect_Open Lib &amp;quot;SimConnect.dll&amp;quot; _&lt;br /&gt;
   (phSimConnect As Long, _&lt;br /&gt;
    ByVal szName As String, _&lt;br /&gt;
    ByVal hWnd As Long, _&lt;br /&gt;
    ByVal UserEventWin32 As Long, _&lt;br /&gt;
    ByVal hEventHandle As Long, _&lt;br /&gt;
    ByVal ConfigIndex As Long) As Long&lt;br /&gt;
 &lt;br /&gt;
Declare Function SimConnect_GetNextDispatch Lib &amp;quot;SimConnect.dll&amp;quot; _&lt;br /&gt;
      (ByVal hSimConnect As Long, _&lt;br /&gt;
       ppData As Long, _&lt;br /&gt;
       pcbData As Long) As Long&lt;br /&gt;
       &lt;br /&gt;
Declare Function SimConnect_AddToDataDefinition Lib &amp;quot;SimConnect.dll&amp;quot; _&lt;br /&gt;
      (ByVal hSimConnect As Long, _&lt;br /&gt;
       ByVal DefineID As Long, _&lt;br /&gt;
       ByVal DatumName As String, _&lt;br /&gt;
       ByVal UnitsName As String, _&lt;br /&gt;
       Optional ByVal DatumType As Long, _&lt;br /&gt;
       Optional ByVal fEpsilon As Single, _&lt;br /&gt;
       Optional ByVal DatumID As Long) As Long&lt;br /&gt;
       &lt;br /&gt;
Declare Function SimConnect_RequestDataOnSimObjectType Lib &amp;quot;SimConnect.dll&amp;quot; _&lt;br /&gt;
      (ByVal hSimConnect As Long, _&lt;br /&gt;
       ByVal RequestID As Long, _&lt;br /&gt;
       ByVal DefineID As Long, _&lt;br /&gt;
       ByVal dwRadiusMeters As Long, _&lt;br /&gt;
       ByVal ObjectType As Long) As Long&lt;br /&gt;
       &lt;br /&gt;
Declare Function SimConnect_Close Lib &amp;quot;SimConnect.dll&amp;quot; (ByVal hSimConnect As Long) As Long&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Constants &amp;amp; Enums==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Const S_OK = 0&lt;br /&gt;
Const E_FAIL = &amp;amp;H80004005&lt;br /&gt;
Const E_INVALIDARG = &amp;amp;H80070057&lt;br /&gt;
&lt;br /&gt;
Enum SIMCONNECT_RECV_ID&lt;br /&gt;
    SIMCONNECT_RECV_ID_NULL&lt;br /&gt;
    SIMCONNECT_RECV_ID_EXCEPTION&lt;br /&gt;
    SIMCONNECT_RECV_ID_OPEN&lt;br /&gt;
    SIMCONNECT_RECV_ID_QUIT&lt;br /&gt;
    SIMCONNECT_RECV_ID_EVENT&lt;br /&gt;
    SIMCONNECT_RECV_ID_EVENT_OBJECT_ADDREMOVE&lt;br /&gt;
    SIMCONNECT_RECV_ID_EVENT_FILENAME&lt;br /&gt;
    SIMCONNECT_RECV_ID_EVENT_FRAME&lt;br /&gt;
    SIMCONNECT_RECV_ID_SIMOBJECT_DATA&lt;br /&gt;
    SIMCONNECT_RECV_ID_SIMOBJECT_DATA_BYTYPE&lt;br /&gt;
    SIMCONNECT_RECV_ID_WEATHER_OBSERVATION&lt;br /&gt;
    SIMCONNECT_RECV_ID_CLOUD_STATE&lt;br /&gt;
    SIMCONNECT_RECV_ID_ASSIGNED_OBJECT_ID&lt;br /&gt;
    SIMCONNECT_RECV_ID_RESERVED_KEY&lt;br /&gt;
    SIMCONNECT_RECV_ID_CUSTOM_ACTION&lt;br /&gt;
    SIMCONNECT_RECV_ID_SYSTEM_STATE&lt;br /&gt;
    SIMCONNECT_RECV_ID_CLIENT_DATA&lt;br /&gt;
End Enum&lt;br /&gt;
&lt;br /&gt;
Enum SIMCONNECT_DATATYPE&lt;br /&gt;
    SIMCONNECT_DATATYPE_INVALID        &#039; invalid data type&lt;br /&gt;
    SIMCONNECT_DATATYPE_INT32          &#039; 32-bit integer number&lt;br /&gt;
    SIMCONNECT_DATATYPE_INT64          &#039; 64-bit integer number&lt;br /&gt;
    SIMCONNECT_DATATYPE_FLOAT32        &#039; 32-bit floating-point number (float)&lt;br /&gt;
    SIMCONNECT_DATATYPE_FLOAT64        &#039; 64-bit floating-point number (double)&lt;br /&gt;
    SIMCONNECT_DATATYPE_STRING8        &#039; 8-byte string&lt;br /&gt;
    SIMCONNECT_DATATYPE_STRING32       &#039; 32-byte string&lt;br /&gt;
    SIMCONNECT_DATATYPE_STRING64       &#039; 64-byte string&lt;br /&gt;
    SIMCONNECT_DATATYPE_STRING128      &#039; 128-byte string&lt;br /&gt;
    SIMCONNECT_DATATYPE_STRING256      &#039; 256-byte string&lt;br /&gt;
    SIMCONNECT_DATATYPE_STRING260      &#039; 260-byte string&lt;br /&gt;
    SIMCONNECT_DATATYPE_STRINGV        &#039; variable-length string&lt;br /&gt;
&lt;br /&gt;
    SIMCONNECT_DATATYPE_INITPOSITION   &#039; see SIMCONNECT_DATA_INITPOSITION&lt;br /&gt;
    SIMCONNECT_DATATYPE_MARKERSTATE    &#039; see SIMCONNECT_DATA_MARKERSTATE&lt;br /&gt;
    SIMCONNECT_DATATYPE_WAYPOINT       &#039; see SIMCONNECT_DATA_WAYPOINT&lt;br /&gt;
    SIMCONNECT_DATATYPE_LATLONALT      &#039; see SIMCONNECT_DATA_LATLONALT&lt;br /&gt;
    SIMCONNECT_DATATYPE_XYZ            &#039; see SIMCONNECT_DATA_XYZ&lt;br /&gt;
&lt;br /&gt;
    SIMCONNECT_DATATYPE_MAX             &#039; enum limit&lt;br /&gt;
End Enum&lt;br /&gt;
&lt;br /&gt;
Enum SIMCONNECT_SIMOBJECT_TYPE&lt;br /&gt;
  SIMCONNECT_SIMOBJECT_TYPE_USER&lt;br /&gt;
  SIMCONNECT_SIMOBJECT_TYPE_ALL&lt;br /&gt;
  SIMCONNECT_SIMOBJECT_TYPE_AIRCRAFT&lt;br /&gt;
  SIMCONNECT_SIMOBJECT_TYPE_HELICOPTER&lt;br /&gt;
  SIMCONNECT_SIMOBJECT_TYPE_BOAT&lt;br /&gt;
  SIMCONNECT_SIMOBJECT_TYPE_GROUND&lt;br /&gt;
End Enum&lt;br /&gt;
&lt;br /&gt;
Enum SIMCONNECT_EXCEPTION&lt;br /&gt;
  SIMCONNECT_EXCEPTION_NONE = 0&lt;br /&gt;
  SIMCONNECT_EXCEPTION_ERROR = 1&lt;br /&gt;
  SIMCONNECT_EXCEPTION_SIZE_MISMATCH = 2&lt;br /&gt;
  SIMCONNECT_EXCEPTION_UNRECOGNIZED_ID = 3&lt;br /&gt;
  SIMCONNECT_EXCEPTION_UNOPENED = 4&lt;br /&gt;
  SIMCONNECT_EXCEPTION_VERSION_MISMATCH = 5&lt;br /&gt;
  SIMCONNECT_EXCEPTION_TOO_MANY_GROUPS = 6&lt;br /&gt;
  SIMCONNECT_EXCEPTION_NAME_UNRECOGNIZED = 7&lt;br /&gt;
  SIMCONNECT_EXCEPTION_TOO_MANY_EVENT_NAMES = 8&lt;br /&gt;
  SIMCONNECT_EXCEPTION_EVENT_ID_DUPLICATE = 9&lt;br /&gt;
  SIMCONNECT_EXCEPTION_TOO_MANY_MAPS = 10&lt;br /&gt;
  SIMCONNECT_EXCEPTION_TOO_MANY_OBJECTS = 11&lt;br /&gt;
  SIMCONNECT_EXCEPTION_TOO_MANY_REQUESTS = 12&lt;br /&gt;
  SIMCONNECT_EXCEPTION_WEATHER_INVALID_PORT = 13&lt;br /&gt;
  SIMCONNECT_EXCEPTION_WEATHER_INVALID_METAR = 14&lt;br /&gt;
  SIMCONNECT_EXCEPTION_WEATHER_UNABLE_TO_GET_OBSERVATION = 15&lt;br /&gt;
  SIMCONNECT_EXCEPTION_WEATHER_UNABLE_TO_CREATE_STATION = 16&lt;br /&gt;
  SIMCONNECT_EXCEPTION_WEATHER_UNABLE_TO_REMOVE_STATION = 17&lt;br /&gt;
  SIMCONNECT_EXCEPTION_INVALID_DATA_TYPE = 18&lt;br /&gt;
  SIMCONNECT_EXCEPTION_INVALID_DATA_SIZE = 19&lt;br /&gt;
  SIMCONNECT_EXCEPTION_DATA_ERROR = 20&lt;br /&gt;
  SIMCONNECT_EXCEPTION_INVALID_ARRAY = 21&lt;br /&gt;
  SIMCONNECT_EXCEPTION_CREATE_OBJECT_FAILED = 22&lt;br /&gt;
  SIMCONNECT_EXCEPTION_LOAD_FLIGHTPLAN_FAILED = 23&lt;br /&gt;
  SIMCONNECT_EXCEPTION_OPERATION_INVALID_FOR_OJBECT_TYPE = 24&lt;br /&gt;
  SIMCONNECT_EXCEPTION_ILLEGAL_OPERATION = 25&lt;br /&gt;
  SIMCONNECT_EXCEPTION_ALREADY_SUBSCRIBED = 26&lt;br /&gt;
  SIMCONNECT_EXCEPTION_INVALID_ENUM = 27&lt;br /&gt;
  SIMCONNECT_EXCEPTION_DEFINITION_ERROR = 28&lt;br /&gt;
  SIMCONNECT_EXCEPTION_DUPLICATE_ID = 29&lt;br /&gt;
  SIMCONNECT_EXCEPTION_DATUM_ID = 30&lt;br /&gt;
  SIMCONNECT_EXCEPTION_OUT_OF_BOUNDS = 31&lt;br /&gt;
End Enum&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Structures==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Type SIMCONNECT_RECV&lt;br /&gt;
   dwSize As Long&lt;br /&gt;
   dwVersion As Long&lt;br /&gt;
   dwID As Long&lt;br /&gt;
End Type&lt;br /&gt;
&lt;br /&gt;
Type SIMCONNECT_RECV_EXCEPTION&lt;br /&gt;
  dwException As Long&lt;br /&gt;
  dwSendID As Long&lt;br /&gt;
  dwIndex As Long&lt;br /&gt;
End Type&lt;br /&gt;
&lt;br /&gt;
Type SIMCONNECT_RECV_OPEN&lt;br /&gt;
  szApplicationName As String * 256&lt;br /&gt;
  dwApplicationVersionMajor As Long&lt;br /&gt;
  dwApplicationVersionMinor As Long&lt;br /&gt;
  dwApplicationBuildMajor As Long&lt;br /&gt;
  dwApplicationBuildMinor As Long&lt;br /&gt;
  dwSimConnectVersionMajor As Long&lt;br /&gt;
  dwSimConnectVersionMinor As Long&lt;br /&gt;
  dwSimConnectBuildMajor As Long&lt;br /&gt;
  dwSimConnectBuildMinor As Long&lt;br /&gt;
  dwReserved1 As Long&lt;br /&gt;
  dwReserved2 As Long&lt;br /&gt;
End Type&lt;br /&gt;
&lt;br /&gt;
Type SIMCONNECT_RECV_SIMOBJECT_DATA&lt;br /&gt;
  dwRequestID As Long&lt;br /&gt;
  dwObjectID As Long&lt;br /&gt;
  dwDefineID As Long&lt;br /&gt;
  dwFlags As Long&lt;br /&gt;
  dwentrynumber As Long&lt;br /&gt;
  dwoutof As Long&lt;br /&gt;
  dwDefineCount As Long&lt;br /&gt;
  dwData As Long&lt;br /&gt;
End Type&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sample Code==&lt;br /&gt;
This code retrieves the latitude / longitude of the user aircraft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Public Declare Sub CopyMemory Lib &amp;quot;kernel32&amp;quot; Alias &amp;quot;RtlMoveMemory&amp;quot; _&lt;br /&gt;
      (Destination As Any, _&lt;br /&gt;
       Source As Any, _&lt;br /&gt;
       ByVal Length As Long)&lt;br /&gt;
&lt;br /&gt;
Public Declare Function GetTickCount Lib &amp;quot;kernel32&amp;quot; () As Long&lt;br /&gt;
&lt;br /&gt;
Enum DATA_DEFINE_ID&lt;br /&gt;
   DATA_DEF_POSITION&lt;br /&gt;
End Enum&lt;br /&gt;
&lt;br /&gt;
Enum DATA_REQUEST_ID&lt;br /&gt;
   DATA_REQUEST_POSITION&lt;br /&gt;
End Enum&lt;br /&gt;
&lt;br /&gt;
Enum DATA_IDS&lt;br /&gt;
   DATA_LATITUDE&lt;br /&gt;
   DATA_LONGITUDE&lt;br /&gt;
End Enum&lt;br /&gt;
&lt;br /&gt;
Type PosRec&lt;br /&gt;
   Latitude As Double&lt;br /&gt;
   Longitude As Double&lt;br /&gt;
End Type&lt;br /&gt;
&lt;br /&gt;
Dim hSimConnect As Long&lt;br /&gt;
Dim Position As PosRec&lt;br /&gt;
   &lt;br /&gt;
Sub GetPosition()&lt;br /&gt;
   Dim hr As Long&lt;br /&gt;
   Dim T As Long&lt;br /&gt;
   &lt;br /&gt;
   hr = SimConnect_Open(hSimConnect, &amp;quot;MYAPP&amp;quot;, 0, 0, 0, 0)&lt;br /&gt;
   If (hr &amp;lt;&amp;gt; S_OK) Then&lt;br /&gt;
      MsgBox &amp;quot;Unable to connect with FSX!&amp;quot;, vbExclamation, &amp;quot;SimConnect&amp;quot;&lt;br /&gt;
   Else&lt;br /&gt;
      hr = SimConnect_AddToDataDefinition(hSimConnect, DATA_DEF_POSIION, &amp;quot;PLANE LATITUDE&amp;quot;, &amp;quot;Degrees&amp;quot;, _&lt;br /&gt;
                  SIMCONNECT_DATATYPE_FLOAT64, 0, DATA_LATITUDE)&lt;br /&gt;
      hr = SimConnect_AddToDataDefinition(hSimConnect, DATA_DEF_POSIION, &amp;quot;PLANE LONGITUDE&amp;quot;, &amp;quot;Degrees&amp;quot;, _&lt;br /&gt;
                  SIMCONNECT_DATATYPE_FLOAT64, 0, DATA_LONGITUDE)&lt;br /&gt;
      hr = SimConnect_RequestDataOnSimObjectType(hSimConnect, DATA_REQUEST_POSITION, DATA_DEF_POSITION, _&lt;br /&gt;
                  0, SIMCONNECT_SIMOBJECT_TYPE_USER)&lt;br /&gt;
      T = GetTickCount()&lt;br /&gt;
      Do&lt;br /&gt;
         DoEvents&lt;br /&gt;
         RequestID = GetNextDispatch()&lt;br /&gt;
      Loop Until (RequestID = DATA_REQUEST_POSITION) Or (GetTickCount() &amp;gt; T + 2000)&lt;br /&gt;
      If RequestID = DATA_REQUEST_POSITION Then&lt;br /&gt;
         MsgBox &amp;quot;Latitude : &amp;quot; + Format(Position.Latitude, &amp;quot;Fixed&amp;quot;) + vbCrLf + _&lt;br /&gt;
                &amp;quot;Longitude : &amp;quot; + Format(Position.Longitude, &amp;quot;Fixed&amp;quot;), vbInformation&lt;br /&gt;
      Else&lt;br /&gt;
         MsgBox &amp;quot;No data available!&amp;quot;, vbExclamation&lt;br /&gt;
      End If&lt;br /&gt;
      SimConnect_Close hSimConnect&lt;br /&gt;
   End If&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Function GetNextDispatch() As Long&lt;br /&gt;
   &#039; this function returns the dwRequestID field of SIMCONNECT_RECV_SIMOBJECT_DATA, if applicable&lt;br /&gt;
   &#039; otherwise -1&lt;br /&gt;
   Dim hr As Long&lt;br /&gt;
   Dim pData As Long, pcbData As Long&lt;br /&gt;
   Dim Recv As SIMCONNECT_RECV&lt;br /&gt;
   &lt;br /&gt;
   GetNextDispatch = -1&lt;br /&gt;
   hr = SimConnect_GetNextDispatch(hSimConnect, pData, pcbData)&lt;br /&gt;
   If hr = S_OK Then&lt;br /&gt;
      CopyMemory Recv, ByVal pData, Len(Recv)&lt;br /&gt;
      Select Case Recv.dwID&lt;br /&gt;
         Case SIMCONNECT_RECV_ID_OPEN&lt;br /&gt;
            Dim RecvOpen As SIMCONNECT_RECV_OPEN&lt;br /&gt;
            pData = pData + Len(Recv)&lt;br /&gt;
            CopyMemory RecvOpen, ByVal pData, Len(RecvOpen)&lt;br /&gt;
            &#039; add code here&lt;br /&gt;
         Case SIMCONNECT_RECV_ID_EXCEPTION&lt;br /&gt;
            Dim RecvException As SIMCONNECT_RECV_EXCEPTION&lt;br /&gt;
            pData = pData + Len(Recv)&lt;br /&gt;
            CopyMemory RecvException, ByVal pData, Len(RecvException)&lt;br /&gt;
            &#039; add code here&lt;br /&gt;
         Case SIMCONNECT_RECV_ID_SIMOBJECT_DATA_BYTYPE&lt;br /&gt;
            Dim RecvData As SIMCONNECT_RECV_SIMOBJECT_DATA&lt;br /&gt;
            pData = pData + Len(Recv)&lt;br /&gt;
            CopyMemory RecvData, ByVal pData, Len(RecvData)&lt;br /&gt;
            GetNextDispatch = RecvData.dwRequestID&lt;br /&gt;
            Select Case RecvData.dwRequestID&lt;br /&gt;
               Case DATA_REQUEST_POSITION&lt;br /&gt;
                  pData = pData + Len(RecvData) - 4&lt;br /&gt;
                  CopyMemory Position, ByVal pData, Len(Position)&lt;br /&gt;
            End Select&lt;br /&gt;
      End Select&lt;br /&gt;
   End If&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--[[User:Russdirks|Russdirks]] 19:04, 9 October 2006 (CEST)&lt;br /&gt;
[[category:SimConnect]]&lt;/div&gt;</summary>
		<author><name>Russdirks</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=SimConnect_-_Accessing_from_VB&amp;diff=1793</id>
		<title>SimConnect - Accessing from VB</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=SimConnect_-_Accessing_from_VB&amp;diff=1793"/>
		<updated>2006-10-09T17:04:58Z</updated>

		<summary type="html">&lt;p&gt;Russdirks: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
The SimConnect documentation states that you must use C or C++ to access SimConnect, unless you use the managed API, in which case you can use any of the Microsoft .Net language compilers.  However I have found, after a bit of experimentation, that you can access the non-managed SimConnect API from VB and VBA, using appropriate DECLARE statements.&lt;br /&gt;
&lt;br /&gt;
Below are the DECLARE statements I have written so far.  Others can contribute to this section if they wish, until the entire API is covered.&lt;br /&gt;
&lt;br /&gt;
Note : to make these work, you&#039;ll have to place a copy of SimConnect.dll somewhere where VB can find it, or else specify the path to it directly in the Declare statement&lt;br /&gt;
&lt;br /&gt;
==Declare Statements==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Declare Function SimConnect_Open Lib &amp;quot;SimConnect.dll&amp;quot; _&lt;br /&gt;
   (phSimConnect As Long, _&lt;br /&gt;
    ByVal szName As String, _&lt;br /&gt;
    ByVal hWnd As Long, _&lt;br /&gt;
    ByVal UserEventWin32 As Long, _&lt;br /&gt;
    ByVal hEventHandle As Long, _&lt;br /&gt;
    ByVal ConfigIndex As Long) As Long&lt;br /&gt;
 &lt;br /&gt;
Declare Function SimConnect_GetNextDispatch Lib &amp;quot;SimConnect.dll&amp;quot; _&lt;br /&gt;
      (ByVal hSimConnect As Long, _&lt;br /&gt;
       ppData As Long, _&lt;br /&gt;
       pcbData As Long) As Long&lt;br /&gt;
       &lt;br /&gt;
Declare Function SimConnect_AddToDataDefinition Lib &amp;quot;SimConnect.dll&amp;quot; _&lt;br /&gt;
      (ByVal hSimConnect As Long, _&lt;br /&gt;
       ByVal DefineID As Long, _&lt;br /&gt;
       ByVal DatumName As String, _&lt;br /&gt;
       ByVal UnitsName As String, _&lt;br /&gt;
       Optional ByVal DatumType As Long, _&lt;br /&gt;
       Optional ByVal fEpsilon As Single, _&lt;br /&gt;
       Optional ByVal DatumID As Long) As Long&lt;br /&gt;
       &lt;br /&gt;
Declare Function SimConnect_RequestDataOnSimObjectType Lib &amp;quot;SimConnect.dll&amp;quot; _&lt;br /&gt;
      (ByVal hSimConnect As Long, _&lt;br /&gt;
       ByVal RequestID As Long, _&lt;br /&gt;
       ByVal DefineID As Long, _&lt;br /&gt;
       ByVal dwRadiusMeters As Long, _&lt;br /&gt;
       ByVal ObjectType As Long) As Long&lt;br /&gt;
       &lt;br /&gt;
Declare Function SimConnect_Close Lib &amp;quot;SimConnect.dll&amp;quot; (ByVal hSimConnect As Long) As Long&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Constants &amp;amp; Enums==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Const S_OK = 0&lt;br /&gt;
Const E_FAIL = &amp;amp;H80004005&lt;br /&gt;
Const E_INVALIDARG = &amp;amp;H80070057&lt;br /&gt;
&lt;br /&gt;
Enum SIMCONNECT_RECV_ID&lt;br /&gt;
    SIMCONNECT_RECV_ID_NULL&lt;br /&gt;
    SIMCONNECT_RECV_ID_EXCEPTION&lt;br /&gt;
    SIMCONNECT_RECV_ID_OPEN&lt;br /&gt;
    SIMCONNECT_RECV_ID_QUIT&lt;br /&gt;
    SIMCONNECT_RECV_ID_EVENT&lt;br /&gt;
    SIMCONNECT_RECV_ID_EVENT_OBJECT_ADDREMOVE&lt;br /&gt;
    SIMCONNECT_RECV_ID_EVENT_FILENAME&lt;br /&gt;
    SIMCONNECT_RECV_ID_EVENT_FRAME&lt;br /&gt;
    SIMCONNECT_RECV_ID_SIMOBJECT_DATA&lt;br /&gt;
    SIMCONNECT_RECV_ID_SIMOBJECT_DATA_BYTYPE&lt;br /&gt;
    SIMCONNECT_RECV_ID_WEATHER_OBSERVATION&lt;br /&gt;
    SIMCONNECT_RECV_ID_CLOUD_STATE&lt;br /&gt;
    SIMCONNECT_RECV_ID_ASSIGNED_OBJECT_ID&lt;br /&gt;
    SIMCONNECT_RECV_ID_RESERVED_KEY&lt;br /&gt;
    SIMCONNECT_RECV_ID_CUSTOM_ACTION&lt;br /&gt;
    SIMCONNECT_RECV_ID_SYSTEM_STATE&lt;br /&gt;
    SIMCONNECT_RECV_ID_CLIENT_DATA&lt;br /&gt;
End Enum&lt;br /&gt;
&lt;br /&gt;
Enum SIMCONNECT_DATATYPE&lt;br /&gt;
    SIMCONNECT_DATATYPE_INVALID        &#039; invalid data type&lt;br /&gt;
    SIMCONNECT_DATATYPE_INT32          &#039; 32-bit integer number&lt;br /&gt;
    SIMCONNECT_DATATYPE_INT64          &#039; 64-bit integer number&lt;br /&gt;
    SIMCONNECT_DATATYPE_FLOAT32        &#039; 32-bit floating-point number (float)&lt;br /&gt;
    SIMCONNECT_DATATYPE_FLOAT64        &#039; 64-bit floating-point number (double)&lt;br /&gt;
    SIMCONNECT_DATATYPE_STRING8        &#039; 8-byte string&lt;br /&gt;
    SIMCONNECT_DATATYPE_STRING32       &#039; 32-byte string&lt;br /&gt;
    SIMCONNECT_DATATYPE_STRING64       &#039; 64-byte string&lt;br /&gt;
    SIMCONNECT_DATATYPE_STRING128      &#039; 128-byte string&lt;br /&gt;
    SIMCONNECT_DATATYPE_STRING256      &#039; 256-byte string&lt;br /&gt;
    SIMCONNECT_DATATYPE_STRING260      &#039; 260-byte string&lt;br /&gt;
    SIMCONNECT_DATATYPE_STRINGV        &#039; variable-length string&lt;br /&gt;
&lt;br /&gt;
    SIMCONNECT_DATATYPE_INITPOSITION   &#039; see SIMCONNECT_DATA_INITPOSITION&lt;br /&gt;
    SIMCONNECT_DATATYPE_MARKERSTATE    &#039; see SIMCONNECT_DATA_MARKERSTATE&lt;br /&gt;
    SIMCONNECT_DATATYPE_WAYPOINT       &#039; see SIMCONNECT_DATA_WAYPOINT&lt;br /&gt;
    SIMCONNECT_DATATYPE_LATLONALT      &#039; see SIMCONNECT_DATA_LATLONALT&lt;br /&gt;
    SIMCONNECT_DATATYPE_XYZ            &#039; see SIMCONNECT_DATA_XYZ&lt;br /&gt;
&lt;br /&gt;
    SIMCONNECT_DATATYPE_MAX             &#039; enum limit&lt;br /&gt;
End Enum&lt;br /&gt;
&lt;br /&gt;
Enum SIMCONNECT_SIMOBJECT_TYPE&lt;br /&gt;
  SIMCONNECT_SIMOBJECT_TYPE_USER&lt;br /&gt;
  SIMCONNECT_SIMOBJECT_TYPE_ALL&lt;br /&gt;
  SIMCONNECT_SIMOBJECT_TYPE_AIRCRAFT&lt;br /&gt;
  SIMCONNECT_SIMOBJECT_TYPE_HELICOPTER&lt;br /&gt;
  SIMCONNECT_SIMOBJECT_TYPE_BOAT&lt;br /&gt;
  SIMCONNECT_SIMOBJECT_TYPE_GROUND&lt;br /&gt;
End Enum&lt;br /&gt;
&lt;br /&gt;
Enum SIMCONNECT_EXCEPTION&lt;br /&gt;
  SIMCONNECT_EXCEPTION_NONE = 0&lt;br /&gt;
  SIMCONNECT_EXCEPTION_ERROR = 1&lt;br /&gt;
  SIMCONNECT_EXCEPTION_SIZE_MISMATCH = 2&lt;br /&gt;
  SIMCONNECT_EXCEPTION_UNRECOGNIZED_ID = 3&lt;br /&gt;
  SIMCONNECT_EXCEPTION_UNOPENED = 4&lt;br /&gt;
  SIMCONNECT_EXCEPTION_VERSION_MISMATCH = 5&lt;br /&gt;
  SIMCONNECT_EXCEPTION_TOO_MANY_GROUPS = 6&lt;br /&gt;
  SIMCONNECT_EXCEPTION_NAME_UNRECOGNIZED = 7&lt;br /&gt;
  SIMCONNECT_EXCEPTION_TOO_MANY_EVENT_NAMES = 8&lt;br /&gt;
  SIMCONNECT_EXCEPTION_EVENT_ID_DUPLICATE = 9&lt;br /&gt;
  SIMCONNECT_EXCEPTION_TOO_MANY_MAPS = 10&lt;br /&gt;
  SIMCONNECT_EXCEPTION_TOO_MANY_OBJECTS = 11&lt;br /&gt;
  SIMCONNECT_EXCEPTION_TOO_MANY_REQUESTS = 12&lt;br /&gt;
  SIMCONNECT_EXCEPTION_WEATHER_INVALID_PORT = 13&lt;br /&gt;
  SIMCONNECT_EXCEPTION_WEATHER_INVALID_METAR = 14&lt;br /&gt;
  SIMCONNECT_EXCEPTION_WEATHER_UNABLE_TO_GET_OBSERVATION = 15&lt;br /&gt;
  SIMCONNECT_EXCEPTION_WEATHER_UNABLE_TO_CREATE_STATION = 16&lt;br /&gt;
  SIMCONNECT_EXCEPTION_WEATHER_UNABLE_TO_REMOVE_STATION = 17&lt;br /&gt;
  SIMCONNECT_EXCEPTION_INVALID_DATA_TYPE = 18&lt;br /&gt;
  SIMCONNECT_EXCEPTION_INVALID_DATA_SIZE = 19&lt;br /&gt;
  SIMCONNECT_EXCEPTION_DATA_ERROR = 20&lt;br /&gt;
  SIMCONNECT_EXCEPTION_INVALID_ARRAY = 21&lt;br /&gt;
  SIMCONNECT_EXCEPTION_CREATE_OBJECT_FAILED = 22&lt;br /&gt;
  SIMCONNECT_EXCEPTION_LOAD_FLIGHTPLAN_FAILED = 23&lt;br /&gt;
  SIMCONNECT_EXCEPTION_OPERATION_INVALID_FOR_OJBECT_TYPE = 24&lt;br /&gt;
  SIMCONNECT_EXCEPTION_ILLEGAL_OPERATION = 25&lt;br /&gt;
  SIMCONNECT_EXCEPTION_ALREADY_SUBSCRIBED = 26&lt;br /&gt;
  SIMCONNECT_EXCEPTION_INVALID_ENUM = 27&lt;br /&gt;
  SIMCONNECT_EXCEPTION_DEFINITION_ERROR = 28&lt;br /&gt;
  SIMCONNECT_EXCEPTION_DUPLICATE_ID = 29&lt;br /&gt;
  SIMCONNECT_EXCEPTION_DATUM_ID = 30&lt;br /&gt;
  SIMCONNECT_EXCEPTION_OUT_OF_BOUNDS = 31&lt;br /&gt;
End Enum&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Structures==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Type SIMCONNECT_RECV&lt;br /&gt;
   dwSize As Long&lt;br /&gt;
   dwVersion As Long&lt;br /&gt;
   dwID As Long&lt;br /&gt;
End Type&lt;br /&gt;
&lt;br /&gt;
Type SIMCONNECT_RECV_EXCEPTION&lt;br /&gt;
  dwException As Long&lt;br /&gt;
  dwSendID As Long&lt;br /&gt;
  dwIndex As Long&lt;br /&gt;
End Type&lt;br /&gt;
&lt;br /&gt;
Type SIMCONNECT_RECV_OPEN&lt;br /&gt;
  szApplicationName As String * 256&lt;br /&gt;
  dwApplicationVersionMajor As Long&lt;br /&gt;
  dwApplicationVersionMinor As Long&lt;br /&gt;
  dwApplicationBuildMajor As Long&lt;br /&gt;
  dwApplicationBuildMinor As Long&lt;br /&gt;
  dwSimConnectVersionMajor As Long&lt;br /&gt;
  dwSimConnectVersionMinor As Long&lt;br /&gt;
  dwSimConnectBuildMajor As Long&lt;br /&gt;
  dwSimConnectBuildMinor As Long&lt;br /&gt;
  dwReserved1 As Long&lt;br /&gt;
  dwReserved2 As Long&lt;br /&gt;
End Type&lt;br /&gt;
&lt;br /&gt;
Type SIMCONNECT_RECV_SIMOBJECT_DATA&lt;br /&gt;
  dwRequestID As Long&lt;br /&gt;
  dwObjectID As Long&lt;br /&gt;
  dwDefineID As Long&lt;br /&gt;
  dwFlags As Long&lt;br /&gt;
  dwentrynumber As Long&lt;br /&gt;
  dwoutof As Long&lt;br /&gt;
  dwDefineCount As Long&lt;br /&gt;
  dwData As Long&lt;br /&gt;
End Type&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sample Code==&lt;br /&gt;
This code retrieves the latitude / longitude of the user aircraft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Public Declare Sub CopyMemory Lib &amp;quot;kernel32&amp;quot; Alias &amp;quot;RtlMoveMemory&amp;quot; _&lt;br /&gt;
      (Destination As Any, _&lt;br /&gt;
       Source As Any, _&lt;br /&gt;
       ByVal Length As Long)&lt;br /&gt;
&lt;br /&gt;
Public Declare Function GetTickCount Lib &amp;quot;kernel32&amp;quot; () As Long&lt;br /&gt;
&lt;br /&gt;
Enum DATA_DEFINE_ID&lt;br /&gt;
   DATA_DEF_POSITION&lt;br /&gt;
End Enum&lt;br /&gt;
&lt;br /&gt;
Enum DATA_REQUEST_ID&lt;br /&gt;
   DATA_REQUEST_POSITION&lt;br /&gt;
End Enum&lt;br /&gt;
&lt;br /&gt;
Enum DATA_IDS&lt;br /&gt;
   DATA_LATITUDE&lt;br /&gt;
   DATA_LONGITUDE&lt;br /&gt;
End Enum&lt;br /&gt;
&lt;br /&gt;
Type PosRec&lt;br /&gt;
   Latitude As Double&lt;br /&gt;
   Longitude As Double&lt;br /&gt;
End Type&lt;br /&gt;
&lt;br /&gt;
Dim hSimConnect As Long&lt;br /&gt;
Dim Position As PosRec&lt;br /&gt;
   &lt;br /&gt;
Sub GetPosition()&lt;br /&gt;
   Dim hr As Long&lt;br /&gt;
   Dim T As Long&lt;br /&gt;
   &lt;br /&gt;
   hr = SimConnect_Open(hSimConnect, &amp;quot;MYAPP&amp;quot;, 0, 0, 0, 0)&lt;br /&gt;
   If (hr &amp;lt;&amp;gt; S_OK) Then&lt;br /&gt;
      MsgBox &amp;quot;Unable to connect with FSX!&amp;quot;, vbExclamation, &amp;quot;SimConnect&amp;quot;&lt;br /&gt;
   Else&lt;br /&gt;
      hr = SimConnect_AddToDataDefinition(hSimConnect, DATA_DEF_POSIION, &amp;quot;PLANE LATITUDE&amp;quot;, &amp;quot;Degrees&amp;quot;, _&lt;br /&gt;
                  SIMCONNECT_DATATYPE_FLOAT64, 0, DATA_LATITUDE)&lt;br /&gt;
      hr = SimConnect_AddToDataDefinition(hSimConnect, DATA_DEF_POSIION, &amp;quot;PLANE LONGITUDE&amp;quot;, &amp;quot;Degrees&amp;quot;, _&lt;br /&gt;
                  SIMCONNECT_DATATYPE_FLOAT64, 0, DATA_LONGITUDE)&lt;br /&gt;
      hr = SimConnect_RequestDataOnSimObjectType(hSimConnect, DATA_REQUEST_POSITION, DATA_DEF_POSITION, _&lt;br /&gt;
                  0, SIMCONNECT_SIMOBJECT_TYPE_USER)&lt;br /&gt;
      T = GetTickCount()&lt;br /&gt;
      Do&lt;br /&gt;
         DoEvents&lt;br /&gt;
         RequestID = GetNextDispatch()&lt;br /&gt;
      Loop Until (RequestID = DATA_REQUEST_POSITION) Or (GetTickCount() &amp;gt; T + 2000)&lt;br /&gt;
      If RequestID = DATA_REQUEST_POSITION Then&lt;br /&gt;
         MsgBox &amp;quot;Latitude : &amp;quot; + Format(Position.Latitude, &amp;quot;Fixed&amp;quot;) + vbCrLf + _&lt;br /&gt;
                &amp;quot;Longitude : &amp;quot; + Format(Position.Longitude, &amp;quot;Fixed&amp;quot;), vbInformation&lt;br /&gt;
      Else&lt;br /&gt;
         MsgBox &amp;quot;No data available!&amp;quot;, vbExclamation&lt;br /&gt;
      End If&lt;br /&gt;
      SimConnect_Close hSimConnect&lt;br /&gt;
   End If&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Function GetNextDispatch() As Long&lt;br /&gt;
   &#039; this function returns the dwRequestID field of SIMCONNECT_RECV_SIMOBJECT_DATA, if applicable&lt;br /&gt;
   &#039; otherwise -1&lt;br /&gt;
   Dim hr As Long&lt;br /&gt;
   Dim pData As Long, pcbData As Long&lt;br /&gt;
   Dim Recv As SIMCONNECT_RECV&lt;br /&gt;
   &lt;br /&gt;
   GetNextDispatch = -1&lt;br /&gt;
   hr = SimConnect_GetNextDispatch(hSimConnect, pData, pcbData)&lt;br /&gt;
   If hr = S_OK Then&lt;br /&gt;
      CopyMemory Recv, ByVal pData, Len(Recv)&lt;br /&gt;
      Select Case Recv.dwID&lt;br /&gt;
         Case SIMCONNECT_RECV_ID_OPEN&lt;br /&gt;
            Dim RecvOpen As SIMCONNECT_RECV_OPEN&lt;br /&gt;
            pData = pData + Len(Recv)&lt;br /&gt;
            CopyMemory RecvOpen, ByVal pData, Len(RecvOpen)&lt;br /&gt;
         Case SIMCONNECT_RECV_ID_EXCEPTION&lt;br /&gt;
            Dim RecvException As SIMCONNECT_RECV_EXCEPTION&lt;br /&gt;
            pData = pData + Len(Recv)&lt;br /&gt;
            CopyMemory RecvException, ByVal pData, Len(RecvException)&lt;br /&gt;
         Case SIMCONNECT_RECV_ID_SIMOBJECT_DATA_BYTYPE&lt;br /&gt;
            Dim RecvData As SIMCONNECT_RECV_SIMOBJECT_DATA&lt;br /&gt;
            pData = pData + Len(Recv)&lt;br /&gt;
            CopyMemory RecvData, ByVal pData, Len(RecvData)&lt;br /&gt;
            GetNextDispatch = RecvData.dwRequestID&lt;br /&gt;
            Select Case RecvData.dwRequestID&lt;br /&gt;
               Case DATA_REQUEST_POSITION&lt;br /&gt;
                  pData = pData + Len(RecvData) - 4&lt;br /&gt;
                  CopyMemory Position, ByVal pData, Len(Position)&lt;br /&gt;
            End Select&lt;br /&gt;
      End Select&lt;br /&gt;
   End If&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--[[User:Russdirks|Russdirks]] 19:04, 9 October 2006 (CEST)&lt;br /&gt;
[[category:SimConnect]]&lt;/div&gt;</summary>
		<author><name>Russdirks</name></author>
	</entry>
</feed>