C# 指向字符数组的int指针
我需要从C#使用Windows API中的Send_Message()函数。除了最后一个参数WPARAM,我在研究中发现它是一个无符号int。我正在发送0x402消息(SB_GETTEXT),WPARAM应该表示一个指向文本将被放入其中的字符数组的指针 这是我的密码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
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中是否存在另一种常见情况,即参数没有增长?