我需要從C#發送一個字符串到C++ WindowProc。與此有關的SO有許多相關的問題,但沒有一個答案適用於我。這裏的情況:C#發送消息到C++ WinProc
PInvoke:
[DllImport("user32", CharSet = CharSet.Auto)]
public extern static int SendMessage(IntPtr hWnd, uint wMsg, IntPtr wParam, string lParam);
C#:
string lparam = "abc";
NativeMethods.User32.SendMessage(handle, ConnectMsg, IntPtr.Zero, lparam);
C++:
API LRESULT CALLBACK HookProc (int code, WPARAM wParam, LPARAM lParam)
{
if (code >= 0)
{
CWPSTRUCT* cwp = (CWPSTRUCT*)lParam;
...
(LPWSTR)cwp->lParam <-- BadPtr
...
}
return ::CallNextHookEx(0, code, wParam, lParam);
}
我已經嘗試了一些不同的東西,編組字符串作爲LPSTR,LPWSTR,還試圖從非託管內存中創建一個IntPtr,並與Marshal.WriteByte寫它。
指針是C++端的正確內存位置,但數據不在那裏。我錯過了什麼?
你能舉個例子嗎? – Nayan 2010-04-16 14:33:53