我知道如何通过使用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);
Run Code Online (Sandbox Code Playgroud)
您可以像这样声明它:
[DllImport("user32.dll", SetLastError=true)]
static extern IntPtr SendMessage(
IntPtr hWnd, uint Msg, IntPtr wParam, string lParam);
Run Code Online (Sandbox Code Playgroud)
默认编组是指向以null结尾的字符数组的指针.如果你真的想要ANSI版本,那么这就是默认版本.SetLastError如果您想在发生故障时捕获错误代码,则应该使用它.
我相信你知道,如果窗口处于不同的进程中,它就无法工作.