2010. 3. 13. 09:43

VBScript 에서 .NET 클래스 이용하기

.NET Framework 에는 COM-Callable wrapper 를 가지고 있는 .NET Class 가 많이 있다. 이러한 클래스들은 VBScript 에서 접근하여 사용할 수 있다는 것을 의미한다.

HKEY_CLASSES_ROOT 하위의 레지스트리를 보면 아래와 같이 System 으로 시작하는 클래스들을 볼 수 있다.


이러한 .NET Framework 클래스들은 VBScript 에서 생성하여 사용할 수 있다. 이러한 클래스들 중의 일부는 System.ContextMarshalException 클래스와 같이 생성해봐야 아무 쓸모가 없는 것들이 많다.

하지만 그중에는 VBScript 에서  아주 유용하게 사용할 수 있는 것들이 있다.

스크립트에서 정렬을 아이템 하려면 아래와 같이 정렬 함수를 직접 작성해야만 한다.

 For i = (UBound(arrNames) - 1) to 0 Step -1
    For j= 0 to i
        If UCase(arrNames(j)) >
          UCase(arrNames(j+1)) Then
            strHolder = arrNames(j+1)
            arrNames(j+1) = arrNames(j)
            arrNames(j) = strHolder
        End If
    Next
Next



하지만 이때 .NET 클래스를 이용하면 아주 쉽게 해결할 수 있다. 아래는 오름차순으로 알파벳을 정렬하는 예이다.

 Set DataList = CreateObject _
      ("System.Collections.ArrayList")

DataList.Add "B"
DataList.Add "C"
DataList.Add "E"
DataList.Add "D"
DataList.Add "A"

DataList.Sort()

For Each strItem in DataList
    Wscript.Echo strItem
Next


내림차순으로 정렬하는 것 역시 아주 쉽다.

 
Set DataList = CreateObject _
("System.Collections.ArrayList")

DataList.Add "B"
DataList.Add "C"
DataList.Add "E"
DataList.Add "D"
DataList.Add "A"

DataList.Sort()
DataList.Reverse()

For Each strItem in DataList
Wscript.Echo strItem
Next

이외에도 Random 수를 생성하는 경우에도 .NET 클래스를 사용할 수 있다.

스크립트상에서 1~100 까지의 수중에서 임의의 수를 생성하는 방법은 아래와 같다.

 Randomize
Wscript.Echo Int((100 - 1 + 1) * Rnd + 1)


이를 .NET Framework System.Random.Random 클래스를 사용하면 다음과 같다.

 Set objRandom = CreateObject("System.Random")
Wscript.Echo objRandom.Next_2(1,100)

출처 : http://207.46.16.252/en-us/magazine/2007.01.heyscriptingguy.aspx