여러가지 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++ 로 만들었습니다.
'Autohotkey > 강좌' 카테고리의 다른 글
[Autohotkey] 49. Loop 의 여러가지 형태 - 일반 , 파일 & 폴더 , 문장 분석(파싱) , 파일 읽기, 레지스트리 읽기 (0) | 2013.06.09 |
---|---|
[Autohotkey] 48. 레지스트리를 삭제하다. - RegDelete (0) | 2013.06.09 |
[Autohotkey] 47. 레지스트리를 쓰다 - RegWrite (0) | 2013.06.09 |
[Autohotkey] 46. 레지스트리를 읽어오다 - RegRead (0) | 2013.06.09 |
[Autohotkey] 45. 숫자들을 무작위로 뽑다 - Random (0) | 2013.06.09 |
댓글