public static UIntPtr Send(IntPtr targetHandle, int dwData, string value, uint timeoutMs = 1000, bool Unicode = false)
    {
        var     cds = CopyData.CreateForString(dwData, value, Unicode);
        UIntPtr result;

        SendMessageTimeout(targetHandle, WM_COPYDATA, IntPtr.Zero, ref cds, SendMessageTimeoutFlags.SMTO_NORMAL, timeoutMs, out result);
        cds.Dispose();
        return(result);
    }