Interaction.GetObject(String, String) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Restituisce un riferimento a un oggetto fornito da un componente COM.
public static object GetObject(string PathName = default, string Class = default);
static member GetObject : string * string -> obj
Public Function GetObject (Optional PathName As String = Nothing, Optional Class As String = Nothing) As Object
Parametri
- PathName
- String
Optional.
String. Percorso completo e nome del file che contiene l'oggetto da recuperare. Se PathName viene omesso, Class è obbligatorio.
- Class
- String
Obbligatorio se PathName non viene specificato.
String. Stringa che rappresenta la classe dell'oggetto. L'argomento Class ha la sintassi e le parti seguenti:
appname.objecttype
[1|1] Parametro
[1|2] Descrizione
[2|1] appname
[2|2] Obbligatorio.
String. Nome dell'applicazione che fornisce l'oggetto.
[3|1] objecttype
[3|2] Obbligatorio.
String. Tipo o classe dell'oggetto da creare.
Valori restituiti
Riferimento a un oggetto fornito da un componente COM.
Eccezioni
Non esiste alcun oggetto del tipo di classe specificato.
Non esiste alcun oggetto con il percorso e il nome file specificati.
Esempio
Nell'esempio seguente viene utilizzata la funzione GetObject per ottenere un riferimento a un foglio di lavoro Microsoft Excel specifico (excelObj). Usa la proprietà Application del foglio di lavoro per rendere visibile Excel, chiuderla e per eseguire altre azioni. Usando due chiamate API, la routine detectExcel cerca Excel e, se è in esecuzione, immetterla nella tabella Oggetto in esecuzione. La prima chiamata a GetObject causa un errore se Excel non è già in esecuzione, che in questo esempio fa sì che il flag excelWasNotRunning sia impostato su True. La seconda chiamata a GetObject specifica un file da aprire. Se Excel non è già in esecuzione, la seconda chiamata lo avvia e restituisce un riferimento al foglio di lavoro rappresentato dal file specificato, test.xls. Il file deve esistere nel percorso specificato; in caso contrario, Visual Basic genera un FileNotFoundException. Il codice di esempio rende quindi visibili sia Excel che la finestra che contiene il foglio di lavoro specificato.
Questo esempio richiede Option Strict Off perché usa l'associazione tardiva, in cui gli oggetti vengono assegnati alle variabili di tipo Object. È possibile specificare Option Strict On e dichiarare oggetti di tipi di oggetto specifici se si aggiunge un riferimento alla libreria dei tipi Excel dalla finestra di dialogo COM della scheda Aggiungi riferimento della finestra di dialogo Project menu in Visual Studio.
' Add Option Strict Off to the top of your program.
Option Strict Off
' 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
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
Quando si chiama la funzione getExcel, viene eseguito un controllo per verificare se Excel è già in esecuzione. In caso contrario, viene creata un'istanza di .
Important
Per semplicità, nell'esempio precedente si presuppone che qualsiasi finestra denominata XLMAIN appartenga a un'istanza di Microsoft Excel. Se un altro oggetto, eventualmente avviato da manomissioni illecite, ha creato una finestra con tale nome, riceverà tutti i messaggi che si intende per Excel. In un'applicazione da usare per la produzione, è necessario includere alcuni test più rigorosi per verificare che XLMAIN appartenga realmente a Excel.
Commenti
Usare la GetObject funzione per caricare un'istanza di un componente COM da un file. Nel seguente esempio viene illustrato questo aspetto.
Dim CADObject As Object
CADObject = GetObject("C:\CAD\schema.cad")
Quando viene eseguito questo codice, l'applicazione associata all'oggetto specificato PathName viene avviata e l'oggetto nel file specificato viene attivato.
Casi predefiniti
Se PathName è una stringa di lunghezza zero (""), GetObject restituisce una nuova istanza dell'oggetto del tipo di classe specificato. Se l'argomento PathName viene omesso, GetObject restituisce un oggetto attualmente attivo del tipo di classe specificato in Class. Se non esiste alcun oggetto del tipo specificato, viene restituito un errore.
Accesso a un oggetto secondario
Alcune applicazioni consentono di attivare un oggetto secondario associato a un file. A tale scopo, aggiungere un punto esclamativo (!) alla fine del nome del file e seguirlo con una stringa che identifica la parte del file da attivare. Per informazioni su come creare questa stringa, vedere la documentazione per l'applicazione che ha creato l'oggetto.
In un'applicazione di disegno, ad esempio, possono essere presenti più livelli per un disegno archiviato in un file. È possibile usare il codice seguente per attivare un livello all'interno di un disegno denominato schema.cad.
layerObject = GetObject("C:\CAD\schema.cad!Layer3")
Specifica di una classe
Se non si specifica l'oggetto Class, Automazione determina l'applicazione da avviare e l'oggetto da attivare, in base al nome file specificato. Alcuni file, tuttavia, possono supportare più classi di oggetti. Ad esempio, un disegno può supportare tre diversi tipi di oggetti: un Application oggetto, un Drawing oggetto e un Toolbar oggetto, tutti che fanno parte dello stesso file. Per specificare l'oggetto in un file da attivare, utilizzare l'argomento facoltativo Class . Nel seguente esempio viene illustrato questo aspetto.
Dim drawObj As Object
drawObj = GetObject("C:\Drawings\sample.drw", "Figment.Drawing")
Nell'esempio precedente, Figment è il nome di un'applicazione di disegno ed Drawing è uno dei tipi di oggetto supportati.
Utilizzo dell'oggetto
Dopo l'attivazione di un oggetto, si fa riferimento al codice usando la variabile oggetto dichiarata. Nell'esempio precedente si accede alle proprietà e ai metodi del nuovo oggetto usando la variabile drawObjoggetto . Nel seguente esempio viene illustrato questo aspetto.
drawObj.Line(9, 90)
drawObj.InsertText(9, 100, "Hello, world.")
drawObj.SaveAs("C:\Drawings\sample.drw")
Note
Usare la GetObject funzione quando è presente un'istanza corrente dell'oggetto o se si desidera creare l'oggetto con un file caricato. Se non è presente alcuna istanza corrente e non si vuole che l'oggetto sia stato avviato con un file caricato, usare la CreateObject funzione .
Se un oggetto si è registrato come oggetto a istanza singola ActiveX, viene creata una sola istanza dell'oggetto, indipendentemente dal numero di chiamate CreateObject . Con un oggetto a istanza singola, GetObject restituisce sempre la stessa istanza quando viene chiamata con la sintassi stringa di lunghezza zero ("") e genera un errore se l'argomento PathName viene omesso. Non è possibile usare GetObject per ottenere un riferimento a una classe creata con Visual Basic.
Important
La GetObject funzione richiede l'autorizzazione di codice non gestito, che potrebbe influire sull'esecuzione in situazioni di attendibilità parziale. Per altre informazioni, vedere SecurityPermission e Autorizzazioni di accesso al codice.