ChangeTest - sample code to call DinkeyChange.dll (DinkeyChange64.dll) in VB.NET
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This project is written in Visual Studio 2003 but will work in more recent versions of
Visual Studio (they will upgrade the Project to the latest version. If prompted you
should also upgrade the .NET framework the project requires).

For users of Visual Studio 2005 or higher, the default setting to projects is to compile
for the Target Platform "Any". This means that on 32-bit Windows, your code will run as
32-bit code (and needs to call DinkeyChange.dll) and under 64-bit Windows your code will
run as 64-bit code (and needs to call DinkeyChange64.dll). The sample code works this out
automatically. If you select the target platform as "x86" then it will always be 32-bit
and so you only need to use DinkeyChange.dll. If you select "x64" then your code will be
64-bit and you only need to use DinkeyChange64.dll.

The main source files in the project are:

DinkeyChange.vb - the source file contains declarations of our API. We automatically
                  work out whether your code is running in 32-bit or 64-bit and load the
                  appropriate DinkeyChange module.
                  
Form1.vb - this is the sample code giving an example on how you can call our API.
           It contains 7 functions. Just use which ever functions are most appropriate
           and customise in your own way. 

The best approach is to compile the sample code and see how it works and then to take the
appropriate code and apply it to your own project. You should include the DinkeyChange.vb
file in your project and use/modify which ever functions from Form1.vb you feel are
appropriate. The DinkeyChange.vb file should not be modified.           
           
The sample code is just a guide. As none of the parameters are security sensitive then
there is no need to implement strong security in calling DinkeyChange.

Make sure you remember to do the following when creating your own project:

1) Insert the DinkeyChange.vb file in your project.

2) You need to put DinkeyChange.dll and/or DinkeyChange64.dll into the folder that
contains your EXE file. Otherwise the message "Unable to open DLL (DinkeyChange.dll)" or
the System.DllNotFoundException error will appear when you run ChangeTest.

You can rename DinkeyChange.dll (DinkeyChange64.dll) to a name of your choice. In this
case you will need to modify the dll name in the DinkeyChange.vb file.

Notes on Debugging 64-bit Code
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
When you use the 64-bit module (DinkeyChange64.dll) the anti-debug code is so strong that
if you are debugging your code, after calling our API then it will crash with an SEH
exception. If you want to be able to debug your code then you can setup your project so
that your code calls the debug module (DinkeyChange64Debug.dll) in your "debug" build and
the standard module (DinkeyChange64.dll) in your release build. In this case you will
need to modify the declarations of our API in DinkeyChange.vb. This is an example for
DCDoUpdateCodeFromFile64:

#if DEBUG		' debug module
    Declare Ansi Function DCDoUpdateCodeFromFile64 Lib "DinkeyChange64Debug.dll" Alias "DCDoUpdateCodeFromFile" _
        (ByVal filename As String, ByRef confirmation_code As Integer, ByRef extended_error As Integer) As Integer
#else			' standard module
    Declare Ansi Function DCDoUpdateCodeFromFile64 Lib "DinkeyChange64.dll" Alias "DCDoUpdateCodeFromFile" _
        (ByVal filename As String, ByRef confirmation_code As Integer, ByRef extended_error As Integer) As Integer
#endif
