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 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 Class
da 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 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 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.