Конвертировать IntPtr в объект C #

Из моего старого приложения (запущенного в отдельном процессе) я отправляю двойные значения в таком объекте

#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, работающем под другим процессом. Как я могу этого достичь? Спасибо!!

0

Решение

Если вы внутри процесса Marshal.PtrToStructure поможет вам.

Кажется, вы пытаетесь сделать это через процесс, это невозможно. Ваш LParam это указатель на память в другом процессе, вы не можете разделить память просто так. Вам нужно использовать любой из Межпроцессного взаимодействия методы. Взгляни на WM_COPYDATA.

1

Другие решения


По вопросам рекламы [email protected]