我知道如何通过使用LPCTSTR PInvoke想要CString的方法,并设置DllImport以使用LPstr转换进行调用。
但是,如何使用SendMessage,其中LPARAM是IntPtr?
这会有用吗?
[DllImport("user32.dll", CharSet = CharSet.Ansi)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam,
[MarshalAs(UnmanagedType.LPStr)] String lParam);
答案 0 :(得分:5)
您可以像这样声明:
[DllImport("user32.dll", SetLastError=true)]
static extern IntPtr SendMessage(
IntPtr hWnd, uint Msg, IntPtr wParam, string lParam);
默认编组是指向以null结尾的字符数组的指针。如果你真的想要ANSI版本,那么这就是默认版本。如果您想在发生故障时捕获错误代码,则应使用SetLastError
。
我相信你知道如果窗口处于不同的过程中它就无法工作。