Csharp/C#教程:C# – 从BSTR获取字符串*分享


C# – 从BSTR获取字符串*

在我正在研究的ac#应用程序中我正在使用API​​来提取客户信息,并且我试图获取用户电子邮件地址的字符串 – API文档声明我可以在一个对象上调用以下内容来撤回一个notefield string(电子邮件地址只能从此函数获取/设置)

HRESULT NoteField( [in] BSTR bstrFieldName, [out, retval] BSTR *pNoteField); 

但是当我在c#中调用它时,我得到一个空字符串

 string email = object.NoteField["Email"] 

我怎样才能获得价值?

非托管BSTR*和托管string不是一回事。 你需要在两者之间进行转换。

Marshal.PtrToStringBSTR和Marshal.StringToBSTR应该做你需要的。 有点像:

 IntPtr inPtr = Marshal.StringToBSTR("Email"); IntPtr outPtr = object.NoteField[inPtr]; // or you may need to do this // IntPtr outPtr; // object.NoteField(inPtr, out outPtr); string email = Marshal.PtrToStringBSTR(outPtr); Marshal.FreeBSTR(inPtr); Marshal.FreeBSTR(outPtr); 

这对我有用

上述就是C#学习教程:C# – 从BSTR获取字符串*分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 string s1 = Marshal.PtrToStringAnsi((IntPtr)outPtr); 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/942187.html

(0)
上一篇 2021年11月13日
下一篇 2021年11月13日

精彩推荐