Delphi는 DLL을 사용하여 간단한 플러그인 예제를 구현합니다.
이것은 DLL의 코드입니다
구현 코드:
라이브러리 MyDll은 SysUtils, Dialogs, Classes를 사용합니다. ShowInfo(info:PChar);stdcall; start ShowMessage('You selected ['+info+']') end; end; ShowInfo, GetCaption을 내보냅니다. {$R *.res} 시작 끝.
이것은 양식을 호출하는 코드입니다.
이 예제에서는 하나의 DLL만 사용하므로 여러 개의 DLL이 있는 경우 DLL이 있는 디렉터리를 반복하여 DLL을 순서대로 로드해야 합니다.
유닛 Main; 인터페이스는 Windows, 메시지, SysUtils, 변형, 그래픽, 컨트롤, 양식, 대화 상자, StdCtrls, 메뉴, ExtCtrls를 사용합니다. type TShowInfo = 절차(info:PChar);stdcall; = class(TForm) Button1: TButton; 버튼2: TButton; TMainMenu; TImage; Procedure Button2Click(Sender: TObject); FHandel : THandle; //DLL 핸들 FProAddress: Pointer; //DLL의 ShowInfo 주소: TShowInfo; DLL 프로시저 LoadPlusIn; //플러그인 로드(DLL) 프로시저 ItemClick(Sender: TObject) //사용자 정의 메뉴 클릭 이벤트 public { 공개 선언 } end; var Form1; 구현 {$R *.dfm} TForm1.Button2Click(Sender: TObject); start LoadPlusIn(Sender: TObject); ; //@showinfo <> nil이면 주소를 가져옵니다. showinfo(PWideChar(TMenuItem(Sender).Caption)); //DLL에서 ShowInfo 실행 end; var getcaption: TGetCaption; start FHandel:= LoadLibrary('MyDll.dll'); FHandel = 0이면 로딩 후 ShowMessage('로딩 실패! '); 종료 else start @getcaption := GetProcAddress(FHandel,'GetCaption'); //@getcaption <> nil인 경우 DLL에서 GetCaption 주소를 가져오고 항목 시작 := TMenuItem.Create(MainMenu1); 메뉴 항목을 만듭니다.Caption := getcaption; //캡션 가져오기, 즉 DLL FProAddress에서 GetCaption을 호출합니다. GetProcAddress(FHandel,'ShowInfo'); //DLL 항목의 ShowInfo 주소를 가져옵니다.OnClick := ItemClick; //메뉴 항목에 클릭 이벤트를 할당합니다. MainMenu1.Items.Add(item); 메인메뉴끝;
궁금한 점이 있으면 메시지를 남기거나 이 사이트의 커뮤니티에 가서 소통하고 토론하세요. 읽어주셔서 감사합니다. 이 사이트를 지원해 주셔서 감사합니다.