C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[45934] Re:Data Corrupted on OnCopyData ??? (SendMessage between two application)
nicekr.황경록 [mpbox] 2755 읽음    2006-07-31 14:19
GlobalAlloc_01.zip 539KB sample for globalalloc with WM_COPYDATA
hi alex! :)

alex 님이 쓰신 글 :
: I am trying to send some messages to other application.
: But some how whenever i send string value it corrupted and i got wrong value.
:
: Can anyone help me out??
:
: //===============================================================================
: From Sender Form..
: //Test Send Message
:
:     COPYDATASTRUCT oCopyData;
:         LPSTR pCaller = NULL;
:         SMediaCallInfo *pData = (SMediaCallInfo *)GlobalAlloc( GPTR, sizeof(SMediaCallInfo) );

sizeof(SMediaCallInfo) ? do you check this size of bytes?

:
:
:         AnsiString sCaller("Jo.Robbins@hotmail.com");
:         memset( pData, 0, sizeof(SMediaCallInfo) );

why use the memset? GPTR set the allocated memory area to zero.
:
:         pData->dwSize = sizeof(SMediaCallInfo);
:         pData->dwMediaType = PBXTYPE_SMTP;
:     pData->dwCallRef = 498 + iCount;
:
:         if ( !sCaller.IsEmpty() )
:         {
:         pData->lpCallerId = (LPSTR)GlobalAlloc( GPTR, sCaller.Length() + 1 );
:         strcpy( pData->lpCallerId, sCaller.c_str() );
:     }
:
:     oCopyData.dwData = CALL_INFO_TAG;
:     oCopyData.cbData = pData->dwSize;
:     oCopyData.lpData = pData;

:     ::SendMessage(Handle, WM_COPYDATA, (WPARAM)Handle, (LPARAM)&oCopyData );
:
:     if ( pData->lpCallerId )
:         ::GlobalFree( pData->lpCallerId );
:     ::GlobalFree( pData );
:
:
:
: //===============================================================================
: //OnCopyData of Form 2 - received data from Form 1
:
: COPYDATASTRUCT *pCopyData = (COPYDATASTRUCT *)Msg.LParam;
:     if ( pCopyData->dwData == CALL_INFO_TAG &&
:         pCopyData->cbData == sizeof(SMediaCallInfo) )
:
:     {
:         SMediaCallInfo *pInfo = (SMediaCallInfo *)pCopyData->lpData;
:         if ( pInfo->dwSize == sizeof(SMediaCallInfo) )
:         {
:             ODS(DEBUG_INFO, "CallInfo: media=%u, call=0x%08x, caller id=%s",
:             pInfo->dwMediaType, pInfo->dwCallRef,pInfo->lpCallerId ? pInfo->lpCallerId : "" );
:     }
:     }

: 17:52:04.49 OnCopyData: recieved message from Desktop
: 17:52:04.49 CallInfo: media=9, call=0x000001f2, caller id=on7\Tools\      <<= I am expecting  Jo.Robbins@hotmail.com
:
: Thanks in advance..

-_-... i append sample application for you.
just see.. it make two project and send WM_COPYDATA with char pointer.
if you want to testing with struct or class? just editing :)
good luck :)

+ -

관련 글 리스트
45924 Data Corrupted on OnCopyData ??? (SendMessage between two application) alex 2470 2006/07/31
45934     Re:Data Corrupted on OnCopyData ??? (SendMessage between two application) nicekr.황경록 2755 2006/07/31
45935         Re:Re:Data Corrupted on OnCopyData ??? (SendMessage between two application) alex 1377 2006/07/31
45936             nice! you're welcome :) (none of changed text) nicekr.황경록 1012 2006/07/31
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.