Visual Basic 함수정리(G)
출처 : http://blog.naver.com/chchcom?Redirect=Log&logNo=3156879
◆ GetAllSettings 함수
Windows 레지스트리의 응용 프로그램 항목에서 키 설정의 이름과 값 (원래 SaveSetting으로 작성)들의 목록을 반환합니다.
▶ 구문 : GetAllSettings(appname, section)
GetAllSettings 함수는 세 개의 명명된 인수를 가집니다.
▶ 인수 설명
appname 필수. 키 설정을 알고자 하는 응용 프로그램이나 프로젝트 이름을 값으로 하는 문자열 식입니다.
Section 필수. 키 설정을 알고자 하는 영역의 이름을 값으로 하는 문자열 식입니다. GetAllSettings 은 인수로 받은 절과 그
값을 값으로 하는 이차원 문자열 배열인 Variant를 반환합니다.
▶ 참고 : GetAllSettings은 appname이나 section이 명시되지 않으면, 초기화되지 않은 Variant를 반환합니다.
GetAllSettings 함수 예제
다음 예제에서는 먼저 appname으로 지정된 응용 프로그램에 대한 Windows 레지스트리(또는 16 비트 Windows 플랫폼에서는 .INI
파일)에 항목을 만들기 위해 SaveSetting 문을 사용하고, 그 다음에 설정한 내용을 표시하기 위해 GetAllSettings 함수를 사용합니다.
응용 프로그램 이름과 section 이름은 GetAllSettings로 얻을 수 없음에 유의합니다. 마지막으로 DeleteSetting 문으로 응용 프로그
램의 항목을 제거합니다.
' GetAllSettings에 의해 반환된 2차원 배열을 가지는 변형입니다
' 카운터를 가지는 정수입니다.
Dim MySettings As Variant, intSettings As Integer
' 레지스터리에 몇 개의 설정을 배치합니다.
SaveSetting appname := "MyApp", section := "Startup", _
key := "Top", setting := 75
SaveSetting "MyApp","Startup", "Left", 50
' 설정을 검색합니다.
MySettings = GetAllSettings(appname := "MyApp", section := "Startup")
For intSettings = LBound(MySettings, 1) To UBound(MySettings, 1)
Debug.Print MySettings(intSettings, 0), MySettings(intSettings, 1)
Next intSettings
DeleteSetting "MyApp", "Startup"
레지스트리
Microsoft Windows 3.1에서는 OLE 등록 정보와 파일 연결은 등록 데이터 베이스에 저장되고, 프로그램 설정은 Windows 시스템 초기(.ini) 파일에
저장됩니다. Microsoft Windows 95에서는 Windows 레지스트리가 사용자, 응용 프로그램, 컴퓨터 지정 정보에 관한 중앙 구성을 담당하며 Windows
3.1 등록 데이터 베이스와 .ini 파일내에 있는 예전 정보를 포함하고 있습니다.
명명된 인수
개체 라이브러리에서 먼저 정의된 이름을 가진 인수를 의미합니다. 구문에서 요구하는 지정된 순서의 각 인수 값을 제공하는 대신에 사용자는
명명된 인수를 사용하여 임의의 순서로 값을 할당할 수 있습니다. 예를 들면 다음과 같이 세 개의 인수를 받는 방법을 제안합니다.
DoSomeThing namedarg1, namedarg2, namedarg3
값을 명명된 인수에 할당함으로써 사용자는 다음의 문을 사용할 수 있습니다.
DoSomeThing namedarg3 := 4, namedarg2 := 5, namedarg1 := 20
명명된 인수는 구문의 정상 배치 순서로 나타내지 않아도 된다는 것을 주의하십시오.
프로젝트
모듈 집합을 의미합니다.
◆ GetAttr 함수
파일, 디렉토리, 또는 폴더 속성을 나타내는 Integer를 반환합니다.
▶ 구문 : GetAttr(pathname)
pathname 인수는 파일 이름을 지정하는 문자열 식이며 필수적으로 사용됩니다. 이 pathname에는 디렉토리 또는 폴더, 드라이브가
포함될 수 있습니다.
반환값 GetAttr가 반환한 값은 다음 속성값들의 합입니다.
상수 값 설명
vbNormal 0 표준
vbReadOnly 1 읽기 전용
vbHidden 2 숨겨짐
vbSystem 4 시스템
vbDirectory 16 디렉토리 또는 폴더
vbArchive 32 마지막 백업 후에 파일이 변경되었습니다.
▶ 메모 : 응용 프로그램용 Visual Basic에 의해 이 상수를 지정합니다. 코드에서 이 이름을 실제 값 대신 사용할 수 있습니다.
▶ 참고 : 어떤 속성이 설정되었는지 결정하기 위해서는 And 연산자를 사용하여 GetAttr 함수가 반환한 값과 원하는 개개의 파일 속
성값을 비트 단위 비교를 수행합니다. 결과가 0이 아니면 명명된 파일에 그 속성이 설정된 것입니다. 예를 들면, 문서 속성이 설
정되지 않았다면 다음 And 식의 반환값은 0이 됩니다.
Result = GetAttr(FName) And vbArchive
보관 속성이 설정되어 있다면 0이 아닌 값이 되돌려 집니다.
비트 단위 비교
두 숫자 식으로 표현된 동일한 위치의 비트간의 비트 단위의 비교를 의미합니다.
GetAttr 함수 예제 이 예제는 GetAttr 함수를 사용하여 파일과 디렉토리 또는 폴더의 속성을 결정합니다.
Dim MyAttr
' 파일 TESTFILE이 숨겨진 속성 설정을 가지고 있음을 가정합니다.
MyAttr = GetAttr("TESTFILE") ' 2를 반환합니다.
' 숨겨진 속성이 TESTFILE에 설정되면 0이 아닌 값을 반환합니다.
Debug.Print MyAttr And vbHidden
' 파일 TESTFILE이 숨겨진 속성과 읽기 전용 속성 설정을 가지고 있음을 가정합니다.
MyAttr = GetAttr("TESTFILE") ' 3을 반환합니다.
' 숨겨진 속성이 TESTFILE에 설정되면 0이 아닌 값을 반환합니다.
Debug.Print MyAttr And (vbHidden + vbReadOnly)
' MYDIR이 디렉토리 또는 폴더라고 가정합니다.
MyAttr = GetAttr("MYDIR") ' 16을 반환합니다.
◆ GetAutoServerSettings 함수
ActiveX 구성 요소의 등록 상태에 대한 정보를 반환합니다.
▶ 구문 : object.GetAutoServerSettings([progid], [clsid])
GetAutoServerSettings 함수는 다음의 구성 요소로 되어 있습니다.
구성 요소 설명
object 필수. 적용 대상 목록의 개체를 평가하는 개체 식
progid 선택. 구성 요소의 ProgID를 지정하는 variant 식
clsid 선택. 구성 요소의 CLSID를 지정하는 variant 식
반환값 GetAutoServerSettings 함수는 부여된 ActiveX 구성 요소에 대한 배열 값을 포함하는 Variant를 반환합니다. 인덱스 값과
설명은 다음과 같습니다.
값 설명
1 ActiveX 구성 요소가 원격 등록된 경우에는 True
2 원격 시스템 이름
3 RPC 네트워크 프로토콜 이름
4 RPC 인증 레벨
▶ 참고 : 값이 누락되었거나 사용할 수 없는 경우, 값은 빈 문자열이 됩니다. 메서드 중 오류가 발생할 경우, 반환값은 Empty 형식
의 Variant가 됩니다.
개체 식
특정한 개체를 지정하고 개체의 컨테이너를 포함할 수 있는 식을 의미합니다. 예를 들면 응용 프로그램은 Text 개체가 포함된 Document 개체를
포함한 Application 개체를 가질 수 있습니다.
variant 식
특수 값인 Empty와 Null뿐만 아니라 숫자, 문자열, 날짜 데이터를 계산할 수 있는 식을 의미합니다.
GetAutoServerSettings 함수 예제
이 예제에서는 "Hello" 라고 명명된 원격 등록 개체 정보를 검색합니다.
Sub ViewHello()
Dim oRegClass As New RegClass
Dim vRC As Variant
vRC = oRegClass.GetAutoServerSettings _
("HelloProj.HelloClass")
If Not(IsEmpty(vRC)) Then
If vRC(1) Then
MsgBox "Hello is registered remotely on a " _
& "server named: " & vRC(1)
Else
MsgBox "Hello is registered locally."
End If
End if
End Sub
◆ GetObject 함수
파일에서 ActiveX 개체에 대한 참조를 반환합니다.
▶ 구문 : GetObject([pathname] [, class])
GetObject 함수 구문에는 명명된 인수가 있습니다.
구성 요소
설명
pathname
class
선택 사항; Variant (String). 검색할 개체가 있는 파일과 전체 경로 이름 pathname이 빠져
있으면 class가 필요합니다.
선택 사항; Variant (String). 개체의 클래스를 나타내는 문자열.
클래스 인수는 구문 appname.objecttype을 사용하며 다음과 같은 구성 요소로 되어 있습니다
.
구성 요소
설명
appname
objecttype
필수 사항; Variant (String). 개체를 제공하는 응용 프로그램 이름.
필수 사항; Variant (String). 만들 개체의 클래스와 형식.
▶ 참고 : GetObject 함수로 파일에서 ActiveX 개체를 액세스하고 개체를 개체 변수에 지정합니다. Set 문으로 GetObject가 반환한 개체를 개
체 변수에 지정합니다.
예: Dim CADObject As Object
Set CADObject = GetObject("C:\CAD\SCHEMA.CAD")
위 코드를 실행하면 지정된 pathname과 관련된 응용 프로그램이 시작되고 지정된 파일의 개체가 활성화됩니다.
pathname이 길이가 0인 문자열("")이면 GetObject는 지정된 형식의 새 개체 인스턴스를 반환합니다. pathname 인수가 생략되어 있
으면 GetObject는 지정된 형식의 현재 개체를 반환합니다. 지정된 형식의 개체가 없으면 오류가 일어납니다.
파일의 일부만 활성화할 수 있는 응용 프로그램도 있습니다. 파일 이름 끝에 느낌표(!)를 붙이고 활성화할 파일 부분을 식별하는
문자열을 씁니다. 이 문자열을 만드는 자세한 방법은 개체를 만든 응용 프로그램 문서를 참고하십시오.
예를 들어, 그리기 응용 프로그램이라면 파일에 저장된 그림에 여러 층이 있을 것입니다. 다음 코드로 SCHEMA.CAD라는 그림의
한 층을 활성화할 수 있습니다.
Set LayerObject = GetObject("C:\CAD\SCHEMA.CAD!Layer3")
개체의 class를 지정하지 않으면 사용자가 제공한 파일 이름에 따라 자동화에 의하여 시작할 응용 프로그램과 활성화할 개체를
결정합니다. 하지만 여러 클래스의 개체를 지원하는 파일도 있습니다. 예를 들어, 그리기는 Application 개체, Drawing 개체, Toolbar
개체의 세 가지를 지원하는 데 이들은 모두 같은 파일의 부분입니다. 활성화할 개체를 지정하러면 선택적 class 인수를 사용하십
시오.
예: Dim MyObject As Object
Set MyObject = GetObject("C:\DRAWINGS\SAMPLE.DRW", "FIGMENT.DRAWING")
위 예에서 , FIGMENT는 그리기 응용 프로그램 이름이며 DRAWING은 지원되는 개체 형식의 하나입니다.
개체가 활성화되면 코드에서 지정한 개체 변수로 해당 개체를 참조할 수 있습니다. 위 예에서는 개체 변수 MyObject로 새 개체의
속성과 메서드를 액세스할 수 있습니다.
예: MyObject.Line 9, 90
MyObject.InsertText 9, 100, "안녕하십니까."
MyObject.SaveAs "C:\DRAWINGS\SAMPLE.DRW"
▶ 메모 : 개체의 현재 인스턴스가 있거나 이미 로드된 파일로 개체를 만들려면 GetObject 함수를 사용합니다. 현재 인스턴스가 없
고 로드된 파일로 개체를 시작하지 않으려면 CreateObject 함수를 사용하십시오.
개체가 단일 인스턴스 개체로 자기 등록하지 않으면 CreateObject를 여러 번 실행해도 개체당 하나의 인스턴스만이 만들어집니다.
단일 인스턴스 개체일 때 GetObject는 길이가 0인 문자열("") 구문으로 호출할 때 항상 같은 인스턴스를 만들고 pathname 인수가
없으면 오류가 일어납니다. GetObject는 Visual Basic으로 만든 클래스 참조를 얻는 데는 사용할 수 없습니다.
ActiveX 개체
자동 인터페이스를 통하여 다른 응용 프로그램이나 응용 프로그램 도구에 나타나는 개체를 의미합니다.
클래스
개체의 형식적 정의를 의미합니다. 클래스는 수행 중 개체의 인스턴스가 만들어지는 서식 파일처럼 수행됩니다. 클래스는 개체의 속성과 개체의
동작을 제어하는 방법을 정의합니다.
속성
개체의 명명된 속성을 의미합니다. 속성은 크기, 색상, 화면 위치와 같은 개체의 특성이나 가능 또는 불가능과 같은 개체의 상태를 정의합니다.
메서드
개체에 실행되는 프로시저를 의미합니다.
GetObject 함수 예제
다음은 GetObject 함수로 특정 Microsoft Excel워크시트(MyXL)를 참조하는 예입니다. 워크시트의 Application 속성으로 Microsoft
Excel을 표시하고 닫는 등의 작업을 합니다. 두 API 호출을 사용하면 DetectExcel Sub 프로시저는 Microsoft Excel을 찾고 실행 중이
면 Running Object Table에 입력합니다. GetObject의 첫 번째 호출은 Microsoft Excel이 실행 중이 아니면 오류를 일으킵니다. 예에서
는 오류 때문에 ExcelWasNotRunning 플래그가 True로 설정되었습니다. 두 번째 GetObject 호출은 파일을 열도록 지정합니다.
Microsoft Excel이 실행 중이 아니면 두 번째 호출로 프로그램을 시작하고 지정된 파일 mytest.xls 가 표시한 워크시트 참조를 반환
합니다. 파일은 지정 위치에 있어야 합니다. 그렇지 않으면 Visual Basic Automation 오류가 일어납니다. 다음은 Microsoft Excel과 지
정된 워크시트 창을 모두 표시하는 예입니다. 마지막으로 실행 중인 이전 버전의 Microsoft Excel이 없으면 Application 개체의 Quit
메서드로 Microsoft Excel을 종료합니다. 응용 프로그램이 이미 실행 중이면 이런 시도는 하지 않습니다. 참조 역시 Nothing에 설정
되어 해제됩니다.
' 필요한 API 루틴을 선언합니다.
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName as String, _
ByVal lpWindowName As Long) As Long
Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long _
ByVal wParam as Long _
ByVal lParam As Long) As Long
Sub GetExcel()
Dim MyXL As Object ' Microsoft Excel에 대한 참조를 취할 변수.
Dim ExcelWasNotRunning As Boolean ' 마지막 해제 플래그.
' 실행 중인 Microsoft Excel 복사본이 있는지 검사하십시오.
On Error Resume Next ' 오류 추적을 보류하십시오.
' 첫 번재 인수 없이 호출된 Getobject 함수는 응용 프로그램 인스턴스에 대한 참조를 반환합니다.
' 응용 프로그램을 실행 중이 아니면 오류가 일어납니다.
Set MyXL = Getobject(, "Excel.Application")
If Err.Number <> 0 Then ExcelWasNotRunning = True
Err.Clear ' 오류가 일어나면 Err 개체를 지우십시오.
' Microsoft Excel을 확인합니다. Microsoft Excel이 실행 중이면 Running Object table에 입력하십시오.
DetectExcel
Set MyXL = Getobject("c:\vb4\MYTEST.XLS") ' 개체 변수를 볼 파일에 대한 참조로 설정합니다.
' Application 속성으로 Microsoft Excel을 표시합니다. 그런 다음, MyXL 개체 참조의 Windows 컬렉션을 사용하는 파
' 일이 포함된 실제 창을 표시합니다.
MyXL.Application.Visible = True
MyXL.Parent.Windows(1).Visible = True
' 여기서 파일을
' 조작합니다.
' ...
' 시작했을 때 Microsoft Excel 복사본 실행 중이 아니였으면 Application 속성의 Quit 메서드로 종료합니다.
' Microsoft Excel을 종료할 때 제목 표시줄이 깜박이고 읽어들인 파일을 저장할 것인지 묻는 메시지가 표시되는지 확
' 인합니다.
If ExcelWasNotRunning = True Then
MyXL.Application.Quit
End IF
Set MyXL = Nothing ' 응용 프로그램과 스프레드시트에 대한
End Sub ' 참조를 해제합니다.
Sub DetectExcel()
' 프로시저는 실행 중인 Excel을 탐지하고 등록합니다.
Const WM_USER = 1024
Dim hWnd As Long
' Excel이 실행 중이면 API 호출은 핸들을 반환합니다.
hWnd = FindWindow("XLMAIN", 0)
If hWnd = 0 Then ' 0 means Excel not running.
Exit Sub
Else
' Excel이 샐행 중이므로 SendMessage API 함수로 Running Object Table에 입력합니다.
SendMessage hWnd, WM_USER + 18, 0, 0
End If
End Sub
◆ GetSetting 함수
Windows 레지스트리에서 키 설정값을 반환합니다.
▶ 구문 : GetSetting(appname, section, key[, default])
GetSetting 함수는 세 개의 명명된 인수를 가집니다.
▶ 인수 설명
appname 필수. 키 설정을 알고자 하는 응응 프로그램이나 프로젝트의 이름을 값으로 하는 문자열 식입니다.
section 필수. 키 설정을 알고자 하는 절의 이름을 값으로 하는 문자열 식입니다.
key 필수. 반환할 키 설정의 이름을 값으로 하는 문자열 식입니다.
Default 선택적인 인수 입니다. 키 설정에 아무 값도 없을 때 반환할 값을 가지고 있는 식입니다. 생략할 경우 default는 길이
가 0인 문자열 값을 가집니다.
▶ 참고 : GetSetting 인수 중의 하나라도 값이 지정되지 않으면, GetSetting은 default 값을 반환합니다.
GetSetting 함수 예제
다음 예제에서는 먼저 appname으로 지정된 응용 프로그램에 대한 Windows 레지스트리(또는 16 비트 Windows 플랫폼에서는 .INI
파일)에 항목을 만들기 위해 SaveSetting 문을 사용하고, 그 다음에 설정한 내용 중 한 가지를 표시하기 위해 GetSetting 함수를 사
용합니다. default 인수가 지정되어 있기 때문에 몇몇 값은 반환이 보장됩니다. section 이름은 GetSetting으로 얻을 수 없음에 유의
합니다. 마지막으로 DeleteSetting 문으로 응용 프로그램의 항목을 제거합니다.
Dim MySettings As Variant ' GetSetting에 의해 반환된 2차원 배열을 가지는 변형입니다.
SaveSetting "MyApp","Startup", "Top", 75 ' 레지스터리에 몇 개의 설정을 배치합니다.
SaveSetting "MyApp","Startup", "Left", 50
Debug.Print GetSetting(appname := "MyApp", section := "Startup", _
key := "Left", default := "25")
DeleteSetting "MyApp", "Startup"