Delphi를 사용하여 Authorware의 U32를 개발하십시오
기능 함수는 저자웨어에서 제공하는 시스템 기능의 가장 두드러진 기능입니다. 일부 특별한 작업의 경우, 저자 제품을 사용하면 사용자가 기능을 스스로 정의하여 프로그래밍을보다 유연하게 만들 수 있습니다. Windows Systems의 경우 사용자 정의 기능은 DLL (Dynamic Link Library) 파일로 저장되므로 사용자 정의 기능을 저장하는 파일은 현재 대화식 응용 프로그램 파일과 분리됩니다. 이 기사는 Delphi를 사용하여 Authorware의 사용자 정의 기능 -32bitu32를 개발하는 방법을 소개합니다. authoreattain 5.0은 knowledgeobjects를 사용하여 MessageBox를 표시하는 기능을 제공했지만이 기능은 4.0 이전에 버전에 존재하지 않습니다.
U32 개발은 5 단계로 나눌 수 있습니다.
프로젝트 파일을 만듭니다
함수를 만듭니다
리소스 파일을 만듭니다
리소스 파일을 컴파일합니다
U32를 만듭니다
1. 프로젝트 파일을 만듭니다
파일/새로 DLL을 선택하려면 DLL 파일을 생성하려면 파일/AddToProject에서 U32 기능 코드가 포함 된 단위를 추가하십시오 (이 단원은 기능 생성의 두 번째 단계에서 자세히 설명합니다). 사용자는 호출 된 저자 제품에서 선언 할 수 있습니다. 예를 들어:
ExportSMSGbox;
최종 코드는 다음과 같습니다.
LibraryAuthorware;
용도
sysutils, 수업,
myUnitin'MyUnit.pas ';
ExportSMSGbox;
시작하다
끝.
2. 함수를 만듭니다
authorware에서 사용 가능한 함수를 작성하면 내보내기 기능으로 선언하고 다음과 같이 키워드 인터페이스 다음에 코드를 추가해야합니다.
인터페이스
사용, 대화, sysutils, 창;
functionmsgbox (msg : string; mbtype :
단어; 제목 : 문자열) : Word; 내보내기;
delphi32는 {$ ifdefwin32} stdcall을 추가해야합니다.
($ endif} 뒤에 다음과 같이 함수 선언이 이어집니다.
functionmsgbox (msg : string; mbtype :
단어; 제목 : 문자열) : Word; 내보내기;
{$ ifdefwin32} stdcall; {$ endif}
이제 기능에 코드를 추가하고 구현을 따릅니다.
Const
Okonly = 0;
okcancel = 1;
abortretretryignore = 2;
yesnocancel = 3;
yesno = 4;
회복 = 5;
중요 = 16;
질문 = 32;
Excalamation = 48;
정보 = 64;
defaultButton1 = 0;
defaultButton2 = 256;
defaultButton3 = 512;
ApplicationModal = 0;
시스템 모달 = 4096;
functionstrtopch (str : String) : pchar;
바라 : PCHA;
시작하다
A : = Stralloc (길이 (str) +1);
strpcopy (a, str);
strtopch : = a;
끝;
functionmsgbox (msg : string; mbtype :
단어; 제목 : 문자열) : Word;
var
lptext, lpcaption : pchar;
H : HWND;
시작하다
lptext : = strtopch (제목);
lpcaption : = strtopch (msg);
h : = getActiveWindow ();
msgbox : = messagebox (h, lptext, lpcaption, mbtype);
끝;
3. 리소스 파일을 만듭니다
마지막으로해야 할 일은 저자가 기능을 직접 호출 할 수 있도록 리소스 파일을 작성하는 것입니다. 먼저 .rc 파일을 생성 한 다음 .res 파일로 컴파일해야합니다. 메모장을 사용하여 .rc 용 리소스 파일을 만듭니다. 다음 정의 추가 : 나중에이 정의를 설명하겠습니다.
1dll_headerpreloaddiscardable
시작하다
"msgbox/0",
"/0"
끝
msgboxdll_headerpreloaddiscardable
시작하다
"/0",
"w/0",
"SWS/0",
"결과 : = msgbox (msg, mbtype, title)/r/n",
"/r/n",
"ShowMessageBox/0",
끝
DLL 파일이 저자웨어 호출 변환 형식으로 작성된 경우, 그 안에 저장된 모든 사용자 정의 기능의 디렉토리도 파일에도 포함되며 저자가 호출 할 때 필요한 정보도 포함되며 디렉토리는 디렉토리 소스라고합니다. 디렉토리 소스의 각 기능에는 해당 정의가 있으며 이러한 정의를 정의 소스라고합니다. 특정 형식은 다음과 같습니다.
1. 디렉토리 소스
디렉토리 소스의 형식은 다음과 같습니다.
| dll_headerPreloadDiscardable
시작하다
"functionName [= ExportName]/0",
"functionName [= ExportName]/0",
….
"functionName [= ExportName]/0",
"/0"
끝
① | 디렉토리 소스 식별자입니다.
②dll_header는 설명 텍스트를 만드는 데 사용되는 시작 마크입니다.
begin은 디렉토리의 소스 파일의 시작을 나타냅니다.
끝은 디렉토리 소스의 끝을 나타냅니다.
2. 사용자 정의 기능 정의 형식
디렉토리 소스의 각 함수에 대해 해당 정의 형식이 있어야하며 특정 형식은 다음과 같습니다.
functionNamedlll_headerPreloadDiscardAble
시작하다
"dllfilename/0"
"returnValue/0"
"Argumentlist/0"
"설명>",
"설명",
…
"설명/0"
끝
functionName은 디렉토리 소스에 정의 된 함수 이름을 나타냅니다.
dlllfilename은 스토리지 함수의 DLL 파일 이름을 나타냅니다.
repent returnValue는 함수의 리턴 값 유형을 나타냅니다.
argumentList이 함수의 매개 변수 유형 목록을 나타냅니다.
description은 함수의 설명 텍스트를 나타냅니다.
설명 본문은 많은 선으로 구성 될 수 있지만 마지막 줄은 "/0"으로 끝나야합니다.
3. 매개 변수 유형 설명 형식
매개 변수 유형은 대문자로 표시되며 각 문자는 다음 표에 표시된 것처럼 매개 변수 형식을 나타냅니다.
설명 형식 typedescribe 형식 유형
csignedcharpfarpointer
Bunsignedcharffloat
isignedshortintegerddouble
WUNSIGNEDSHORTINTEGERSHANDLE
lsignedlongintegervvoid
uunsignedlonginteger
4. 리소스 파일을 컴파일합니다
.rc의 리소스 파일을 a3w.rc로 저장합니다 (파일 이름을 저장할 수없고 dll 파일 이름을 저장할 수 없습니다. 그렇지 않으면 Delphi의 컴파일 된 파일은 Brc32.exe입니다. DOS 모드에서 실행 :
C : /delphi32/bin/brc32-ra3w.rc-foa3w32.res
이제 프로젝트에 리소스 파일을 추가하고 View/ProjcetSource에서 Delphi로 돌아가 프로젝트 파일을 엽니 다.
Exportsmsgbox;
{$ r*.res}
선을 삭제하고 조인 : {$ ifdefwin32}
{$ ra3w32.res}
{$ else}
{$ ra3w16.res}
{$ endif}
프로젝트 파일을 컴파일합니다.
5. U32를 만듭니다
우리는 32bit authorware.dll을 작성하여 authorware.u32로 이름을 변경했습니다.
msgbox ( "경고함", 1+32+0+4096, "이 시스템을 종료합니까?")