Promotic
WikipediaLinkedInYoutubeTwitterFacebook

GetObject - funkcja języka VBScript

Opis:
Zwraca Automation obiekt z pliku.
Składnia:
Object GetObject([String Path], [String Class])
Wołanie:
Set o = GetObject(Path[, Class])
Parametry:
Path[opcjonalne] (String) Pełna ścieżka oraz nazwa pliku zawierającego wczytywany obiekt. Jeżeli nie jest ustawione, wtedy jest wymagany argument klasa.
Class[opcjonalne] (String) Klasa obiektu. Jest wprowadzana albo nazwa aplikacji oferująca dany obiekt lub klasa wytwarzanego obiektu.
Notatka:
Funkcja jest stosowana do dostępu do obiektu Automation z pliku i przyszeregowania obiektu do zmiennej objektowej. Do przyszeregowania obiektu zwróconego przez tę funkcję do zmiennej obiektowej jest stosowane polecenie Set.

Przykład:

Wybierz oraz skopiuj do schowka

Dim CADObject
Set CADObject = GetObject("C:\CAD\SCHEMA.CAD")
 
Przy wykonywaniu tego skryptu zostaje uruchomiona aplikacja skojarzona z określonym plikiem i obiekt w określonym pliku jest zaktywowany. Jeżeli argument ścieżka jest pusty łańcuch (""), wtedy GetObject zwraca nową instancję obiektu określonego typu. Jeżeli argument ścieżka jest pominięty, wtedy funkcja zwraca aktywny obiekt określonego typu. Jeżeli obiekt danego typu nie istnieje, wtedy dojdzie do błędu.

Niektóre aplikacje umożliwiają aktywowanie część pliku przez dodanie wykrzykniku (!) za nazwę pliku z następującym łańcuchem określającym część aktywowanego pliku. Informację, w jaki sposób można wytworzyć taki łańcuch trzeba znaleźć w dokumentacji aplikacji wytwarzającej (udostępniającej) obiekt.

Na przykład w aplikacji do wytwarzania grafiki można mieć kilka warstw zapisanych w pliku. Można zastosować następujący skrypt do zaktywowania warstwy w obrazku o nazwie "SCHEMA.CAD":

Wybierz oraz skopiuj do schowka

Dim LayerObject
Set LayerObject = GetObject("C:\CAD\SCHEMA.CAD!Layer3")
 
Jeżeli nie jest określona klasa obiektu, wtedy system określi, jaką aplikację uruchomić i który obiekt aktywować według określonej nazwy pliku. Niektóre pliki mogą jednak wspierać więcej niż jedną klasę obiektu. Na przykład obrazek mógł by wspierać trzy typy obiektu: obiekt Aplikacja, obiekt Obrazek i obiekt Pasek narzędziowy i wszystkie są jednocześnie częścią tego samego pliku. Do określenia katywowanego obiektu w pliku jest stosowany opcjonalny argument Klasa.

Przykład:

Wybierz oraz skopiuj do schowka

Dim oObject
Set oObject = GetObject("C:\DRAWINGS\SAMPLE.DRW", "FIGMENT.DRAWING")
 
W poprzednim przykładzie jest FIGMENT nazwą aplikacji rysującej a DRAWING jest jednym ze wspieranych obiektów. Po zaktywowaniu obiektu jest w skrypcie zastosowane odniesienie przy pomocy nowo wytworzonej zmiennej obiektowej. Przy pomocy zmiennej obiektowej można pracować z właściwościami i metodami nowego obiektu.

Przykład:

Wybierz oraz skopiuj do schowka

oObject.Line 9, 90
oObject.InsertText 9, 100, "Hello, world."
oObject.SaveAs "C:\DRAWINGS\SAMPLE.DRW"
 
Funkcja jest stosowana, jeżeli istnieje aktywna instancja obiektu lb jeżeli obiekt jest wytwarzany z pliku. Jeżeli nie jest aktywna żadna instancja i nie jest aktywowany obiekt z pliku, wtedy można zastosować funkcję CreateObject.

Jeżeli obiekt został zarejestrowany jako jedno-instancjowy, wtedy zostanie wytworzona tylko jedna instancja obiektu bez względu na to, ile razy została wykonana funkcja CreateObject. W przypadku obiektu jedno instancjowego funckja GetObject zwraca zawsze tą samą instancję, jeżeli jest wywołana z pustym łańcuchem i spowoduje błąd, jeżeli argument ścieżka jest pominięty.

Przykład:
Przykład pokazuje, jak odczytać wartość z innej aplikacji PROMOTIC. Każda aplikacja PROMOTIC z puktu widzenia SO Windows funkcjonuje jako obiekt. Przy pomocy metody GetObject można uzyskać dostęp do innej aplikacji PROMOTIC (C:\Proj2\Proj2.pra) na tym samym komputerze.. Z tej aplikacji następnie można uzyskać wartość zmiennej "Temperatura" w obiekcie /Data.
Wybierz oraz skopiuj do schowka

Dim oProj, oPm, Val
Set oProj = GetObject("C:\proj2\proj2.pra")
If Not oProj Is Nothing Then
Set oPm = oProj.Application.Pm
Val = oPm("/Data").Item("Temperatura").Value
End If
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice