Q&A

  • dll파일 Load 하여 dll내의 함수호출시 에러...
안녕하세요. 델파이 초보자입니다.
처음접해보는거라 조금 당황스러워서 이렇게 질문을
올려봅니다. 다름이 아니라 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;
0  COMMENTS