요구 사항 : 최근에 그러한 프로젝트를 받았기 때문에 Party A와 다른 사람들은 우리가 이미 가지고있는 PB 개발 응용 프로그램에 개발 한 기능을 추가 해달라고 요청했습니다. 유일한 목적은 두 개의 EXE 응용 프로그램이없는 것입니다.
솔루션 : DLL 형식으로 Delphi의 응용 프로그램을 패키지 한 다음 PB로 호출하십시오.
설계 :
1. PB 부품
1. 새로운 비 시각 클래스 N_CST_DEMO를 만들고 동일한 모듈의 모든 호출을이 클래스에 넣습니다.
2. API 호출을 정의하십시오. 선언의 정의 --- 로컬 외부 기능
// 핸들 : 현재 창의 핸들입니다
서브 루틴 show_demo (ulong 핸들, 문자열) 라이브러리 "project1.dll"
3. 새 양식 w_main을 만듭니다.
4. 새 메뉴 M_DLL을 만듭니다.
5. Test DLL이라는 메뉴 항목을 만듭니다. 클릭 된 이벤트에 쓰기 :
N_CST_DEMO N_PDA n_pda = create n_cst_demo n_pda.show_demo (핸들 (Parentwindow), "ABCD1234") n_pda를 파괴하십시오 |
이런 식으로 PB 부분이 완료됩니다.
2. 델파이 부분
1. 새로운 DLL 프로젝트를 만듭니다.
2. 새 form을 만듭니다 1. 구하다.3. 프로젝트에서 코드 작성 :
도서관 프로젝트 1; 용도 sysutils, 형태, 창문, 수업, 통제 수단, 대화, init1 in 'init1.pas'{form1}, 'dm.pas'에서 dm {datamodule1 : tdatamodule}; {$ r *.res} 절차 dllmain (이유 : 정수); 시작하다 사례의 이유 dll_process_attach : 시작하다 application.createform (tdatamodule1, datamodule1); 끝; dll_process_detach : 시작하다 끝; DLL_THREAD_ATTACH : 시작 끝; DLL_THREAD_DETACH : 시작 끝; 끝 끝; // 델파이에서 문자열 매개 변수는 pchar 유형으로 정의되어야합니다. 절차 show_demo (핸들 : thandle; const param : pchar); var 올드 핸들 : thandle; 시작하다 // DLL의 핸들을 저장합니다 Oldhandle : = application.handle; // DLL 애플리케이션 핸들을 PB의 창 핸들로 변경합니다. // 목적은 DLL 및 PB의 실행 파일이 응용 프로그램에 속하는 것을 달성하는 것입니다. // 효과 : DLL에서 창을 열면 작업 표시 줄에 더 이상 아이콘이 없습니다. application.handle : = 핸들; application.createform (tform1, form1); 노력하다 form1.s_param : = strpas (param); form1.showmodal; 마지막으로 form1. free; application.handle : = OldHandle; 끝; 끝; 수출 show_demo; 시작하다 dllproc : = @dllmain; dllmain (dll_process_attach) 끝. |