public static bool SendString(IntPtr hwnd, uint msg, int dwData, string value, bool unicode = true) { var data = CreateForString( dwData, value, unicode); var dataSize = Environment .GetSize <CopyData>(); var dataPtr = Marshal .AllocCoTaskMem(dataSize); Marshal.StructureToPtr( data, dataPtr, false); var messageReceived = WindowNative .SendMessage(hwnd, msg, IntPtr.Zero, dataPtr) .ToInt32() != 0; data.Dispose(); Marshal.FreeCoTaskMem( dataPtr); return(messageReceived); }