Interaction.GetObject(String, String) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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). Elle utilise la propriété de la feuille de Application calcul pour rendre Excel visible, la 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 le tableau 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 déjà 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 vérification 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 qu’une fenêtre appelée XLMAIN appartient à une instance de Microsoft Excel. Si un autre objet, éventuellement lancé par 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 une 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 une nouvelle instance d’objet 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 , Automation détermine l’application Classà 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 y faites référence dans le code à l’aide de la variable objet que vous avez déclarée. Dans l’exemple précédent, vous accédez aux propriétés et aux 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 d’appel CreateObject . Avec un objet à instance unique, GetObject retourne toujours la même instance lorsqu’elle est appelée avec la syntaxe de chaîne de longueur nulle (""), et elle génère 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.