如何让IntPtr指向一个字符串
IntPtr idp= IntPtr.Zero;
StringBuilder idata = new StringBuilder( "000000 ");
string idata = "000000 ";
我这样建立的2个idata字符串,如何让idp指向他
我指向他的目的是为了传递给dll的某个函数,他需要传指针
还有我定义了一个结构如何向dll的函数传递其指针?
http://community.csdn.net/Expert/topic/5612/5612998.xml?temp=.9482843
http://community.csdn.net/Expert/topic/5614/5614773.xml?temp=.5012018
所有分了,解决一起结了。
------解决方案--------------------char[] charArray = StringBuilder.ToString().ToCharArray();
unsafe
{
fixed(char* p = &charArray[0])
{
//p就是字串首地址
}
}
------解决方案--------------------http://msdn2.microsoft.com/en-us/library/s97shtze(VS.80).aspx
------解决方案--------------------//参考标准API如何实现的
[DllImport( "user32.dll ")]
public static extern int GetWindowText(IntPtr hWnd,
StringBuilder lpString, int nMaxCount);
private void button1_Click(object sender, EventArgs e)
{
StringBuilder vStringBuilder = new StringBuilder(256);
GetWindowText(Handle, vStringBuilder, vStringBuilder.Capacity);
Console.WriteLine(vStringBuilder.ToString());
}
------解决方案--------------------用GCHandle.Alloc(object obj)方法来给string分配一个指针!
------解决方案--------------------能不能把你的DLL拿过来让我看看??
------解决方案--------------------举个例子
[DllImport( "user32.dll ")]
public static extern IntPtr SendMessage(HandleRef hWnd, int msg, ref int wParam, ref int lParam);
如果Api方法需要返回这个参数,那么就用ref string paramname来定义参数。