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.
[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 Class
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 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 drawObj
oggetto . 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.