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.
public static object GetObject(string PathName = default, string Class = default);
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
Optional.
String. Chemin d’accès complet et nom du fichier contenant l’objet à récupérer. Si PathName elle est omise, Class elle est requise.
- Class
- String
Obligatoire s’il PathName n’est pas fourni.
String. Chaîne représentant la classe de l’objet . L’argument Class a la syntaxe et les parties suivantes :
appname.objecttype
[1|1] Paramètre
[1|2] Description
[2|1] appname
[2|2] Obligatoire.
String. Nom de l’application fournissant l’objet.
[3|1] objecttype
[3|2] Obligatoire.
String. Type ou classe de l’objet à créer.
Retours
Référence à un objet fourni par un composant COM.
Exceptions
Aucun objet du type de classe spécifié n’existe.
Aucun objet avec le chemin d’accès et le nom de fichier spécifiés n’existent.
Exemples
L’exemple suivant utilise la fonction GetObject pour obtenir une référence à une feuille de calcul Microsoft Excel spécifique (excelObj). Elle utilise la propriété Application de la feuille de calcul pour rendre Excel visible, la fermer et effectuer d'autres actions. À l’aide de deux appels d’API, la procédure detectExcel recherche Excel et, si elle est en cours d’exécution, l’entre dans la table d’objets 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 entraîne la définition de l’indicateur excelWasNotRunning sur True. Deuxième appel pour GetObject spécifier 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 la 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 la boîte de dialogue COM du menu Add Reference du menu Project 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 fonction getExcel, 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 que toute fenêtre appelée XLMAIN appartient à une instance de Microsoft Excel. Si un autre objet, éventuellement lancé par une falsification illicite, a créé une fenêtre portant ce nom, il reçoit 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 que 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 cela.
Dim CADObject As Object
CADObject = GetObject("C:\CAD\schema.cad")
Lorsque ce code s’exécute, l’application associée au code spécifié PathName est démarrée et l’objet du fichier spécifié est activé.
Cas par défaut
S’il s’agit PathName d’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 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, plusieurs couches peuvent être 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’objet. 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 dans un fichier que vous souhaitez activer, utilisez l’argument facultatif Class . L’exemple suivant illustre cela.
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’il prend en charge.
Utilisation de l’objet
Une fois qu’un objet est activé, vous le référencez 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 drawObjd’objet. L’exemple suivant illustre cela.
drawObj.Line(9, 90)
drawObj.InsertText(9, 100, "Hello, world.")
drawObj.SaveAs("C:\Drawings\sample.drw")
Note
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, peu importe le nombre de fois CreateObject qu’il est appelé. 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 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ée, 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.