private static bool OpenExistingAppCallback(IntPtr hWnd, IntPtr lParam) { if (Win32.GetProp(hWnd, Program.programGuid) != IntPtr.Zero) { Win32.SetForegroundWindow(hWnd); IntPtr intPtr = IntPtr.Zero; int cbData = 0; string mapArgument = Program.GetMapArgument(); if (mapArgument != null) { intPtr = Marshal.StringToCoTaskMemUni(mapArgument); cbData = (mapArgument.Length + 1) * 2; } if (intPtr != IntPtr.Zero) { Win32.COPYDATASTRUCT cOPYDATASTRUCT = default(Win32.COPYDATASTRUCT); cOPYDATASTRUCT.dwData = IntPtr.Zero; cOPYDATASTRUCT.lpData = intPtr; cOPYDATASTRUCT.cbData = cbData; Win32.SendMessage(hWnd, 74, 0, ref cOPYDATASTRUCT); } Marshal.FreeCoTaskMem(intPtr); return(false); } return(true); }
public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, ref Win32.COPYDATASTRUCT lParam);