제가 원하는 DLL 에서 사용하는 함수의 어드레스 값을 불러서 showmessage로 확인해보고 싶은데여..
작성한 코드는 아래와 같습니다.
근데..분명히 존재하는 함수를 호출했는데...(avifil32.dll -> 함수 : AvisaveV)
값이 nil값이 나오네요.
이거 어찌된 일인지 잘 모르겠습니다.
DLL에서 함수를 호출하여 그 고유 주소값을 표현하는 법을 알고 계신분의 도움 부탁합니다.
참고로 아래에서 호출한 함수의 주소값은 확인결과 : 000078A4 (윈도우 98에서)입니다.
헥사값으로 나타나는군요.위의값을 표시해주고 싶습니다.
Procedure TForm1.Button1Click(Sender: TObject);
type
TFUNC = function(str : string) : Boolean; stdcall;
var
H : THandle;
Myfunc : TFunc;
s : String;
begin
H := Loadlibrary('Avifil32.dll');
if H<32 then
begin
Showmessage('DLL이 없다');
end;
@Myfunc := GetProcAddress(H,'');
showMessage(Pchar(@Myfunc));
if (@Myfunc = nil) then
begin
showmessage('DLL에서 어드레스를 못가져와따');
exit;
end
else begin
if not (Myfunc((Edit1.text))) then
showMessage('Address not equal')
else
showMessage('Address는 뭐뭐뭐다..이렇게 표현하고 싶슴다. ');
end;
FreeLibrary(H);
end;
위 공백들어가는 부분에 함수이름을 넣어주셔야 합니다. AvisaveV란 함수이름을요...
^^ 항상 즐코하세요...