unsafe static void SendArgs(uint wnd, string[] args) { COPYDATASTRUCT data; data.dwData = 7; string buffer = string.Join("\0", args); IntPtr ptrData = Marshal.AllocCoTaskMem(buffer.Length * sizeof(char)); char[] chars = buffer.ToCharArray(); Marshal.Copy(chars, 0, ptrData, chars.Length); UIntPtr result; data.lpData = (int)ptrData; data.cbData = chars.Length * sizeof(char); COPYDATASTRUCT *pointer = (&data); SendMessageTimeout(wnd, 74, (UIntPtr)0, pointer, SendMessageTimeoutFlags.SMTO_ABORTIFHUNG, 5000, out result); Marshal.FreeCoTaskMem(ptrData); }
unsafe static extern IntPtr SendMessageTimeout(uint hWnd, uint Msg, UIntPtr wParam, COPYDATASTRUCT *lParam, SendMessageTimeoutFlags fuFlags, uint uTimeout, out UIntPtr lpdwResult);