Interaction.CreateObject(String, String) Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
COM-objektumra mutató hivatkozást hoz létre és ad vissza.
CreateObject nem használható osztálypéldányok létrehozására Visual Basic, kivéve, ha ezek az osztályok kifejezetten COM-összetevőkként vannak közzétéve.
public static object CreateObject(string ProgId, string ServerName = "");
static member CreateObject : string * string -> obj
Public Function CreateObject (ProgId As String, Optional ServerName As String = "") As Object
Paraméterek
- ProgId
- String
Kötelező.
String. A létrehozandó objektum programazonosítója.
- ServerName
- String
Opcionális.
String. Annak a hálózati kiszolgálónak a neve, ahol létre szeretné hozni az objektumot. Ha ServerName üres sztring (""), a rendszer a helyi számítógépet használja.
Válaszok
COM-objektumra mutató hivatkozást hoz létre és ad vissza.
CreateObject nem használható osztálypéldányok létrehozására Visual Basic, kivéve, ha ezek az osztályok kifejezetten COM-összetevőkként vannak közzétéve.
Kivételek
A kiszolgáló nem érhető el
A megadott típusú objektum nem létezik.
Példák
Az alábbi példa a CreateObject függvénnyel hoz létre egy Microsoft Excel munkalapot, és fájlba menti a munkalapot. A példa használatához Excel kell telepíteni arra a számítógépre, amelyen a program fut. Emellett a Add Reference párbeszédpanel Project párbeszédpaneljének COM> lapjáról is fel kell vennie a típustárra mutató hivatkozást. A típustár neve a számítógépre telepített Excel verziójától függően változik. A 2002-es Microsoft Excel típustár neve például Microsoft Excel 10.0 Objektumtár.
Sub TestExcel()
Dim xlApp As Microsoft.Office.Interop.Excel.Application
Dim xlBook As Microsoft.Office.Interop.Excel.Workbook
Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet
xlApp = CType(CreateObject("Excel.Application"),
Microsoft.Office.Interop.Excel.Application)
xlBook = CType(xlApp.Workbooks.Add,
Microsoft.Office.Interop.Excel.Workbook)
xlSheet = CType(xlBook.Worksheets(1),
Microsoft.Office.Interop.Excel.Worksheet)
' The following statement puts text in the second row of the sheet.
xlSheet.Cells(2, 2) = "This is column B row 2"
' The following statement shows the sheet.
xlSheet.Application.Visible = True
' The following statement saves the sheet to the C:\Test.xls directory.
xlSheet.SaveAs("C:\Test.xls")
' Optionally, you can call xlApp.Quit to close the workbook.
End Sub
Megjegyzések
COM-összetevő példányának létrehozásához rendelje hozzá egy objektumváltozó által visszaadott CreateObject objektumot:
Sub CreateADODB()
Dim adoApp As Object
adoApp = CreateObject("ADODB.Connection")
End Sub
A visszaadott objektum tárolására használt objektumváltozó típusa befolyásolhatja az alkalmazás teljesítményét. Az objektumváltozó záradékkal As Object történő deklarálása olyan változót hoz létre, amely bármilyen típusú objektumra hivatkozhat. Az objektumhoz való hozzáférés azonban ezen a változón keresztül késve történik, vagyis a kötés a program futtatásakor következik be. Számos oka lehet annak, hogy kerülje a késői kötést, beleértve a lassabb alkalmazásteljesítményt is.
Létrehozhat egy objektumváltozót, amely korai kötést eredményez, azaz kötést a program lefordításakor. Ehhez a Add Reference párbeszédpanel Project párbeszédpaneljének COM> lapján adjon hozzá egy hivatkozást az objektum típustárához. Ezután deklarálja az objektum adott típusának objektumváltozóját. A legtöbb esetben hatékonyabb az utasítás és az Dim elsődleges interop szerelvény használata objektumok létrehozásához, mint a CreateObject függvény használata.
Nem felügyelt kód használata
Egy másik probléma, hogy a COM-objektumok nem felügyelt kódot használnak – a közös nyelvi futtatókörnyezet előnyei nélkül. A com-ból származó felügyelt Visual Basic kódjának és a COM nem felügyelt kódjának összekeverésében méltányos fokú összetettség áll fenn. Amikor egy COM-objektumra mutató hivatkozást ad hozzá, Visual Basic megkeresi az adott kódtár elsődleges interop-szerelvényét (PIA), ha talál egyet, akkor azt használja. Ha nem talál PIA-t, akkor létrehoz egy együttműködési szerelvényt, amely helyi együttműködési osztályokat tartalmaz a COM-kódtár minden osztályához. További információ: COM-együttműködés a .NET-keretrendszeralkalmazásokban.
Amikor csak lehetséges, általában erősen kötött objektumokat és elsődleges interop szerelvényeket kell használnia. Az alábbi példák a CreateObject függvényt Microsoft Office objektumokkal csak bemutató célokra használják. Ezek az objektumok azonban könnyebben használhatók és megbízhatóbbak, ha a megfelelő elsődleges interop szerelvényhez használják őket.
Objektum létrehozása távoli számítógépen
Távoli hálózati számítógépen úgy hozhat létre objektumot, hogy átadja a számítógép nevét a ServerNameCreateObject függvény argumentumának. Ez a név megegyezik a megosztás nevének Gépnév részével: a "\\MyServer\Public" nevű megosztás esetében a "MyServer" ServerName .
Megjegyzés:
Az alkalmazás távoli hálózati számítógépen való elérhetővé tételéről további információt a COM dokumentációjában (lásd Microsoft Developer Network) talál. Előfordulhat, hogy hozzá kell adnia egy beállításkulcsot az alkalmazáshoz.
A következő kód egy nevű távoli számítógépen MyServerfutó Excel-példány verziószámát adja vissza:
Sub CreateRemoteExcelObj()
Dim xlApp As Object
' Replace string "\\MyServer" with name of the remote computer.
xlApp = CreateObject("Excel.Application", "\\MyServer")
MsgBox(xlApp.Version)
End Sub
Ha a távoli kiszolgáló neve helytelen, vagy nem érhető el, futásidejű hiba történik.
Megjegyzés:
Akkor használja CreateObject , ha az objektumnak nincs aktuális példánya. Ha az objektumnak már fut egy példánya, elindul egy új példány, és létrejön egy megadott típusú objektum. Az aktuális példány használatához vagy az alkalmazás elindításához és egy fájl betöltéséhez használja a függvényt GetObject . Ha egy objektum regisztrálta magát egypéldányos objektumként, az objektumnak csak egy példánya jön létre, függetlenül attól, hogy hányszor CreateObject lesz végrehajtva.
Keretrendszerobjektumok létrehozása
A függvényt CreateObject csak COM-objektum létrehozásához használhatja. Bár a .NET Framework-objektum létrehozásának nincs pontosan egyenértékű mechanizmusa, a System névtérben található Activator metódusok helyi vagy távoli objektumok létrehozásához. Különösen hasznos lehet a CreateInstance módszer vagy a CreateInstanceFrom módszer.
Important
A CreateObject függvény nem felügyelt kódengedélyt igényel, ami befolyásolhatja a részleges megbízhatósági helyzetekben történő végrehajtását. További információkért lásd SecurityPermission és kódhozzáférés engedélyeit.