c# - 通过 SendMessage 将字符串从 C# 发送到 MFC

标签 c# mfc pinvoke

我知道如何通过使用 LPCTSTR 代替并设置 DllImport 以调用 LPstr 转换来 PInvoke 一个需要 CString 的方法。

但是,如果 LPARAM 是一个 IntPtr,我该如何使用 SendMessage 实现呢?

这行得通吗?

    [DllImport("user32.dll", CharSet = CharSet.Ansi)]
    static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, 
        [MarshalAs(UnmanagedType.LPStr)] String lParam);

最佳答案

您可以像这样简单地声明它:

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

默认编码是作为指向空终止字符数组的指针。如果你真的想要 ANSI 版本,那么这是默认的。如果您想在失败时捕获错误代码,您应该使用 SetLastError

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

关于c# - 通过 SendMessage 将字符串从 C# 发送到 MFC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10556244/

相关文章:

c# - Umbraco 7 的异步 Controller 操作返回字符串

c++ - 如何在 TabCtrl 内的子对话框中将焦点设置到 CEdit?

c++ - MFC - 仅最小化主 MDI 窗口

Windows API功能的.NET包装器

c# - Delphi dll函数转C#

.net - 我是否需要 2 个不同的 PInvoke 来获取和设置鼠标速度?

c# - 如何使用 OAuth 像小部件一样保护客户端脚本?

c# - mono 的日志文件在哪里?

c# - DisplayFor 辅助方法呈现实体的 ID,但不会将其沿着 POST 表单集合传递

c++ - MFC:从另一个线程访问GUI?