본문 바로가기
Autohotkey/강좌

[Autohotkey] 50. DLL의 함수를 끌어다가 쓰는 명령어 - DllCall()

by 슈퍼닷 2013. 6. 9.
반응형

여러가지 dll 에는 함수가 들어있습니다.

예로들어 ,  Ws2_32.dll  이라는  윈속2 프로그래밍을 할때 쓰이는 Dll에는 socket 관련 함수가 들어있습니다.

함수 목록을 보고싶다면 여기 에서 DLLFunctionViewer 을 다운 받아서 한번 보세요.

함수의 목록을 볼수 있습니다.

 

아무튼 DLL이라는 곳엔 함수가 들어있습니다.

이 함수들을 쓸 수 있는 방법이 있습니다.

바로 DLLCall() 이라는 함수 입니다.

 

DLL 에서 함수를 불러온다고 하니 뭔가 어려워 보이실 수도 있겠습니다 .

사실 , 형태 자체는 어렵지 않습니다.

쓰는 방법은 매우 간단합니다.

일단 형태와 방법부터 알아보죠.

 

Result := DllCall("[DllFile\]Function" [, Type1, Arg1, Type2, Arg2, "Cdecl ReturnType"])

 

이게 DLLCall 의 형태입니다.

하나하나 설명하겠습니다.

 

Result : DLL에서 함수를 실행한 다음에 함수에서 리턴하는 값이 저장되는 변수입니다.

 

DLLFile\Function : 함수를 실행할때의 경로입니다. 예로들어 제가 실행하고자 하는 DLL 의 이름이 W.DLL 이고 Function 은 ADD 라고 한다면 W.dll\ADD 가 되겠죠.

 

Type1,2 : Arg1,2 즉 , 주고자 하는 값의 형태를 의미합니다 . Char 이나 Int 같은 것을 말합니다. 다른 말로 하자면 자료형을 뜻하는거죠.

자료형에는 종류가 꽤 있습니다.

자료형의 종류

 

Arg1,2 : 주는 값이다.  1 을 줘야하면  1을 적으면 된다.

 

Cdecl ReturnType : 안써봐서 잘 모르겠지만 리턴하는 값의 자료형을 지정하는것 같다. 안써줘도 된다.

 

 

이렇게 어렵게 알아봤습니다.

사실 실제로 쓰는 방법은 별로 어렵지 않습니다.

 

제가 C언어로 A.dll 을 만들었습니다.

그 안에는

Add(int a,int b)

{

return a+b;

}

라는 함수가 있습니다.

어떻게 써야할까요 ?

저는 a에 1을 b에 2를 주고 싶습니다.

 

결과:=DllCall("A.dll\Add","Int",1,"Int",2)

msgbox,% 결과

이렇게 하면 덧셈이 되겠죠 ?
그냥 이렇게 쓰는거에요.

따로 설명할게 없네요.

 

DllCall을 잘쓰는방법은 따로 없고 API 언어를 배워서 DLL을 잘 다루는 수 밖에는 없죠.

그밖에는 쓰고싶은 기능을 포럼이나 인터넷에 쳐서 찾아보는 방법입니다.

Dll을 만들고 싶으시면

http://blog.naver.com/dkwk3028/30163226532 들어가서 보세요.

VC++ 로 만들었습니다.

반응형

댓글