Interaction.GetObject(String, String) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
COM bileşeni tarafından sağlanan bir nesneye başvuru döndürür.
[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
Parametreler
- PathName
- String
İsteğe bağlı.
String
. Alınacak nesneyi içeren dosyanın tam yolu ve adı. Atlanırsa PathName
gereklidir Class
.
- Class
- String
Sağlanmazsa PathName
gereklidir.
String
. Nesnenin sınıfını temsil eden bir dize. Bağımsız Class
değişken aşağıdaki söz dizimine ve bölümlerine sahiptir:
appname
.
objecttype
[1|1] Parametre
[1|2] Açıklama
[2|1] appname
[2|2] Gerekli.
String
. Nesneyi sağlayan uygulamanın adı.
[3|1] objecttype
[3|2] Gerekli.
String
. Oluşturulacak nesnenin türü veya sınıfı.
Döndürülenler
COM bileşeni tarafından sağlanan bir nesneye başvuru.
- Öznitelikler
Özel durumlar
Belirtilen sınıf türüne ait hiçbir nesne yok.
Belirtilen yola ve dosya adına sahip nesne yok.
Örnekler
Aşağıdaki örnek, belirli bir Microsoft Excel çalışma sayfasına (excelObj
) başvuru almak için işlevini kullanırGetObject
. Excel'i Application
görünür kılmak, kapatmak ve diğer eylemleri gerçekleştirmek için çalışma sayfasının özelliğini kullanır. İki API çağrısı kullanıldığında, detectExcel
yordam Excel'i arar ve çalışıyorsa, bunu Çalışan Nesne tablosuna girer. için ilk çağrı GetObject
, Excel zaten çalışmıyorsa bir hataya neden olur ve bu örnekte bayrağın excelWasNotRunning
olarak ayarlanmasına True
neden olur. İkinci çağrısı GetObject
, açılacak dosyayı belirtir. Excel henüz çalışmıyorsa, ikinci çağrı onu başlatır ve belirtilen dosyayla temsil edilen çalışma sayfasına bir başvuru döndürür. test.xls
Dosya belirtilen konumda bulunmalıdır; aksi takdirde, Visual Basic bir FileNotFoundExceptionoluşturur. Ardından, örnek kod hem Excel'i hem de belirtilen çalışma sayfasını içeren pencereyi görünür hale getirir.
Bu örnek gerektirir Option Strict Off
çünkü nesnelerin türünde Object
değişkenlere atandığı geç bağlamayı kullanır. Visual Studio'da Proje menüsünün Başvuru Ekle iletişim kutusunun COM sekmesinden Excel tür kitaplığına başvuru eklerseniz, belirli nesne türlerinin nesnelerini belirtebilir Option Strict On
ve bildirebilirsiniz.
' 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
İşlevi getExcel
çağırdığınızda, Excel'in zaten çalışır durumda olup olmadığını görmek için bir denetim yapılır. Değilse bir örnek oluşturulur.
Önemli
Kolaylık olması için, önceki örnekte adlı XLMAIN
herhangi bir pencerenin Bir Microsoft Excel örneğine ait olduğu varsayılır. Büyük olasılıkla yetkisiz kurcalama yoluyla başlatılan başka bir nesne, bu ada sahip bir pencere oluşturursa, Excel için hedeflediğiniz tüm iletileri alır. Üretim için kullanılacak bir uygulamada, gerçekten Excel'e ait olduğunu XLMAIN
doğrulamak için biraz daha sıkı test eklemeniz gerekir.
Açıklamalar
GetObject
Bir dosyadan COM bileşeninin bir örneğini yüklemek için işlevini kullanın. Aşağıdaki örnek bunu göstermektedir.
Dim CADObject As Object
CADObject = GetObject("C:\CAD\schema.cad")
Bu kod çalıştırıldığında, belirtilen PathName
ile ilişkili uygulama başlatılır ve belirtilen dosyadaki nesne etkinleştirilir.
Varsayılan Durumlar
Sıfır uzunluklu bir dize ()""
isePathName
, GetObject
belirtilen sınıf türünün yeni bir nesne örneğini döndürür.
PathName
Bağımsız değişken atlanırsa, GetObject
içinde Class
belirtilen sınıf türünün şu anda etkin bir nesnesini döndürür. Belirtilen türde bir nesne yoksa bir hata oluşur.
Alt Nesneye Erişme
Bazı uygulamalar, dosyayla ilişkilendirilmiş bir alt nesne etkinleştirmenize olanak tanır. Bunu yapmak için, dosya adının sonuna bir ünlem işareti (!
) ekleyin ve dosyayı etkinleştirmek istediğiniz bölümünü tanımlayan bir dizeyle izleyin. Bu dizeyi oluşturma hakkında bilgi için, nesneyi oluşturan uygulamanın belgelerine bakın.
Örneğin, bir çizim uygulamasında, bir dosyada depolanan çizime yönelik birden çok katmanınız olabilir. adlı schema.cad
çizim içindeki bir katmanı etkinleştirmek için aşağıdaki kodu kullanabilirsiniz.
layerObject = GetObject("C:\CAD\schema.cad!Layer3")
Sınıf Belirtme
Nesnesinin Class
değerini belirtmezseniz Otomasyon, başlatılacak uygulamayı ve etkinleştireceğiniz nesneyi sağladığınız dosya adına göre belirler. Ancak bazı dosyalar birden fazla nesne sınıfını destekleyebilir. Örneğin, bir çizim üç farklı nesne türünü destekleyebileceğinden: tümü Application
Drawing
aynı dosyanın parçası olan bir nesne, bir nesne ve bir Toolbar
nesne. Bir dosyada hangi nesneyi etkinleştirmek istediğinizi belirtmek için isteğe bağlı Class
bağımsız değişkenini kullanın. Aşağıdaki örnek bunu göstermektedir.
Dim drawObj As Object
drawObj = GetObject("C:\Drawings\sample.drw", "Figment.Drawing")
Yukarıdaki örnekte, Figment
bir çizim uygulamasının adıdır ve Drawing
desteklediği nesne türlerinden biridir.
Nesneyi Kullanma
Bir nesne etkinleştirildikten sonra, bildirdiğiniz nesne değişkenini kullanarak bu nesneye kodda başvurursunuz. Yukarıdaki örnekte, nesne değişkenini drawObj
kullanarak yeni nesnenin özelliklerine ve yöntemlerine erişeceksiniz. Aşağıdaki örnek bunu göstermektedir.
drawObj.Line(9, 90)
drawObj.InsertText(9, 100, "Hello, world.")
drawObj.SaveAs("C:\Drawings\sample.drw")
Not
Nesnenin GetObject
geçerli bir örneği olduğunda veya nesneyi yüklü bir dosyayla oluşturmak istiyorsanız işlevini kullanın. Geçerli bir örnek yoksa ve nesnenin bir dosya yüklenmiş olarak başlatılmasını CreateObject istemiyorsanız işlevini kullanın.
Bir nesne kendisini ActiveX tek örnekli nesnesi olarak kaydettiyse, kaç kez CreateObject
çağrılırsa çağrılsın, nesnenin yalnızca bir örneği oluşturulur. Tek örnekli bir nesneyle, GetObject
sıfır uzunluklu dize (""
) söz dizimi ile çağrıldığında her zaman aynı örneği döndürür ve bağımsız değişken atlanırsa hataya PathName
neden olur. Visual Basic ile oluşturulan bir sınıfa başvuru almak için kullanamazsınız GetObject
.
Önemli
İşlev, GetObject
kısmi güven durumlarında yürütülmesini etkileyebilecek yönetilmeyen kod izni gerektirir. Daha fazla bilgi için bkz SecurityPermission . ve Kod Erişim İzinleri.