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

Object

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 usata la GetObject funzione per ottenere un riferimento a un foglio di lavoro di Microsoft Excel specifico (excelObj). Usa la proprietà del Application foglio di lavoro per rendere visibili Excel, chiuderla e per eseguire altre azioni. Usando due chiamate API, la detectExcel procedura cerca Excel e, se è in esecuzione, immetterla nella tabella Oggetto in esecuzione. La prima chiamata a GetObject causa di un errore se Excel non è già in esecuzione, che in questo esempio causa l'impostazione del excelWasNotRunning flag su True. La seconda chiamata per specificare GetObject un file da aprire. Se Excel non è già in esecuzione, la seconda chiamata viene avviata 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 FileNotFoundExceptionoggetto . Successivamente, il codice di esempio rende visibili 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 oggetti specifici se si aggiunge un riferimento alla libreria dei tipi Excel dalla scheda COM della finestra di dialogo Aggiungi riferimento del menu Project 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 eseguito un controllo per verificare se Excel è già in esecuzione. In caso contrario, viene creata un'istanza.

Importante

Per semplicità, l'esempio precedente presuppone che qualsiasi finestra chiamata XLMAIN appartenga a un'istanza di Microsoft Excel. Se un altro oggetto, eventualmente avviato da manomissione illecita, ha creato una finestra con tale nome, riceverà tutti i messaggi destinati a 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 funzione per caricare un'istanza GetObject 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 viene avviata e l'oggetto nel file specificato PathName 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'applicazione Classda avviare e l'oggetto da attivare, in base al nome del file specificato. Alcuni file, tuttavia, possono supportare più di una classe di oggetto. Ad esempio, un disegno può supportare tre tipi diversi di oggetti: un Application oggetto, un Drawing oggetto e un Toolbar oggetto, tutti parte dello stesso file. Per specificare l'oggetto in un file che si desidera attivare, usare 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.

Uso dell'oggetto

Dopo l'attivazione di un oggetto, si fa riferimento al codice usando la variabile oggetto dichiarata. Nell'esempio precedente si accede a proprietà e 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 esiste un'istanza corrente e non si vuole che l'oggetto sia stato avviato con un file caricato, usare la CreateObject funzione.

Se un oggetto è registrato come oggetto ActiveX oggetto a istanza singola, viene creata solo un'istanza dell'oggetto, indipendentemente dal numero di chiamateCreateObject. 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.

Importante

La GetObject funzione richiede l'autorizzazione del codice non gestita, 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