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

델파이 Q&A
Delphi Programming Q&A
[8804] Re:프로그램간 데이터 전달시...
류종택 [ryujt] 1615 읽음    2003-05-15 12:34
같은 시스템에서 실행되는 프로그램이라면..
WM_COPYDATA를 사용해보시는 것은 어떤지요..
DDE를 사용하는 것도 괜찮고..

아래는 다소 복잡하지만..
예전에 WM_COPYDATA를 쓰기 위해 콤포넌트로 만들어 본 것입니다..

첨부의 예제는 아래 콤포넌트를 이용해서 채팅프로그램 흉내낸것입니다..

---------------------------------------------------------------------

unit CopyData;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  TCopyDataEvent = Procedure (Sender:TObject; Data:String) of Object;

  TCopyData = class(TWinControl)
  private
    { Private declarations }
    FCopyDataEvent : TCopyDataEvent;
  protected
    { Protected declarations }
    Procedure GetMessageCopyData(Var Msg:TMessage); Message WM_COPYDATA;
  public
    { Public declarations }
    Constructor Create(AOwner:TComponent); Override;

    Procedure SendData(Handle:Integer; stMsg:String);
  published
    { Published declarations }
    Property OnCopyData : TCopyDataEvent read FCopyDataEvent write FCopyDataEvent;
  end;

procedure Register;

Function  FindCopyData(FormName:PChar):Integer;

implementation

procedure Register;
begin
  RegisterComponents('Ryu', [TCopyData]);
end;

//// 보조 함수

Function  FindCopyData(FormName:PChar):Integer;
Begin
  Result:= FindWindow(Nil, FormName);
  Result:= FindWindowEx(Result, 0, 'TCopyData', Nil);
End;

//// Main 부분

Constructor TCopyData.Create(AOwner:TComponent);
Begin
  Inherited Create(AOwner);

  Height:= 24;
  Width:= 24;
End;

Procedure TCopyData.GetMessageCopyData(var Msg:TMessage);
Var
  Data :^COPYDATASTRUCT;
Begin
  Try
    Data:= Ptr(Msg.lParam);
    If Assigned(OnCopyData) then OnCopyData(Self, StrPas(Data^.lpData));
  Except
  End;
End;

Procedure TCopyData.SendData(Handle:Integer; stMsg:String);
Var
  Data : COPYDATASTRUCT;
Begin
  If Handle = 0 then Exit;
 
  Try
    Data.cbData:= Length(stMsg)+1;
    Data.lpData:= PChar(stMsg);
    SendMessage(Handle, WM_COPYDATA, Handle, Integer(@Data));
  Except
  End;
End;

end.


혀  ~~  님이 쓰신 글 :
:
:  한 프로그램에서  ini화일에서 값을 읽어와..
:
:  ValueListEditor에 넣어준 후..
:
:  또 다른 프로그램의
:
:  ValueListEditor에 똑같은 모양으로

:  데이터를 넣어주고 싶은데..
:
:  쉽지가 않네요??
:

:

+ -

관련 글 리스트
8800 프로그램간 데이터 전달시... 혀 ~~ 739 2003/05/14
8804     Re:프로그램간 데이터 전달시... 류종택 1615 2003/05/15
8805         Re:Re:프로그램간 데이터 전달시... 따스한 햇살처럼... 791 2003/05/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.