Funzione GetObject (Visual Basic)
Aggiornamento: novembre 2007
Restituisce un riferimento a un oggetto fornito da un componente COM.
Public Function GetObject( _
Optional ByVal PathName As String = Nothing, _
Optional ByVal [Class] As String = Nothing _
) As Object
Parametri
Parametro |
Descrizione |
||||||
---|---|---|---|---|---|---|---|
PathName |
Facoltativo. String. Percorso completo e nome del file contenente l'oggetto da recuperare. Se PathName è omesso oppure è una stringa di lunghezza zero (""), è necessario Class. |
||||||
Class |
Obbligatorio se non viene fornito il parametro PathName. String. Stringa che rappresenta la classe dell'oggetto. La sintassi dell'argomento Class è caratterizzata dalle seguenti parti: appname.objecttype
|
Eccezioni
Tipo di eccezione |
Numero di errore |
Condizione |
---|---|---|
Non esiste alcun oggetto con il tipo di classe specificato. |
||
Non esiste alcun oggetto con il percorso e il nome di file specificati. |
Se si esegue l'aggiornamento delle applicazioni Visual Basic 6.0 che utilizzano la gestione degli errori non strutturata, vedere la colonna "Numero di errore". È possibile confrontare il numero di errore con la Proprietà Number (oggetto Err). Se possibile, tuttavia, si consiglia di sostituire il controllo dell'errore con la procedura illustrata nella sezione Cenni preliminari sulla gestione strutturata delle eccezioni per Visual Basic.
Note
La funzione GetObject consente di caricare un'istanza di un componente COM da un file. Nell'esempio riportato di seguito viene illustrata questa situazione.
Dim CADObject As Object
CADObject = GetObject("C:\CAD\schema.cad")
Quando si esegue questo codice, viene avviata l'applicazione associata al percorso specificato in PathName e viene attivato l'oggetto incluso nel file specificato.
Casi predefiniti
Se PathName è una stringa di lunghezza zero (""), GetObject restituisce una nuova istanza dell'oggetto con il tipo di classe specificato. Se l'argomento PathName viene omesso, GetObject restituisce un oggetto correntemente attivo con il tipo di classe specificato in Class. Se non esiste alcun oggetto del tipo specificato, verrà generato un errore.
Accesso a un sottoggetto
In alcune applicazioni è possibile attivare un sottoggetto associato a un file. Per eseguire questa operazione, è necessario aggiungere un punto esclamativo (!) alla fine del nome del file, seguito da una stringa che identifica la parte del file che si desidera attivare. Per ulteriori informazioni sulle modalità di creazione di tale stringa, consultare la documentazione dell'applicazione nella quale è stato creato l'oggetto.
In un'applicazione di disegno, ad esempio, è possibile memorizzare in un file un disegno a più livelli. Per attivare un livello all'interno di un disegno denominato schema.cad, è possibile utilizzare il seguente codice:
layerObject = GetObject("C:\CAD\schema.cad!Layer3")
Specifica di una classe
Se non si specifica il parametro Class dell'oggetto, vengono determinati dall'automazione l'applicazione da avviare e l'oggetto da attivare in base al nome di file specificato. Con alcuni file, tuttavia, vengono supportate più classi dell'oggetto. Un disegno, ad esempio, può supportare tre diversi tipi di oggetti: un oggetto Application, un oggetto Drawing e un oggetto Toolbar, appartenenti tutti allo stesso file. Per specificare l'oggetto di un file da attivare, utilizzare l'argomento facoltativo Class. Nell'esempio riportato di seguito viene illustrata questa situazione.
Dim drawObj As Object
drawObj = GetObject("C:\Drawings\sample.drw", "Figment.Drawing")
Nell'esempio, Figment è il nome di un'applicazione di disegno e Drawing è uno dei tipi di oggetto supportati.
Utilizzo dell'oggetto
Una volta attivato un oggetto, è possibile fare riferimento a quest'ultimo nel codice utilizzando la variabile oggetto dichiarata. Nell'esempio precedente, per accedere alle proprietà e ai metodi del nuovo oggetto, viene utilizzata la variabile oggetto drawObj. Nell'esempio riportato di seguito viene illustrata questa situazione.
drawObj.Line(9, 90)
drawObj.InsertText(9, 100, "Hello, world.")
drawObj.SaveAs("C:\Drawings\sample.drw")
Nota: |
---|
Utilizzare la funzione GetObject quando è disponibile un'istanza corrente dell'oggetto o se si desidera creare l'oggetto con un file caricato. Se non sono presenti istanze correnti e non si desidera avviare l'oggetto con un file caricato, utilizzare la Funzione CreateObject (Visual Basic). Se un oggetto è stato registrato come oggetto ActiveX a singola istanza, verrà creata una sola istanza dell'oggetto, indipendentemente dal numero di chiamate effettuate a CreateObject. Con un oggetto a singola istanza, la funzione GetObject restituisce sempre la stessa istanza se viene chiamata utilizzando una sintassi con stringa di lunghezza zero (""), mentre viene generato un errore se l'argomento PathName viene omesso. Non è consentito utilizzare GetObject per ottenere un riferimento a una classe creata con Visual Basic. |
Nota sulla sicurezza: |
---|
La funzione GetObject richiede l'autorizzazione di accesso al codice non gestito, che può influenzarne l'esecuzione in situazioni di attendibilità parziale. Per ulteriori informazioni, vedere SecurityPermission e Permessi di accesso al codice. |
Quando l'utilizzo dell'oggetto è terminato, impostare tutti i riferimenti dell'oggetto su Nothing. In questo modo è possibile eliminare il componente COM.
Esempio
Nell'esempio riportato di seguito la funzione GetObject viene utilizzata per determinare se Excel è in esecuzione.
' Test to see if a copy of Excel is already running.
Private Sub testExcelRunning()
On Error Resume Next
' GetObject called without the first argument returns a
' reference to an instance of the application. If the
' application is not already running, an error occurs.
Dim excelObj As Object = GetObject(, "Excel.Application")
If Err.Number = 0 Then
MsgBox("Excel is running")
Else
MsgBox("Excel is not running")
End If
Err.Clear()
excelObj = Nothing
End Sub
Nell'esempio riportato di seguito la funzione GetObject viene utilizzata per ottenere un riferimento a uno specifico foglio di lavoro di Microsoft Excel (excelObj). La chiamata a GetObject restituisce un riferimento al foglio di lavoro rappresentato dal file specificato, test.xls. Il codice di esempio consente quindi di visualizzare sia Excel che la finestra contenente il foglio di lavoro specificato.
In questo esempio si richiede Option Strict Off in quanto viene utilizzata l'associazione tardiva in cui gli oggetti vengono assegnati a variabili di tipo Object. È possibile specificare Option Strict On e dichiarare oggetti con tipi specifici aggiungendo un riferimento al progetto nella libreria dei tipi di Excel. A tale scopo, aprire la finestra di dialogo Aggiungi riferimento dal menu Progetto di Visual Studio e selezionare la libreria dei tipi di Excel nella scheda COM.
' Add Option Strict Off to the top of your program.
Option Strict Off
Private Sub getExcel()
Dim fileName As String = "c:\vb\test.xls"
If Not My.Computer.FileSystem.FileExists(fileName) Then
MsgBox(fileName & " does not exist")
Exit Sub
End If
' Set the object variable to refer to the file you want to use.
Dim excelObj As Object = GetObject(fileName)
' Show Excel through its Application property.
excelObj.Application.Visible = True
' Show the window containing the file.
Dim winCount As Integer = excelObj.Parent.Windows.Count()
excelObj.Parent.Windows(winCount).Visible = True
' Insert additional code to manipulate the test.xls file here.
' ...
excelObj = Nothing
End Sub
Note per gli sviluppatori di applicazioni per Smart Device
Questa funzione non è supportata.
Requisiti
Spazio dei nomi:Microsoft.VisualBasic
**Modulo:**Interaction
Assembly: Visual Basic Runtime Library (in Microsoft.VisualBasic.dll)