Interaction.GetObject(String, String) Metodo

Definizione

Restituisce un riferimento a un oggetto fornito da un componente COM.

[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static object? GetObject (string? PathName = default, string? Class = default);
public static object GetObject (string PathName = default, string Class = default);
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member GetObject : string * string -> obj
static member GetObject : string * string -> obj
Public Function GetObject (Optional PathName As String = Nothing, Optional Class As String = Nothing) As Object

Parametri

PathName
String

facoltativo. String. Percorso completo e nome del file contenente l'oggetto da recuperare. Se PathName viene omesso, è necessario Class.

Class
String

Obbligatorio se non viene specificato PathName. String. Stringa che rappresenta la classe dell'oggetto. Di seguito sono descritti la sintassi e le parti dell'argomento Class:

appname.objecttype

Parametro [1|1]

Descrizione [1|2]

[2|1] appname

[2|2] richiesta. String. Nome dell'applicazione che fornisce l'oggetto.

[3|1] objecttype

[3|2] richiesta. String. Tipo o classe dell'oggetto da creare.

Restituisce

Riferimento a un oggetto fornito da un componente COM.

Attributi

Eccezioni

Non esiste alcun oggetto con il tipo di classe specificato.

Non esiste alcun oggetto con il percorso e il nome di file specificati.

Esempio

Nell'esempio seguente viene utilizzata la GetObject funzione per ottenere un riferimento a un foglio di lavoro specifico di Microsoft Excel (excelObj). Utilizza la proprietà del foglio di Application lavoro per rendere visibile Excel, chiuderla ed eseguire altre azioni. Usando due chiamate API, la detectExcel procedura cerca Excel e, se è in esecuzione, immetterla nella tabella Running Object. La prima chiamata a GetObject causa di un errore se Excel non è già in esecuzione, che in questo esempio fa sì che il excelWasNotRunning flag venga 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'eccezione FileNotFoundException. Successivamente, il codice di esempio rende visibile sia Excel che la finestra contenente 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 e dichiarare Option Strict On oggetti di tipi di oggetto specifici se si aggiunge un riferimento alla libreria dei tipi di Excel dalla scheda COM della finestra di dialogo Aggiungi riferimento del menu Progetto 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 getExcel funzione, viene effettuato un controllo per verificare se Excel è già in esecuzione. In caso contrario, viene creata un'istanza di .

Importante

Per semplicità, l'esempio precedente presuppone che qualsiasi finestra chiamata XLMAIN appartenga a un'istanza di Microsoft Excel. Se un altro oggetto, possibilmente 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. Questa condizione è illustrata nell'esempio seguente.

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, si verifica 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.

Ad esempio, in un'applicazione di disegno potrebbero essere presenti più livelli in 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 , Automazione determina l'avvio dell'applicazione Classe 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 tipi diversi 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 . Questa condizione è illustrata nell'esempio seguente.

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, è possibile farvi riferimento nel codice usando la variabile oggetto dichiarata. Nell'esempio precedente si accede alle proprietà e ai metodi del nuovo oggetto usando la variabile drawObjoggetto . Questa condizione è illustrata nell'esempio seguente.

drawObj.Line(9, 90)  
drawObj.InsertText(9, 100, "Hello, world.")  
drawObj.SaveAs("C:\Drawings\sample.drw")  

Nota

Usare la GetObject funzione quando è presente un'istanza corrente dell'oggetto o se si vuole creare l'oggetto con un file caricato. Se non è presente alcuna istanza corrente e non si vuole che l'oggetto venga 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 utilizzare GetObject per ottenere un riferimento a una classe creata con Visual Basic.

Importante

La GetObject funzione richiede l'autorizzazione del codice non gestito, che potrebbe influire sull'esecuzione in situazioni di attendibilità parziale. Per altre informazioni, vedere SecurityPermission e Autorizzazioni di accesso al codice.

Si applica a

Vedi anche