Interaction.GetObject(String, String) Méthode

Définition

Retourne une référence à un objet fourni par un composant 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

Paramètres

PathName
String

Optionnel. String. Chemin d'accès complet et nom du fichier contenant l'objet à récupérer. Si PathName est omis, Class est requis.

Class
String

Requis si PathName n'est pas fourni. String. Chaîne représentant la classe de l'objet. L'argument Class emploie la syntaxe et les paramètres suivants :

appname.objecttype

[1|1] Paramètre

[1|2] Description

[2|1] appname

[2|2] requis. String. Nom de l'application qui fournit l'objet.

[3|1] objecttype

[3|2] requis. String. Type ou classe de l'objet à créer.

Retours

Une référence à un objet fourni par un composant COM.

Attributs

Exceptions

Aucun objet du type spécifié n'existe.

Aucun objet avec le chemin d'accès spécifié et le nom de fichier n'existe.

Exemples

L’exemple suivant utilise la GetObject fonction pour obtenir une référence à une feuille de calcul Microsoft Excel spécifique (excelObj). Il utilise la propriété de la feuille de Application calcul pour rendre Excel visible, le fermer et effectuer d’autres actions. À l’aide de deux appels d’API, la detectExcel procédure recherche Excel et, si elle est en cours d’exécution, l’entre dans la table Objet en cours d’exécution. Le premier appel à GetObject provoque une erreur si Excel n’est pas déjà en cours d’exécution, ce qui, dans cet exemple, entraîne la définition de l’indicateur excelWasNotRunning sur True. Le deuxième appel à GetObject spécifie un fichier à ouvrir. Si Excel n’est pas encore en cours d’exécution, le deuxième appel le démarre et retourne une référence à la feuille de calcul représentée par le fichier spécifié, test.xls. Le fichier doit exister à l’emplacement spécifié ; sinon, Visual Basic lève un FileNotFoundException. Ensuite, l’exemple de code rend Excel et la fenêtre contenant la feuille de calcul spécifiée visibles.

Cet exemple nécessite Option Strict Off , car il utilise une liaison tardive, où les objets sont affectés à des variables de type Object. Vous pouvez spécifier Option Strict On et déclarer des objets de types d’objets spécifiques si vous ajoutez une référence à la bibliothèque de types Excel à partir de l’onglet COM de la boîte de dialogue Ajouter une référence du menu Projet dans 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

Lorsque vous appelez la getExcel fonction, une case activée est effectuée pour voir si Excel est déjà en cours d’exécution. Si ce n’est pas le cas, une instance est créée.

Important

Par souci de simplicité, l’exemple précédent suppose que toute fenêtre appelée XLMAIN appartient à un instance de Microsoft Excel. Si un autre objet, éventuellement lancé par une falsification illicite, créait une fenêtre portant ce nom, il recevrait tous les messages que vous avez prévus pour Excel. Dans une application à utiliser pour la production, vous devez inclure des tests plus rigoureux pour vérifier qu’il XLMAIN appartient vraiment à Excel.

Remarques

Utilisez la GetObject fonction pour charger un instance d’un composant COM à partir d’un fichier. L'exemple suivant illustre ce comportement.

Dim CADObject As Object  
CADObject = GetObject("C:\CAD\schema.cad")  

Lorsque ce code s’exécute, l’application associée au spécifié est démarrée PathName et l’objet dans le fichier spécifié est activé.

Cas par défaut

Si PathName est une chaîne de longueur nulle (""), GetObject retourne un nouvel objet instance du type de classe spécifié. Si l’argument PathName est omis, GetObject retourne un objet actuellement actif du type de classe spécifié dans Class. Si aucun objet du type spécifié n’existe, une erreur se produit.

Accès à un sous-objet

Certaines applications vous permettent d’activer un sous-objet associé à un fichier. Pour ce faire, ajoutez un point d’exclamation (!) à la fin du nom de fichier et suivez-le avec une chaîne qui identifie la partie du fichier que vous souhaitez activer. Pour plus d’informations sur la création de cette chaîne, consultez la documentation de l’application qui a créé l’objet.

Par exemple, dans une application de dessin, vous pouvez avoir plusieurs couches d’un dessin stockées dans un fichier. Vous pouvez utiliser le code suivant pour activer une couche dans un dessin appelé schema.cad.

layerObject = GetObject("C:\CAD\schema.cad!Layer3")  

Spécification d’une classe

Si vous ne spécifiez pas l’objet Class, Automation détermine l’application à démarrer et l’objet à activer, en fonction du nom de fichier que vous fournissez. Toutefois, certains fichiers peuvent prendre en charge plusieurs classes d’objets. Par exemple, un dessin peut prendre en charge trois types d’objets différents : un Application objet, un Drawing objet et un Toolbar objet, qui font tous partie du même fichier. Pour spécifier l’objet d’un fichier que vous souhaitez activer, utilisez l’argument facultatif Class . L'exemple suivant illustre ce comportement.

Dim drawObj As Object  
drawObj = GetObject("C:\Drawings\sample.drw", "Figment.Drawing")  

Dans l’exemple précédent, Figment est le nom d’une application de dessin et Drawing est l’un des types d’objets qu’elle prend en charge.

Utilisation de l’objet

Une fois qu’un objet est activé, vous le faites référence dans le code à l’aide de la variable d’objet que vous avez déclarée. Dans l’exemple précédent, vous accédez aux propriétés et méthodes du nouvel objet à l’aide de la variable drawObjobjet . L'exemple suivant illustre ce comportement.

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

Notes

Utilisez la GetObject fonction lorsqu’il existe une instance actuelle de l’objet ou si vous souhaitez créer l’objet avec un fichier chargé. S’il n’existe aucune instance actuelle et que vous ne souhaitez pas que l’objet démarre avec un fichier chargé, utilisez la CreateObject fonction .

Si un objet s’est inscrit en tant qu’objet à instance unique ActiveX, une seule instance de l’objet est créée, quel que soit le nombre de fois CreateObject appelées. Avec un objet à instance unique, GetObject retourne toujours le même instance lorsqu’il est appelé avec la syntaxe chaîne de longueur nulle ("") et provoque une erreur si l’argument PathName est omis. Vous ne pouvez pas utiliser GetObject pour obtenir une référence à une classe créée avec Visual Basic.

Important

La GetObject fonction nécessite une autorisation de code non managé, ce qui peut affecter son exécution dans des situations de confiance partielle. Pour plus d’informations, consultez SecurityPermission et Autorisations d'accès au code.

S’applique à

Voir aussi