Из моего старого приложения (работающего под отдельным процессом) я отправляю двойные значения в объект, подобный этому
#define MYMESSAGECODE (WM_APP + 123 )
typedef struct
{
float f;
double d;
} MyDataStruct;
MyDataStruct data;
data.f = 1.0;
data.d = 2.0;
pWpfWnd->SendMessage( MYMESSAGECODE, 0, (LPARAM) &data );
Это получено в WndProc в отдельном процессе.
private IntPtr WndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
switch (msg)
{
case GA_SLOT_COORDINATES:
// Need solution here to convert lParam to MyDataStruct
}
return IntPtr.Zero;
}
Я хочу преобразовать данные, переданные в lParam из моего унаследованного приложения, в тот же объект в моем приложении.Net, работающем под другим процессом. Как я могу это достичь? Благодарю!!
Если вы являетесь внутренним процессом Marshal.PtrToStructure
поможет вам.
Кажется, вы пытаетесь сделать это через весь процесс, что невозможно. Ваш LParam
является указателем на память в другом процессе, вы не можете обмениваться памятью именно так. Вам нужно использовать любую из методов связи между процессами. Взгляните на Wm_CopyData.