通过SendMessage将C#中的字符串发送到MFC

Lee*_*ere 1 c# pinvoke mfc

我知道如何通过使用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)

Dav*_*nan 5

您可以像这样声明它:

[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如果您想在发生故障时捕获错误代码,则应该使用它.

我相信你知道,如果窗口处于不同的进程中,它就无法工作.