here is some code:
DLLEXPORT bool ReplayForm(BSTR* bt,LPTSTR szUser,LPTSTR szPassword)
{
CLogger::Record(L"ReplayForm");
if(!SyncService(szUser,szPassword))
return false;
int i = 0;
while(!TrackMessage(bt))
{
i++;
if(!SyncService(szUser,szPassword))
break;
Sleep(5000);
if(i > 120)
break;
};
return true;
}
bool TrackMessage(BSTR* bt)
{
//here I have not put my actual code, since it is too complicated.
//in fact, save all the string to CString instance, and then
CString strMessage ="some long string which hold return";
*bt = ::SysAllocString(strMessage.GetBuffer(strMessage.GetLength()));
return true;
}
Thanks.
"<ctacke/>" wrote:
> I'd want to see the native code that it calls.
>
>
> --
> Chris Tacke - Embedded MVP
> OpenNETCF Consulting
> Managed Code in the Embedded World
> www.opennetcf.com
> --
>
>
>
>
> "jeff" <(E-Mail Removed)> wrote in message
> news:2B5EB157-0C5D-49C0-BC09-(E-Mail Removed)...
> > Hi Guys,
> >
> > I have read a string from Unmanaged code, however, when I convert ptr to
> > string.
> > It also include "\r\n" in the string, how to avoid this issue:
> >
> > here is my source code:
> > IntPtr m_pMessge = new IntPtr(0);
> >
> > // this call native code [dll file]
> > ReplayForm(ref m_pMessge,this.E_User,this.E_Password);
> > //convert pointer to object string
> > string strMessage = Marshal.PtrToStringBSTR(m_pMessge);
> > /*****
> > after it has been converted, it holds \r\n ""
> > */
> > strMessage = strMessage.Replace(@"=\r\n", @"\r\n");
> >
> > Thanks
> >
> >
>
>
>