2014-12-05 75 views
0

從我的舊應用程序(獨立的進程中運行),我在一個對象像這樣轉換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應用程序中的同一對象。我怎樣才能做到這一點?謝謝!!

回答

1

如果你是內部進程Marshal.PtrToStructure會幫助你。

看來你正試圖在整個過程中做到這一點,這是不可能的。您的LParam是另一個進程中的內存指針,不能像這樣共享內存。您需要使用任何Inter process communication技術。看看Wm_CopyData