protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
            case Win32.WM_COPYDATA:
                Win32.CopyDataStruct st = (Win32.CopyDataStruct)Marshal.PtrToStructure(m.LParam, typeof(Win32.CopyDataStruct));
                string bestandsnaam     = Marshal.PtrToStringUni(st.lpData);
                new Thread(new ParameterizedThreadStart(OpenFile)).Start(bestandsnaam);
                break;

            default:
                // let the base class deal with it
                base.WndProc(ref m);
                break;
            }
        }
        /// <summary>
        /// Sends string arguments to running instance of World Wind.
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        public static bool SendArgs(IntPtr targetHWnd, string args)
        {
            Win32.CopyDataStruct cds = new Win32.CopyDataStruct();
            try
            {
                cds.cbData = (args.Length + 1) * 2;
                cds.lpData = Win32.LocalAlloc(0x40, cds.cbData);
                Marshal.Copy(args.ToCharArray(), 0, cds.lpData, args.Length);
                cds.dwData = (IntPtr)1;
                Win32.SendMessage(targetHWnd, Win32.WM_COPYDATA, IntPtr.Zero, ref cds);
            }
            finally
            {
                cds.Dispose();
            }

            return(true);
        }