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

0

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

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

Теги:
wpf
type-conversion
intptr

1 ответ

1
Лучший ответ

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню