C# 指向字符数组的int指针

C# 指向字符数组的int指针,c#,winapi,C#,Winapi,我需要从C#使用Windows API中的Send_Message()函数。除了最后一个参数WPARAM,我在研究中发现它是一个无符号int。我正在发送0x402消息(SB_GETTEXT),WPARAM应该表示一个指向文本将被放入其中的字符数组的指针 这是我的密码 unsafe { char[] result = new char[40]; int* ptr = (*int)&result; } 但我得到了以下错误: C

我需要从C#使用Windows API中的Send_Message()函数。除了最后一个参数WPARAM,我在研究中发现它是一个无符号int。我正在发送0x402消息(SB_GETTEXT),WPARAM应该表示一个指向文本将被放入其中的字符数组的指针

这是我的密码

    unsafe
    {
        char[] result = new char[40];
        int* ptr = (*int)&result;
    }
但我得到了以下错误:

    Cannot take the address of, get the size of, or declare a pointer to a managed type ('char[]')
它是否与“result=newchar[40]”部分有关


谢谢。

我想你想要的是:

[DllImport("user32.dll")]
static extern IntPtr SendMessage(
    IntPtr hWnd, 
    uint Msg, 
    long wParam, 
    [MarshalAs   (UnmanagedType.LPStr)] StringBuilder lParam);
请注意,根据您的问题所述,
lParam
是指向字符串的指针,而不是
wParam


您可能还对pinvoke.net上的描述感兴趣:

试试
StringBuffer
:试试。@akonsu:我想您的意思是
StringBuilder
?@JimMischel当然。对不起,请尝试
char*result=new char[40]谢谢你纠正我,我在脑海中错误地切换了lParam和wParam。@吉姆lParam和wParam都是IntPtr。哦,你说得对。我以为WPARAM保持在32位。Win32中是否存在另一种常见情况,即参数没有增长?