안녕하세요. 델파이 초보자입니다.
처음접해보는거라 조금 당황스러워서 이렇게 질문을
올려봅니다. 다름이 아니라 dll파일을 Load 하여 dll내부의 함수를 호출할려구 하는데요..... 이곳 질문과답변에서 찾아서 한번 해봤는데 잘 안되네요..
계속 nil값만 가져오는데 소스 한번만 체크해주시면 감사하겠습니다.
그럼... 좋은하루 되시구요....
//---------------------------------------------------------------------
procedure ExcelConvProc(AQuery: TQuery); //Data Export Procedure
type
TDllFunc = Function(str : boolean) : Boolean ; stdcall;
var
XL, XArr, XTitle: Variant;
i, j, k: Integer;
iPath : AnsiString;
ExcelSaveFileNm : String;
F : TextFile;
Dll_File_Path_Nm : String;
LibHandle: THandle;
DllFunc_Show : TDllFunc;
begin
Dll_File_Path_Nm := 'C:\program Files\Markany\Document Safer\masdms_kiips.dll';
if not FileExists(Dll_File_Path_Nm) then
begin
Showmessage('해당 Dll 파일을 찾을 수가 없습니다!');
Abort;
end;
LibHandle := LoadLibrary(PChar(Dll_File_Path_Nm));
if LibHandle < 32 Then
begin
Showmessage('해당 DLL을 찾을 수가 없습니다!');
Abort;
end;
//함수 호출
try
@DllFunc_Show := GetProcAddress(LibHandle,'lpfnSetPrintSafer');
if not (@DllFunc_Show = nil ) then
begin
DllFunc_Show(True);
end
else
begin
ShowMessage(IntToStr(GetLastError));
FreeLibrary(LibHandle);
Abort;
end;
// 밑의 함수들을 모두 호출해야됨...
// bool lpfnSetPrintSafer(bool bSetFlag=false);
// bool lpfnSetImageSafer(bool bSetFlag=false);
// bool lpfnSetUserConfig(bool bSetFlag=false,bool bCanEdit=false, bool bCanSave=false,int iOpenCount=-1, int iPrintCount=-1);
// bool lpfnEncruptFileInPlace(char* pstrSrcFile);
finally
FreeLibrary(LibHandle);
end;
.
.
.
.
.
end;