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

时间:2012-05-11 17:50:01

标签: c# mfc pinvoke

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

1 个答案:

答案 0 :(得分:5)

您可以像这样声明:

[DllImport("user32.dll", SetLastError=true)]
static extern IntPtr SendMessage(
    IntPtr hWnd, uint Msg, IntPtr wParam, string lParam);

默认编组是指向以null结尾的字符数组的指针。如果你真的想要ANSI版本,那么这就是默认版本。如果您想在发生故障时捕获错误代码,则应使用SetLastError

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