API(Application Programming Interface)는 현재 프로그램 외부의 프로시저를 말한다.
이 프로시저를 VB6에서 호출하기 위해서는 다음과 같은 규칙이 필요하다.

우선 이런 현재 프로그램에서 어떤 외부 프로시저를 사용할지를 지정해 주어야 한다. 이것을 선언이라며, 각 모듈의 선두에 선언한다.
선언 형식은 다음과 같다.
Pricate Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long
호출은 일반 프로시저를 호출하는 식으로 하면 된다.

선언에서 선두의 Private의 선언한 프로시저를 적용하는 범위를 지정한다. Private이면 선언한 프로시저는 API가 선언된 모듈에서만 호출 가능하고, Public로 선언하면 API가 선언한 모듈을 포함하는 프로그램 내에서 어디서나 호출 가능하다.
Declare는 API 선언 이라는 것을 알릴 뿐이다.
Function는 API가 반환값을 갖는 프로시저인지(Function 지정), 반환값을 갖지 않는 프로시저인지(Sub 지정)를 나타낸다. 반환값이 없거나, 있다고 해도 사용하지 않는다면 Sub로 지정하면 된다.
FindExecutable는 API를 VB6에서 어떤 이름으로 호출할것인가를 나타내고, 또는 Alias를 지정하지 않은 경우 API의 외부 프로시저명이 어떤것으로 돼어 있는지를 나타낸다. DEPENDS.EXE를 사용하면 지정된 파일에 어떤 프로시저가 포함되어 있는지를 알수 있다. 여기서는 선언된 API를 VB6에서 호출할때 FindExecutabled라는 이름으로 호출하여 사용한다.
Lib "shell32.dll"는 선언한 API 즉 외부 프로시저가가 어떤 파일에 포함되었는지를 나타낸다.
Alias "FindExecutableA"는 vb6에서 호출에 사용할 이름과, 지정된 파일에 포함된 외부 프로시저명이 다를경우, 지정된 파일에 외부 프로저명을 지정한다.
다음은 vb6에서 프로시저 사용시 인수와 반환값 자료형 적는 부분은 같다.

한가지 주의할것은 vb6에서 인수로 반환값중 String을 사용하게 되는 경우 vb6에서 호출시에는 String의 값을 유니코드로 간주하고 ANSI코드로 변환하고 API를 호출하고, 반환시에는 거꾸로 String값을 ANSI코드로 간주하고 유니코드로 자동 변환한다. 이러한 자동 변환을 쓰지 않기 위해선 Byte 배열을 사용한다.












+ Recent posts