/// <summary> /// Send a command to MPC-HC /// </summary> /// <param name="nCmd">Command to send.</param> /// <param name="strCmd">Some commands require a parameter.</param> private void SendData(MPCAPI_SENDCOMMAND nCmd, string strCmd) { WinAPI.COPYDATASTRUCT nCDS; if (nCmd == MPCAPI_SENDCOMMAND.CMD_OSDSHOWMESSAGE) { MPC_OSDDATA osdData = new MPC_OSDDATA { nMsgPos = (int)m_OSDMSGPos, nDurationMS = m_OSDMSGDur, strMsg = strCmd }; nCDS = new WinAPI.COPYDATASTRUCT { dwData = (IntPtr)(int)nCmd, cbData = Marshal.SizeOf(osdData) }; nCDS.lpData = Marshal.AllocCoTaskMem(nCDS.cbData); Marshal.StructureToPtr(osdData, nCDS.lpData, false); } else { nCDS = new WinAPI.COPYDATASTRUCT { dwData = (IntPtr)(int)nCmd, cbData = (strCmd.Length + 1) * 2, lpData = Marshal.StringToCoTaskMemUni(strCmd) }; } IntPtr cdsPtr = Marshal.AllocCoTaskMem(Marshal.SizeOf(nCDS)); Marshal.StructureToPtr(nCDS, cdsPtr, false); WinAPI.SendMessage(m_hWndMPC, WinAPI.WM_COPYDATA, m_hWnd, cdsPtr); Marshal.FreeCoTaskMem(cdsPtr); Marshal.FreeCoTaskMem(nCDS.lpData); }
/// <summary> /// Send a command to MPC-HC /// </summary> /// <param name="nCmd">Command to send.</param> private void SendData(MPCAPI_SENDCOMMAND nCmd) { SendData(nCmd, String.Empty); }