델파이에서 WM_COPYDATA 이용한 데이터 전달
프로그래밍???2012. 5. 8. 18:13
출처 :http://blog.yg.pe.kr/218
1. 설명
WM_COPYDATA메시지를 이용해 다른 프로그램에 데이터를 전달한다.단순 스트링 전달과 레코드 전달 예제로 구분했음
2. 소스
--단순 String 전달--
1. lParam에 사용할 데이터 레코드 타입
pCopyDataStruct = ^TCopyDataStruct;
TCopyDataStruct = record
dwData: DWORD;
cbData: DWORD;
lpData: Pointer;
end;
2. lParam으로 전달된 데이터 읽기
strReceive := pChar(pCopyDataStruct(lParam)^.lpData);
3. 데이터 보내기
procedure TCommWndThread.SendData(AData: string);
var
CopyData: TCopyDataStruct;
nLen: integer;
begin
nLen := Length(AData) + 1;
AData := AData + #0;
with CopyData do
begin
cbData := nLen;
lpData := pChar(AData);
end;
SendMessage(FWnd, WM_COPYDATA, 0, LongInt(@CopyData));
end;
--레코드 전달--
1. 전달할 레코드 타입
pMemoDataStruct = ^TMemoDataStruct;
TMemoDataStruct = packed record
FSenderID: String[50];
FIP: String[20];
FPort: String[10];
MemoContent : array[1..1024] of char;
end;
2. 데이터 보내기
var
CopyData: TCopyDataStruct;
nLen: integer;
memoinfo : TMemoDataStruct;
begin
FillChar(memoinfo, sizeof(TMemoDataStruct), #0);
memoinfo.FSenderID := FSenderID;
memoinfo.FIP := FIP;
memoinfo.FPort := FPort;
Move(FMemo^,memoinfo.MemoContent,FMemoSize);
nLen := SizeOf(memoinfo);
with CopyData do
begin
cbData := nLen;
lpData := @memoinfo;
end;
SendMessage(wnd, WM_COPYDATA, LongInt(msgType), @CopyData);
end;
3. 데이터 받기
var
memoinfo : TMemoDataStruct;
begin
memoinfo := pMemoDataStruct( PCopyDataStruct(msg.LParam)^.lpData)^;
end;
'프로그래밍???' 카테고리의 다른 글
Container에 대한 자료 링크 (0) | 2015.01.22 |
---|---|
SK Tech Planet 2013 참석 (0) | 2013.11.15 |
델파이에서 사용자 정의 메시지 및 프로시저 추가 (0) | 2012.05.08 |
Indy10 소켓이용시 참고사항 (3) | 2012.05.08 |
TIdTCPServer OnExecute 샘플코드 (0) | 2012.05.07 |