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 drawObj
objet . 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.