티스토리 뷰

여러가지 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++ 로 만들었습니다.

댓글
  • 프로필사진 예지력 초기화님 안녕하세요
    http://ahkscript.org/boards/viewtopic.php?f=6&t=5841
    위 링크는 오토핫키 포럼에 제가 작성한 gui 폼에 스킨입히는 방법에 대한 글입니다

    DllCall(DLL . "\USkinInit", Int,0, Int,0, AStr, SkinName)
    유니코드 오토핫키에서는 타입3의 자료형을 AStr으로 줘야 적용이되는데요.

    c++ dll 소스코드를 보면 그냥 Str으로 주는게 맞을텐데, 왜 AStr으로 바꿔줘야 적용이 되는지 모르겠습니다..
    AStr이 Str과 어떤 차이점이 있는건지 아시나요?

    포럼과 헬프파일을 찾아봐도 AStr에 관한 정보가 없더군요
    2015.02.03 19:43 신고
  • 프로필사진 PRG 찾아보니깐
    ANSI버전의 오토핫키면 AStr을쓰고
    UNICODE버전 오토핫키면 WStr을 쓴다고하네요

    저도 자세한건모르겠어요
    2015.02.03 23:04 신고
  • 프로필사진 예지력 저도 그렇게 알고있었는데
    실제로 사용은
    ANSI버전 오토핫키는 Str 을
    Unicode버전 오토핫키는 AStr 을 사용해야 작동하네요 -_-;; ㅋㅋ
    2015.02.03 23:18 신고
  • 프로필사진 PRG 나중에 한번 컴퓨터로 찾아볼게요ㅋㅋ 2015.02.03 23:19 신고
댓글쓰기 폼