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); }