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
[12256] [질문] dll 동적호출 및 파라메터 주고받는 방법?
스누피 [] 1787 읽음    2008-10-25 00:15
HRESULT WINAPI GetVersionInformation(
    P_VERSION_INFO VersionInfo
);

P_VERSION_INFO 형식은 아래와 같습니다.

typedef struct
{
    ULONG MajorVersion;
    ULONG MinorVersion;
    ULONG BuildNumber;
} VERSION_INFO, *P_VERSION_INFO;


이렇게 정의가 되어있는 dll 파일을
델파이에서 GetVersionInformation 함수를 동적으로
호출할 때 파라메터를 어떻게 보내고 받아야 하나요?

참고로 작성된 코드입니다.

procedure TForm1.Button1Click(Sender: TObject);
type
  VERSION_INFO = record
     MajorVersion  : Cardinal;
     MinorVersion  : Cardinal;
     BuildNumber   : Cardinal;
  end;
P_VERSION_INFO = VERSION_INFO;
TFunc = function( P_VERSION_INFO ) : String;

var
H : THandle;
MyFunc : TFunc;
dllFileName : String;
begin
  dllFileName := RadioGroup1.Items.Strings[ RadioGroup1.ItemIndex ];
  H := LoadLibrary( PChar( dllFileName ) );

  if H < 32 then
    begin
      ShowMessage( 'DLL 함수 address 찾기 실패!' );
      Exit;
    end;

  try
    GetMem( P_VERSION_INFO, SizeOf( VERSION_INFO^ ) );
    @MyFunc := GetProcAddress( H, 'GetVersionInformation( VERSION_INFO )' );
    FreeMem( VERSION_INFO );
    if @MyFunc = nil then
      begin
        ShowMessage( 'DLL Address not found!' );
        Exit;
      end
    else
      begin
        Edit1.Text := ( MyFunc( VERSION_INFO ) );
      end;
  finally
    FreeLibrary( H );
  end;
end;

+ -

관련 글 리스트
12256 [질문] dll 동적호출 및 파라메터 주고받는 방법? 스누피 1787 2008/10/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.