Upload
duongquynh
View
223
Download
0
Embed Size (px)
Citation preview
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 1
MANAJEMEN ASET IT - BAGIAN 3
MEMBUAT KOMPONEN SSCI_COM
Mei 2006 Tingkat: √
Oleh : Feri Djuandi Pemula Menengah Mahir
3.1. Membuat Class cMyXML Komponen COM ssci_com yang menjadi inti dari SysPie mengandung dua buah class yaitu cMyXML dan cSSCI. Class cMyXML adalah class yang didefinisikan sebagai private class di dalam komponen ssci_com. Dengan demikian class ini tidak bisa diakses dari luar komponen tersebut karena class ini hanya digunakan secara internal oleh skrip-skrip yang ada di dalam ssci_com. Class cMyXML berisi method-method untuk pembuatan dokumen XML dimana mereka dipanggil secara berulang-ulang oleh rutin lain. Dengan adanya class ini, maka penulisan program menjadi lebih ringkas dan efesien.
Telah disebutkan sebelumnya bahwa ssci_com dibuat menggunakan Ms Visual Basic 6.0. Bahasa pemrograman ini dipilih semata-mata untuk alasan kemudahan. Visual Basic sangat populer dan mempunyai komunitas yang luas sehingga penulis beranggapan para pembaca sudah akrab dengan bahasa pemrograman ini dan tidak akan menemui kesulitan dengan pembahasan skripnya.
Berkaitan dengan class cMyXML ini, komponen ssci_com membutuhkan sebuah XML parser. Dalam hal ini akan digunakan komponen parser yang dibuat oleh Microsoft yaitu Microsoft XML Parser (MSXML) versi 3.0. Anda tidak diharuskan menggunakan komponen ini. XML parser lain bisa saja digunakan (misalnya yang dibuat oleh pihak ke-tiga), namun tentunya skrip-skrip yang ditunjukkan dalam bagian ini harus dimodifikasi. Untuk saat ini biar saja digunakan MSXML. Mengenai versinya, sekali lagi Anda tidak diharuskan menggunakan versi 3.0. Silakan menggunakan versi yang sudah terinstal pada komputer.
Catatan:
Kode sumber komponen ssci_com selengkapnya dapat diperoleh dari media yang disertakan dalam direktori ..\SSCI_COM.
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSC
Untuk mulai membuat komponen ssci_com, silakan ikuti langkah
1. Jalankan Ms Visual Basic 6.0 dan buat sebuah projek barOpen.
2. Jalankan menu Project �
Biarkan property-property lain dengan nilai default
MEMBUAT KOMPONEN SSCI_COM
Untuk mulai membuat komponen ssci_com, silakan ikuti langkah-langkah berikut ini.
Jalankan Ms Visual Basic 6.0 dan buat sebuah projek baru dengan tipe ActiveX DLL
Gambar 3.1. Memulai projek ActiveX DLL.
� Project 1 Properties, kemudian namakan projek ini sebagai
Gambar 3.2. Window Project Properties.
property lain dengan nilai default-nya. Klik tombol OK.
2
langkah berikut ini.
ActiveX DLL. Klik tombol
, kemudian namakan projek ini sebagai ssci_com.
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSC
3. Jalankan menu Project �Jika referensi ini tidak ada dalam komputer lain, silakan gunakan versi yang ada.
Gambar
Klik tombol OK.
4. Saat ini di dalam projek tersebut hanya ada sebuah objek, yaitu Class1. Pada window propertyubahlah nilai-nilainya seperti diperlihatkan gambar di bawah ini.
Klik tombol OK.
5. Untuk sementara, simpanlah dulu projek ini sebagai
MEMBUAT KOMPONEN SSCI_COM
� References, kemudian tambahkan referensi untuk Microsoft XML v3.0. Jika referensi ini tidak ada dalam komputer lain, silakan gunakan versi yang ada.
Gambar 3.3. Menambahkan referensi MSXML.
Saat ini di dalam projek tersebut hanya ada sebuah objek, yaitu Class1. Pada window propertynilainya seperti diperlihatkan gambar di bawah ini.
Gambar 3.4. Merubah property cMyXML.
Untuk sementara, simpanlah dulu projek ini sebagai ssci_com.vbp.
3
, kemudian tambahkan referensi untuk Microsoft XML v3.0. Jika referensi ini tidak ada dalam komputer lain, silakan gunakan versi yang ada.
Saat ini di dalam projek tersebut hanya ada sebuah objek, yaitu Class1. Pada window property-nya
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 4
6. Sekarang skrip untuk class ini akan mulai ditulis. Pada bagian Declarations, silakan ketikkan skrip berikut ini.
Skrip 3.1. Deklarasi class cMyXML.
Option Explicit
Public xmlDoc As DOMDocument
Skrip di atas mendefinisikan variabel xmlDoc sebagai dokumen XML.
7. Ketikkan skrip di bawah untuk event Initialize dan Terminate.
Skrip 3.2. Event Initialize.
Private Sub Class_Initialize()
Set xmlDoc = New DOMDocument
xmlDoc.appendChild xmlDoc.createProcessingInstruction("xml", _
"version=""1.0"" encoding=""UTF-8""")
End Sub
Skrip di atas membuat xmlDoc sebagai instance dari DOMDocument, kemudian dilanjutkan pembuatan awalan (header) dokumen XML tersebut. Awalan yang dimaksud adalah “<?xml version="1.0"?>”. Event Initialize dijalankan ini saat objek cMyXML dibuat.
Skrip 3.3. Event Terminate.
Private Sub Class_Terminate()
Set xmlDoc = Nothing
End Sub
Skrip di atas akan membebaskan memori dari alokasi objek xmlDoc. Event Terminate dijalankan ini saat objek cMyXML selesai digunakan.
8. Selanjutnya dibuat sebuah property bernama xmlText yang berisi teks dokumen XML.
Skrip 3.4. Property xmlText.
Public Property Get xmlText() As String
xmlText = xmlDoc.xml
End Property
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 5
9. Skrip berikutnya adalah method CreateRootNode, AddChildNode dan AddGrandChildNode. Struktur dokumen XML yang digunakan pada sistem ini diperlihatkan pada gambar berikut.
Gambar 3.5. Struktur dokumen XML
Skrip 3.5. Method CreateRootNode.
Public Sub CreateRootNode(elName As String)
xmlDoc.appendChild xmlDoc.createElement(LCase(elName))
End Sub
Skrip 3.6. Method AddChildNode.
Public Sub AddChildNode(elName As String, elValue As String)
Dim xmlElem As IXMLDOMElement, xmlText As IXMLDOMText
Set xmlElem = xmlDoc.createElement(LCase(elName))
Set xmlText = xmlDoc.createTextNode(elValue)
xmlElem.appendChild xmlText
xmlDoc.childNodes.Item(1).appendChild xmlElem
End Sub
Root Child
Grandchild Node
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 6
Skrip 3.7. Method AddGrandChildNode.
Public Sub AddGrandChildNode(childIndex As Integer, elName As String,
elValue As String)
Dim xmlElem As IXMLDOMElement, xmlText As IXMLDOMText
Set xmlElem = xmlDoc.createElement(LCase(elName))
Set xmlText = xmlDoc.createTextNode(elValue)
xmlElem.appendChild xmlText
xmlDoc.childNodes.Item(1).childNodes.Item(childIndex). appendChild
xmlElem
End Sub
10. Method yang terkahir adalah SaveXML berguna menyimpan dokumen XML dalam bentuk file.
Skrip 3.8. Method SaveXML.
Public Function SaveXML(filePath As String) As Integer
On Error GoTo errHandler
xmlDoc.save (filePath)
SaveXML = 0
Exit Function
errHandler:
SaveXML = -1
End Function
Class cMyXML sudah selesai dibuat. Projek ssci_com belum bisa di-compile menjadi DLL. Class sSSCI harus dibuat dulu untuk bisa melakukan itu. Untuk sementara silakan simpan projek ssci_com dan mari lanjutkan dengan class cSSCI.
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSC
3.2. Membuat Class cSSCIClass cSSCI mengandung cukup banyak method f_GetXXX. Namun demikian, sebagian besar methodmethod itu sangat mirip pengkodeannya. Perbedaannya adalah pemanggilan classnya yang berlainan untuk setiap penulisan method tersebut.
1. Tambahkan sebuah Class Module ke dalam projek ssci_com.
Gambar 3.6. Menambahkan class module.
2. Selanjutnya ubah nama class tersebut menjadi
MEMBUAT KOMPONEN SSCI_COM
3.2. Membuat Class cSSCI mengandung cukup banyak method f_GetXXX. Namun demikian, sebagian besar method
method itu sangat mirip pengkodeannya. Perbedaannya adalah pemanggilan classn untuk setiap penulisan method tersebut.
Tambahkan sebuah Class Module ke dalam projek ssci_com.
Gambar 3.6. Menambahkan class module.
Selanjutnya ubah nama class tersebut menjadi cSSCI.
Gambar 3.7. Property class cSSCI.
7
mengandung cukup banyak method f_GetXXX. Namun demikian, sebagian besar method-method itu sangat mirip pengkodeannya. Perbedaannya adalah pemanggilan class-class WMI dan property-
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 8
3. Pada bagian Declarations, silakan ketikkan skrip berikut ini.
Skrip 3.9. Definisi konstanta.
Option Explicit
Private Const HKEY_CLASSES_ROOT = &H80000000
Private Const HKEY_CURRENT_USER = &H80000001
Private Const HKEY_LOCAL_MACHINE = &H80000002
Konstanta di atas akan digunakan pada method f_GetSoftwareInformation. Method ini akan dijelaskan kemudian.
4. Buat sebuah method bernama StringValue. Perhatikan bahwa is dideklarasikan sebagai provate
method yang artinya tidak bisa diakses oleh skrip di luar class cSSCI. Seperti yang sudah diduga, method ini digunakan secara internal.
Skrip 3.10. Method StringValue.
Private Function StringValue(ByVal sValue) As String
Dim sDummy As String, i As Integer, j As Integer
sDummy = ""
If Not IsNull(sValue) Then
If TypeName(sValue) = "Variant()" Then
i = UBound(sValue)
For j = 0 To i
sDummy = sDummy & CStr(sValue(j)) & IIf(j = i, "", ",")
Next
Else
sDummy = CStr(sValue)
End If
End If
StringValue = Trim(sDummy)
End Function
Method ini digunakan untuk mengisikan nilai-nilai pada node XML. Mengapa tidak langsung saja mengisikan nilai property class WMI langsung ke node XML? Ada beberapa alasan:
� Sebuah property mungkin saja tipenya bukan string. Nilai itu harus dikonversikan ke string agar bisa dimasukkan ke node XML.
� Sebuah property mungkin saja bernilai NULL. Jika demikian, maka nilai yang harus dimasukkan adalah karakter kosong (“”).
� Sebuah property bisa saja berbentuk array, bukan nilai tunggal. Jika demikian, maka isinya harus diuraikan dan digabung menjadi sebuah string.
Untuk alasan-alasan itulah method StringValue ini perlu dibuat. Anda akan melihat nanti bahwa method ini akan sangat sering dipanggil.
5. Selanjutnya buatlah empat buah private method lainnya, yaitu f_GetDomainName, f_GetWorkgroupName, f_GetComputerName dan f_GetUserName. Keempat method ini digunakan untuk mendapatkan informasi-informasi dasar sebuah komputer yaitu nama domain atau nama workgroup, nama komputer dan nama user.
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 9
Perhatikan baris “Set oWMI = GetObject ("winmgmts:root\CIMV2" )”. Ini adalah sebuah moniker untuk membuat koneksi ke komputer lokal menggunakan trusted connection.
Catatan:
Pada prakteknya nanti, SysPie Agent harus diinstal pada komputer-komputer yang ingin diinspeksi inventori sistemnya. Komponen ssci_com yang dijalankan oleh SysPie akan berjalan secara lokal pada komputer yang bersangkutan. ssci_com tidak akan dijalankan untuk menarik informasi dari komputer lain. Oleh karena itu moniker di atas juga konsisten dengan cara kerja ini.
Selanjutnya oItems adalah kompulan objek SwbemObject yang berisi property dan nilai dari objek WMI Win32_ComputerSystem.
Skrip 3.11. Method f_GetDomainName.
Private Function f_GetDomainName() As String
On Error GoTo errHandler
Dim oWMI, oItem, oItems, sDummy As String
sDummy = ""
Set oWMI = GetObject("winmgmts:root\CIMV2")
Set oItems = oWMI.execQuery("select * from win32_computersystem where
PartOfDomain=TRUE")
For Each oItem In oItems
sDummy = oItem.domain
Next
f_GetDomainName = sDummy
Set oItem = Nothing
Set oItems = Nothing
Set oWMI = Nothing
Exit Function
errHandler:
Set oItem = Nothing
Set oItems = Nothing
Set oWMI = Nothing
f_GetDomainName = ""
End Function
Jangan melupakan rutin penanganan kesalahan (error handling atau dikenal juga exception) karena kesalahan sekalipun harus ada di dalam kendali pembuat program. Pada skrip di atas, kesalahan yang terjadi akan ditangkap pada bagian errHandler sehingga ia akan berhenti di situ (tidak diteruskan ke skrip pemanggil method ini). Jika lalai melakukan ini, kesalahan akan diteruskan sampai ke aplikasi klien dengan munculnya sebuah pesan kesalahan. Munculnya pesan kesalahan (yang tidak diantisipasi) di depan pengguna tentunya akan mengurangi impresi.
Pada skrip di atas, kesalahan ditangani dengan dikembalikannya sebuah karakter kosong oleh method tersebut. Tidak ada pesan kesalahan yang akan muncul.
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 10
Skrip 3.12. Method f_GetWorkgroupName.
Private Function f_GetWorkgroupName() As String
On Error GoTo errHandler
Dim oWMI, oItem, oItems, sDummy As String
sDummy = ""
Set oWMI = GetObject("winmgmts:root\CIMV2")
Set oItems = oWMI.execQuery("select * from win32_computersystem where
PartOfDomain=FALSE")
For Each oItem In oItems
sDummy = oItem.workgroup
Next
f_GetWorkgroupName = sDummy
Set oItem = Nothing
Set oItems = Nothing
Set oWMI = Nothing
Exit Function
errHandler:
Set oItem = Nothing
Set oItems = Nothing
Set oWMI = Nothing
f_GetWorkgroupName = ""
End Function
Skrip 3.13. Method f_GetComputerName.
Private Function f_GetComputerName() As String
On Error GoTo errHandler
Dim oWMI, oItem, oItems
Set oWMI = GetObject("winmgmts:root\CIMV2")
Set oItems = oWMI.execQuery("select * from win32_computersystem")
For Each oItem In oItems
f_GetComputerName = oItem.Name
Next
Set oItem = Nothing
Set oItems = Nothing
Set oWMI = Nothing
Exit Function
errHandler:
Set oItem = Nothing
Set oItems = Nothing
Set oWMI = Nothing
f_GetComputerName = ""
End Function
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 11
Skrip 3.14. Method f_GetUserName.
Private Function f_GetUserName() As String
On Error GoTo errHandler
Dim oWMI, oItem, oItems
Set oWMI = GetObject("winmgmts:root\CIMV2")
Set oItems = oWMI.execQuery("select * from win32_computersystem")
For Each oItem In oItems
f_GetUserName = oItem.username
Next
Set oItem = Nothing
Set oItems = Nothing
Set oWMI = Nothing
Exit Function
errHandler:
Set oItem = Nothing
Set oItems = Nothing
Set oWMI = Nothing
f_GetUserName = ""
End Function
6. Selanjutnya ketikkan skrip di bawah ini untuk membuat method f_GetLoginInformation.
Skrip ini mestinya akan menarik perhatian karena ini adalah skrip pertama yang mengandung panggilan-panggilan ke cMyXML untuk membuat dokumen XML. Berbeda dengan method-method sebelumnya, f_GetLoginInformation adalah sebuah public method. Ia bisa dipanggil dari luar komponen ssci_com.
Skrip 3.15. Method f_GetLoginInformation.
Public Function f_GetLoginInformation(ByRef sXML As String) As Integer
Dim oMyXML As cMyXML, sDomainName As String, sComputerName As String,
sUserName As String
sDomainName = f_GetDomainName()
If IsEmpty(sDomainName) Then sDomainName = f_GetWorkgroupName()
sComputerName = f_GetComputerName()
sUserName = f_GetUserName()
Set oMyXML = New cMyXML
oMyXML.CreateRootNode "logininformation"
oMyXML.AddChildNode "login_row", ""
oMyXML.AddGrandChildNode 0, "domainname", StringValue(sDomainName)
oMyXML.AddGrandChildNode 0, "computername", StringValue( sComputerName)
oMyXML.AddGrandChildNode 0, "username", StringValue(sUserName)
sXML = oMyXML.xmlText
Set oMyXML = Nothing
If sDomainName = "" Or sComputerName = "" Or sUserName = "" Then
f_GetLoginInformation = -1
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSC
Else
f_GetLoginInformation = 0
End If
End Function
Berikut ini adalah potongan dari skrip di atas. Di situ tampak bahwa intance dari class cMyXML. Pada inisialisasi inilah event kembali penjelasan sebelumnya mengenai class tersebut.
Pada baris selanjutnya ke dalam dokumen XML itu dibuat sebuah root node dengan method CreateRootNode, diikuti baris-baris berikutnya untuk pembuatan child node dan grandchild node menggunakan method AddChildNode
...
Set oMyXML = New cMyXML
oMyXML.CreateRootNode "logininformation"
oMyXML.AddChildNode "login_row", ""
oMyXML.AddGrandChildNode 0, "domainname", StringValue( sDomainName)
...
sXML = oMyXML.xmlText
Set oMyXML = Nothing
...
Ke dalam variabel string sXML dimasukkan teks XML yang diperoleh dari property digunakan, akhirnya oMyXML dibebaskan dari memori. Pada saat inilah event dijalankan.
Isi dari variabel sXML diperlihatkan pada gambar di bawah ini.
Gambar 3.8. Dokumen XML hasil pemanggilan
Jika cukup teliti, Anda akan bertanyaAddGrandChildNode di atas. Angka nol tersebut mewakili nomor indeks dari child node (dalam hal ini login_row) dimana grandchild node akan ditambahkan ke dalamnya. Pada contoh dokumen XML tersebut hanya ada satu buah childnode, dengan demikian tidak masalah jika angka nol ditulis secara Akan tampak nanti bahwa sebuah dokumen XML bisa mengandusaat sebuah grandchild node akan ditambahkan maka nomor indeks child node harus ditetapkan dengan benar.
Sebagai contoh, perhatikan dokumen XML yang lain berikut ini. Di dalamnya tampak ada empat buah child node masing-masing memiliki indeks 0, 1, 2, 3 dan 4. Oleh karena itu parameter indeks pada method AddGrandChildNode harus dirujuk dengan benar.
MEMBUAT KOMPONEN SSCI_COM
f_GetLoginInformation = 0
Berikut ini adalah potongan dari skrip di atas. Di situ tampak bahwa oMyXML didefinisikan sebagai sebuah . Pada inisialisasi inilah event Initialize dari class cMyXML
kembali penjelasan sebelumnya mengenai class cMyXML dimana sebuah dokumen XML dibuat pada event
Pada baris selanjutnya ke dalam dokumen XML itu dibuat sebuah root node dengan method baris berikutnya untuk pembuatan child node dan grandchild node
AddChildNode dan AddGrandChildNode.
oMyXML.CreateRootNode "logininformation"
oMyXML.AddChildNode "login_row", ""
oMyXML.AddGrandChildNode 0, "domainname", StringValue( sDomainName)
dimasukkan teks XML yang diperoleh dari property xmlTextdibebaskan dari memori. Pada saat inilah event Terminate
diperlihatkan pada gambar di bawah ini.
Dokumen XML hasil pemanggilan f_GetLoginInformation
Jika cukup teliti, Anda akan bertanya-tanya apa artinya angka nol (0) pada parameter method di atas. Angka nol tersebut mewakili nomor indeks dari child node (dalam hal ini
login_row) dimana grandchild node akan ditambahkan ke dalamnya. Pada contoh dokumen XML tersebut hanya ada satu buah childnode, dengan demikian tidak masalah jika angka nol ditulis secara Akan tampak nanti bahwa sebuah dokumen XML bisa mengandung beberapa child node. Dengan demikian, saat sebuah grandchild node akan ditambahkan maka nomor indeks child node harus ditetapkan dengan
Sebagai contoh, perhatikan dokumen XML yang lain berikut ini. Di dalamnya tampak ada empat buah child masing memiliki indeks 0, 1, 2, 3 dan 4. Oleh karena itu parameter indeks pada method
harus dirujuk dengan benar.
12
didefinisikan sebagai sebuah cMyXML dijalankan. Silakan lihat
dimana sebuah dokumen XML dibuat pada event
Pada baris selanjutnya ke dalam dokumen XML itu dibuat sebuah root node dengan method baris berikutnya untuk pembuatan child node dan grandchild node
oMyXML.AddGrandChildNode 0, "domainname", StringValue( sDomainName)
xmlText. Setelah selesai Terminate dari class cMyXML
f_GetLoginInformation.
tanya apa artinya angka nol (0) pada parameter method di atas. Angka nol tersebut mewakili nomor indeks dari child node (dalam hal ini
login_row) dimana grandchild node akan ditambahkan ke dalamnya. Pada contoh dokumen XML tersebut hanya ada satu buah childnode, dengan demikian tidak masalah jika angka nol ditulis secara hard-coded.
ng beberapa child node. Dengan demikian, saat sebuah grandchild node akan ditambahkan maka nomor indeks child node harus ditetapkan dengan
Sebagai contoh, perhatikan dokumen XML yang lain berikut ini. Di dalamnya tampak ada empat buah child masing memiliki indeks 0, 1, 2, 3 dan 4. Oleh karena itu parameter indeks pada method
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSC
Gambar 3.9
7. Silakan ketik skrip di bawah ini untuk membuat method Penjelasannya akan diberikan setelah ini.
Skrip 3.16. Method f_GetComputerSysInformation
Public Function f_GetComputerSysInformation(ByRef sXML As String, ByRef
sErrMsg As String) As Integer
On Error GoTo errHandler
Dim oWMI, oItem, oItems, oMyXML As cMyXML, vDummy As Variant, i As
Integer
Set oWMI = GetObject("winmgmts:root
Set oItems = oWMI.execQuery("select * from Win32_ComputerSystem")
Set oMyXML = New cMyXML
oMyXML.CreateRootNode "computersysinformation"
i = 0
On Error Resume Next
For Each oItem In oItems
oMyXML.AddChildNode "computersys_row", ""
vDummy = "": vDummy = oItem.Name
oMyXML.AddGrandChildNode i, "name", StringValue(vDummy)
vDummy = "": vDummy = oItem.Description
oMyXML.AddGrandChildNode i, "description", StringValue(vDummy)
vDummy = "": vDummy = oItem.manufacturer
oMyXML.AddGrandChildNode i, "manufacturer", StringValue(vDummy)
MEMBUAT KOMPONEN SSCI_COM
Gambar 3.9. Dokumen XML dengan beberapa child node.
Silakan ketik skrip di bawah ini untuk membuat method f_GetComputerSysInformationPenjelasannya akan diberikan setelah ini.
f_GetComputerSysInformation.
Public Function f_GetComputerSysInformation(ByRef sXML As String, ByRef
String) As Integer
Dim oWMI, oItem, oItems, oMyXML As cMyXML, vDummy As Variant, i As
Set oWMI = GetObject("winmgmts:root\CIMV2")
Set oItems = oWMI.execQuery("select * from Win32_ComputerSystem")
oMyXML.CreateRootNode "computersysinformation"
oMyXML.AddChildNode "computersys_row", ""
vDummy = "": vDummy = oItem.Name
oMyXML.AddGrandChildNode i, "name", StringValue(vDummy)
my = "": vDummy = oItem.Description
oMyXML.AddGrandChildNode i, "description", StringValue(vDummy)
vDummy = "": vDummy = oItem.manufacturer
oMyXML.AddGrandChildNode i, "manufacturer", StringValue(vDummy)
Indeks=
Indeks=
Indeks=
Indeks=
13
.
f_GetComputerSysInformation.
Public Function f_GetComputerSysInformation(ByRef sXML As String, ByRef
Dim oWMI, oItem, oItems, oMyXML As cMyXML, vDummy As Variant, i As
Set oItems = oWMI.execQuery("select * from Win32_ComputerSystem")
oMyXML.AddGrandChildNode i, "description", StringValue(vDummy)
oMyXML.AddGrandChildNode i, "manufacturer", StringValue(vDummy)
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 14
vDummy = "": vDummy = oItem.model
oMyXML.AddGrandChildNode i, "model", StringValue(vDummy)
vDummy = "": vDummy = oItem.systemtype
oMyXML.AddGrandChildNode i, "systemtype", StringValue(vDummy)
vDummy = "": vDummy = oItem.primaryownername
oMyXML.AddGrandChildNode i, "primaryownername", StringValue(vDummy)
vDummy = "": vDummy = oItem.roles
oMyXML.AddGrandChildNode i, "roles", StringValue(vDummy)
vDummy = "": vDummy = oItem.domain
oMyXML.AddGrandChildNode i, "domain", StringValue(vDummy)
vDummy = "": vDummy = oItem.workgroup
oMyXML.AddGrandChildNode i, "workgroup", StringValue(vDummy)
vDummy = "": vDummy = oItem.username
oMyXML.AddGrandChildNode i, "username", StringValue(vDummy)
vDummy = "": vDummy = oItem.DomainRole
oMyXML.AddGrandChildNode i, "domainrole", StringValue(vDummy)
vDummy = "": vDummy = oItem.TotalPhysicalMemory
oMyXML.AddGrandChildNode i, "totalphysicalmemory",
StringValue(vDummy)
vDummy = "": vDummy = oItem.NumberOfProcessors
oMyXML.AddGrandChildNode i, "numberofprocessors",
StringValue(vDummy)
i = i + 1
Next
sErrMsg = ""
sXML = oMyXML.xmlText
Set oItem = Nothing
Set oItems = Nothing
Set oWMI = Nothing
Set oMyXML = Nothing
f_GetComputerSysInformation = 0
Exit Function
errHandler:
Set oItem = Nothing
Set oItems = Nothing
Set oWMI = Nothing
Set oMyXML = Nothing
sErrMsg = Err.Description
sXML = ""
f_GetComputerSysInformation = -1
End Function
Pada bagian awal skrip tersebut, terlihat sebuah exception “On Error GoTo errHandler”. Exception ini mengindikasikan bahwa jika terjadi kesalahan saat program dijalankan, maka ia akan menuju ke rutin yang ditandai dengan label errHandler. Saat itu terjadi, method akan mengembalikan nilai -1 dan parameter sXML
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 15
akan berisi karakter kosong, sementara parameter sErrMsg akan berisi kode kesalahan. Kesalahan yang mungkin terjadi pada bagian-bagian awal ini bisa jadi disebabkan oleh:
� Komputer yang bersangkutan tidak terinstal WMI.
� Komputer yang bersangkutan tidak terinstal MSXML.
On Error GoTo errHandler
...
Set oItems = oWMI.execQuery("select * from Win32_ComputerSystem")
...
On Error Resume Next
...
Pada beberapa baris di bawahnya akan dijumpai lagi sebuah exception yang lain, yaitu “On Error Resume Next”. Exception ini mengindikasikan bahwa jika terjadi kesalahan, program akan terus berjalan. Penjelasan ini kelihatannya menghibur, tapi Anda harus sangat berhati-hati dengan penggunaan exception ini karena perilaku program dalam menanggapi sebuah kesalahan menjadi kurang terprediksi. Antisipasi hal tersebut akan sangat berbeda-beda untuk setiap skrip dan tidak ada cara yang baku. Apa yang akan dijelaskan berikut ini adalah khusus untuk mengantisipasi kesalahan-kesalahan yang mungkin timbul di dalam class cSSCI.
Saat informasi property-property sebuah class WMI akan ditarik dari sebuah komputer. Terlebih dahulu harus disiapkan sebuah variabel untuk menampung nilainya. Dalam hal ini disiapkan sebuah variabel bernama vDummy dan tipenya adalah variant (silakan lihat deklarasi variabel ini pada awal skrip). Pilihan variant bukannya tanpa alasan. Ingat bahwa property-property sebuah class WMI bisa berwujud string, integer, float bahkan sebuah array. Jika Anda mendeklarasikan vDummy sebagai string misalnya, program akan crashed saat ia memaksakan nilai bertipe data lain.
...
vDummy = "": vDummy = oItem.Name
oMyXML.AddGrandChildNode i, "name", StringValue(vDummy)
vDummy = "": vDummy = oItem.Description
oMyXML.AddGrandChildNode i, "description", StringValue(vDummy)
...
Yang berikutnya, inisialisasi vDummy harus dilakukan dengan karakter kosong. Asumsi bahwa nilai property yang akan dibaca sebagai sebuah string tidak menjadi masalah. Jika seandainya ia adalah sebuah integer atau array, vDummy akan fleksibel menyiapkan ruangnya guna menampung data tersebut dengan tipe yang bersesuaian. Itulah keunggulan variant.
Inisialisasi bukanlah sebuah basa-basi di sini. Perhatikan potongan skrip di atas. Asumsikan skrip berhasil membaca property oItem.Name (saat itu vDummy akan berisi nilai oItem.Name) dan berlanjut ke baris-baris di bawahnya. Sekarang anggaplah terjadi kesalahan saat membaca property oItem.Description. Karena pilihan exception di atas, maka kesalahan yang terjadi tidak akan menyebabkan program berhenti tapi akan terus berlanjut ke baris berikutnya – dalam hal ini eksekusi method AddGrandChildNode pada baris di bawahnya. Saat itu vDummy berisi karakter kosong karena perintah “vDummy = oItem.Description” tidak berhasil dilaksanakan sehingga node description pada dokumen XML berisi nilai kosong. Sekalipun bukan hasil yang bagus, tapi program mengantisipasi kesalahan dengan cara yang benar.
Bagaimana seandainya vDummy tidak diinisialsisasi sebelumnya? Variabel vDummy akan berisi nilai property oItem.Name dari hasil eksekusi baris-baris sebelumnya dan meneruskan nilai itu pada node description dari dokumen XML tersebut – dimana ini adalah perilaku yang menyesatkan.
Ada hal lain yang perlu diperhatikan. Hati-hati jika Anda tergoda untuk menghindari penggunaan variabel penampung dan mengganti bentuk perintah semula menjadi:
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 16
...
oMyXML.AddGrandChildNode i, "description", StringValue( oItem.Description)
...
Walaupun kelihatannya serupa, tapi hasilnya akan menunjukkan perbedaan saat terjadi kesalahan. Jika program gagal membaca property oItem.Description, maka satu baris perintah di atas akan diabaikan. Artinya tidak akan ada node description di dalam dokumen XML tersebut.
Hal berikutnya yang perlu dijelaskan adalah variabel i pada parameter method AddGrandChildNode. Variabel i berfungsi sebagai indeks dari child node di dalam dokumen XML.
...
Set oItems = oWMI.execQuery("select * from Win32_ComputerSystem")
...
i = 0
On Error Resume Next
For Each oItem In oItems
oMyXML.AddChildNode "computersys_row", ""
vDummy = "": vDummy = oItem.Name
oMyXML.AddGrandChildNode i, "name", StringValue(vDummy)
...
i = i + 1
Next
...
Dari potongan skrip di atas oItems adalah sebuah objek SwbemObjectSet, yaitu sebuah collection atau kumpulan dari objek-objek SwbemObject. Sementara itu, oItem adalah objek SwbemObject itu sendiri. Kita tidak akan pernah yakin berapa banyak objek SwbemObject ada di dalam sebuah SwbemObjectSet. Mungkin satu, dua atau jumlah lain. Oleh karena jumlahnya dianggapan bisa lebih dari satu, maka iterasi “For Each oItem In oItems . . . Next” digunakan disini. Variabel i akan menunjukkan seberapa banyak objek SwbemObject yang ditemui di dalam SwbemObjectSet.
Silakan simpan projek ssci_com dengan segala perubahannya.
Untuk sementara tinggalkan dulu projek ssci_com. Dari beberapa skrip yang telah ditunjukkan, terlihat class-class yang digunakan untuk membaca informasi komputer memiliki nama nama yang diawali dengan prefik Win32_. Di dalam WMI, class-class yang memiliki awalan seperti itu disebut class-class Win32. Di dalam WMI, Microsoft telah menyiapkan class-class Win32 yang jumlahnya sangat banyak, cukup bervariasi untuk memenuhi rasa ingin tahu isi komputer Anda. Lampiran A pada bagian akhir artikel ini memuat daftar class-class yang dimaksud.
Komponen ssci_com tidak memanfaatkan seluruh class tersebut, bahkan bisa dikatakan hanya sebagian kecil. Berikut ini adalah daftar nama-nama method berikut class yang digunakannya.
Tabel 3.1. Method-method di dalam class cSSCI.
Method Namespace Class
f_GetBIOSInformation CIMV2 Win32_Bios
f_GetCacheMemoryInformation CIMV2 Win32_Cachememory
f_GetCDROMDriveInformation CIMV2 Win32_Cdromdrive
f_GetComputerSysInformation CIMV2 Win32_Computersystem
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 17
f_GetDesktopMonitorInformation CIMV2 Win32_Desktopmonitor
f_GetDiskDriveInformation CIMV2 Win32_Diskdrive
f_GetDisplayConfigurationInformation CIMV2 Win32_Displayconfiguration
f_GetFloppyDriveInformation CIMV2 Win32_Floppydrive
f_GetIDEControllerInformation CIMV2 Win32_Idecontroller
f_GetKeyboardInformation CIMV2 Win32_Keyboard
f_GetLogicalDiskInformation CIMV2 Win32_Logicaldisk
f_GetNetAdapterConfigInformation CIMV2 Win32_Networkadapterconfiguration
f_GetNetworkAdapterInformation CIMV2 Win32_Networkadapter
f_GetOSInformation CIMV2 Win32_Operatingsystem
f_GetParallelPortInformation CIMV2 Win32_Parallelport
f_GetPCMCIAControllerInformation CIMV2 Win32_Pcmciacontroller
f_GetPhysicalMemoryInformation CIMV2 Win32_Physicalmemory
f_GetPointingDevInformation CIMV2 Win32_Pointingdevice
f_GetPOTSModemInformation CIMV2 Win32_Potsmodem
f_GetPrinterInformation CIMV2 Win32_Printer
f_GetProcessorInformation CIMV2 Win32_Processor
f_GetSCSIControllerInformation CIMV2 Win32_Scsicontroller
f_GetSerialPortConfigInformation CIMV2 Win32_Serialportconfiguration
f_GetSerialPortInformation CIMV2 Win32_Serialport
f_GetSoftwareInformation DEFAULT Stdregprov
f_GetSoundDeviceInformation CIMV2 Win32_Sounddevice
f_GetTapeDriveInformation CIMV2 Win32_Tapedrive
f_GetUSBControllerInformation CIMV2 Win32_Usbcontroller
f_GetVideoControllerInformation CIMV2 Win32_Videocontroller
Method-method di atas akan diulas beberapa saat lagi. Dari sekian banyak method yang menggunakan class-class Win32 (namespace CIMV2), hanya sebuah method yang menggunakan namespace DEFAULT yaitu method f_GetSoftwareInformation.
Catatan:
Informasi property setiap class bisa diperoleh dari menu bantuan pada program WMI Object Browser atau MSDN.
Dalam direktori ..\LINKS\WIN32_CLASSES pada media yang disertakan terdapat sejumlah link Internet ke MSDN untuk informasi class-class tersebut.
Pada bagian selanjutnya akan diperlihatkan bagaimana method-method tersebut diimplementasikan di dalam class cSSCI.
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 18
3.3. Menambahkan Method Berikut ini adalah penjelasan mengenai method-method yang ada di dalam class cSSCI.
Method f_GetBIOSInformation
Keterangan Method ini menampilkan atribut dari sistem Basic Input/Output Services (BIOS) yang terinstal pada sebuah komputer.
Dari keseluruhan property yang ada di dalam class Win32_Bios, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.2. Beberapa property dari class Win32_Bios.
Property Tipe Data
name string
description string
status string
serialnumber string
buildnumber string
identificationcode string
manufacturer string
currentlanguage string
primarybios boolean
releasedate datetime
softwareelementid string
softwareelementstate uint16
targetoperatingsystem uint16
version string
smbiosbiosversion string
smbiosmajorversion uint16
smbiosminorversion uint16
smbiospresent boolean
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Bios.asp
Untuk menambahkan method f_GetBIOSInformation pada projek ssci_com, ikuti langkah-langkah sebagai berikut:
1. Buka projek ssci_com.
2. Tambahkan skrip f_GetBIOSInformation di bawah ini ke dalam class cSSCI untuk membuat method
tersebut.
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 19
Skrip 3.17. Method f_GetBIOSInformation.
Public Function f_GetBIOSInformation(ByRef sXML As String, ByRef
sErrMsg As String) As Integer
On Error GoTo errHandler
Dim oWMI, oItem, oItems, oMyXML As cMyXML, vDummy As Variant, i As
Integer
Set oWMI = GetObject("winmgmts:root\CIMV2")
Set oItems = oWMI.execQuery("select * from Win32_bios")
Set oMyXML = New cMyXML
oMyXML.CreateRootNode "biosinformation"
i = 0
On Error Resume Next
For Each oItem In oItems
oMyXML.AddChildNode "bios_row", ""
vDummy = "": vDummy = oItem.Name
oMyXML.AddGrandChildNode i, "name", StringValue(vDummy)
vDummy = "": vDummy = oItem.Description
oMyXML.AddGrandChildNode i, "description", StringValue(vDummy)
vDummy = "": vDummy = oItem.Status
oMyXML.AddGrandChildNode i, "status", StringValue(vDummy)
vDummy = "": vDummy = oItem.serialnumber
oMyXML.AddGrandChildNode i, "serialnumber", StringValue(vDummy)
vDummy = "": vDummy = oItem.buildnumber
oMyXML.AddGrandChildNode i, "buildnumber", StringValue(vDummy)
vDummy = "": vDummy = oItem.identificationcode
oMyXML.AddGrandChildNode i, "identificationcode",
StringValue(vDummy)
vDummy = "": vDummy = oItem.manufacturer
oMyXML.AddGrandChildNode i, "manufacturer", StringValue(vDummy)
vDummy = "": vDummy = oItem.currentlanguage
oMyXML.AddGrandChildNode i, "currentlanguage", StringValue(vDummy)
vDummy = "": vDummy = oItem.primarybios
oMyXML.AddGrandChildNode i, "primarybios", StringValue(vDummy)
vDummy = "": vDummy = oItem.releasedate
oMyXML.AddGrandChildNode i, "releasedate", StringValue(vDummy)
vDummy = "": vDummy = oItem.softwareelementid
oMyXML.AddGrandChildNode i, "softwareelementid",
StringValue(vDummy)
vDummy = "": vDummy = oItem.softwareelementstate
oMyXML.AddGrandChildNode i, "softwareelementstate",
StringValue(vDummy)
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 20
vDummy = "": vDummy = oItem.targetoperatingsystem
oMyXML.AddGrandChildNode i, "targetoperatingsystem",
StringValue(vDummy)
vDummy = "": vDummy = oItem.version
oMyXML.AddGrandChildNode i, "version", StringValue(vDummy)
vDummy = "": vDummy = oItem.smbiosbiosversion
oMyXML.AddGrandChildNode i, "smbiosbiosversion",
StringValue(vDummy)
vDummy = "": vDummy = oItem.smbiosmajorversion
oMyXML.AddGrandChildNode i, "smbiosmajorversion",
StringValue(vDummy)
vDummy = "": vDummy = oItem.smbiosminorversion
oMyXML.AddGrandChildNode i, "smbiosminorversion",
StringValue(vDummy)
vDummy = "": vDummy = oItem.smbiospresent
oMyXML.AddGrandChildNode i, "smbiospresent", StringValue(vDummy)
i = i + 1
Next
sErrMsg = ""
sXML = oMyXML.xmlText
Set oItem = Nothing
Set oItems = Nothing
Set oWMI = Nothing
Set oMyXML = Nothing
f_GetBIOSInformation = 0
Exit Function
errHandler:
Set oItem = Nothing
Set oItems = Nothing
Set oWMI = Nothing
Set oMyXML = Nothing
sErrMsg = Err.Description
sXML = ""
f_GetBIOSInformation = -1
End Function
Catatan:
Untuk selanjutnya, skrip method-method f_GetXXX lainnya dapat dilihat pada Lampiran B.
Method f_GetCacheMemoryInformation
Keterangan Method ini menampilkan cache memori internal dan eksternal pada sistem komputer yang bersangkutan.
Dari keseluruhan property yang ada di dalam class Win32_CacheMemory, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 21
Tabel 3.3. Beberapa property dari class Win32_CacheMemory.
Property Tipe Data
name string
description string
deviceid string
pnpdeviceid string
status string
statusinfo uint16
access uint16
associativity uint16
availability uint16
blocksize uint64
numberofblocks uint64
cachespeed uint32
cachetype uint16
maxcachesize uint32
systemleveladdress boolean
startingaddress uint64
endingaddress uint64
flushtimer uint32
level uint16
linesize uint32
location uint16
readpolicy uint16
replacementpolicy uint16
writepolicy uint16
installdate datetime
installedsize uint32
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 22
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Cachememory.asp
Method f_GetCDROMDriveInformation
Keterangan Method ini menampilkan penggerak CD-ROM pada sistem komputer Windows.
Dari keseluruhan property yang ada di dalam class Win32_Cdromdrive, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.4. Beberapa property dari class Win32_Cdromdrive.
Property Tipe Data
name string
description string
deviceid string
pnpdeviceid string
status string
drive string
id string
manufacturer string
mediatype string
medialoaded boolean
numberofmediasupported uint32
maximumcomponentlength uint32
compressionmethod string
size uint64
volumename string
volumeserialnumber string
defaultblocksize uint64
maxblocksize uint64
minblocksize uint64
maxmediasize uint64
scsibus uint32
scsilogicalunit uint16
scsiport uint16
scsitargetid uint16
transferrate real64
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 23
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Cdromdrive.asp
Method f_GetComputerSysInformation
Keterangan Method ini menampilkan sistem operasi dalam lingkungan Windows.
Dari keseluruhan property yang ada di dalam class Win32_Computersystem, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.5. Beberapa property dari class Win32_Computersystem.
Property Tipe Data
name string
description string
manufacturer string
model string
systemtype string
primaryownername string
roles string array
domain string
workgroup string
username string
domainrole uint16
totalphysicalmemory uint64
numberofprocessors uint32
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Computersystem.asp
Method f_GetDesktopMonitorInformation
Keterangan Method ini menampilkan tipe perangkat monitor atau tampilan yang terhubung ke sistem komputer.
Dari keseluruhan property yang ada di dalam class Win32_Desktopmonitor, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.6. Beberapa property dari class Win32_Desktopmonitor.
Property Tipe Data
name string
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 24
description string
deviceid string
pnpdeviceid string
status string
monitormanufacturer string
monitortype string
pixelsperxlogicalinch uint32
pixelsperylogicalinch uint32
screenheight uint32
screenwidth uint32
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Desktopmonitor.asp
Method f_GetDiskDriveInformation
Keterangan Method ini menampilkan penggerak disk yang terdeteksi oleh komputer yang menjalankan sistem operasi Windows.
Dari keseluruhan property yang ada di dalam class Win32_Diskdrive, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.7. Beberapa property dari class Win32_Diskdrive.
Property Tipe Data
name string
description string
deviceid string
pnpdeviceid string
status string
mediatype string
medialoaded boolean
numberofmediasupported uint32
compressionmethod string
model string
interfacetype string
manufacturer string
index uint32
partitions uint32
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 25
signature uint32
totalheads uint32
bytespersector uint32
sectorspertrack uint32
trackspercylinder uint32
totalsectors uint64
totaltracks uint64
totalcylinders uint64
size uint64
scsibus uint32
scsilogicalunit uint16
scsiport uint16
scsitargetid uint16
defaultblocksize uint64
maxblocksize uint64
minblocksize uint64
maxmediasize uint64
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Diskdrive.asp
Method f_GetDisplayConfigurationInformation
Keterangan Method ini menampilkan informasi konfigurasi perangkat tampilan pada sistem Windows.
Dari keseluruhan property yang ada di dalam class Win32_Displayconfiguration, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.8. Beberapa property dari class Win32_Displayconfiguration.
Property Tipe Data
devicename string
description string
settingid string
specificationversion uint32
displayflags uint32
displayfrequency uin32
driverversion string
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 26
logpixels uint32
bitsperpel uint32
pelsheight uint32
pelswidth uint32
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Displayconfiguration.asp
Method f_GetFloppyDriveInformation
Keterangan Method ini menampilkan informasi penggerak floppy disk.
Dari keseluruhan property yang ada di dalam class Win32_Floppydrive, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.9. Beberapa property dari class Win32_Floppydrive.
Property Tipe Data
name string
description string
deviceid string
pnpdeviceid string
status string
numberofmediasupported uint32
compressionmethod string
manufacturer string
defaultblocksize uint64
maxblocksize uint64
minblocksize uint64
maxmediasize uint64
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Floppydrive.asp
Method f_GetIDEControllerInformation
Keterangan Method ini menampilkan manages perangkat pengendali Integrated Device Electronics (IDE).
Dari keseluruhan property yang ada di dalam class Win32_Idecontroller, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 27
Tabel 3.10. Beberapa property dari class Win32_Idecontroller.
Property Tipe Data
name string
description string
deviceid string
pnpdeviceid string
status string
statusinfo uint16
manufacturer string
maxnumbercontrolled uint32
protocolsupported uint16
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Idecontroller.asp
Method f_GetKeyboardInformation
Keterangan Method ini menampilkan papan ketik yang terinstal pada sistem Windows.
Dari keseluruhan property yang ada di dalam class Win32_Keyboard, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.11. Beberapa property dari class Win32_Keyboard.
Property Tipe Data
name string
description string
deviceid string
pnpdeviceid string
status string
layout string
numberoffunctionkeys uint16
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Keyboard.asp
Method f_GetLogicalDiskInformation
Keterangan Method ini menampilkan perangkat penyimpanan data lokal pada sistem Windows.
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 28
Dari keseluruhan property yang ada di dalam class Win32_Logicaldisk, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.12. Beberapa property dari class Win32_Logicaldisk.
Property Tipe Data
name string
description string
deviceid string
filesystem string
freespace uint64
size uint64
volumename string
volumeserialnumber string
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Logicaldisk.asp
Method f_GetNetAdapterConfigInformation
Keterangan Method ini menampilkan atribut dan seting dari network adapter.
Dari keseluruhan property yang ada di dalam class Win32_Networkadapterconfiguration, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.13. Beberapa property dari class Win32_Networkadapterconfiguration.
Property Tipe Data
index uint32
macaddress string
settingid string
description string
servicename string
arpalwayssourceroute boolean
arpuseethersnap boolean
databasepath string
deadgwdetectenabled boolean
defaultipgateway array string
defaulttos uint8
defaultttl uint8
dhcpenabled boolean
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 29
dhcpleaseexpires datetime
dhcpleaseobtained datetime
dhcpserver string
dnsdomain string
dnsdomainsuffixsearchorder array string
dnsenabledforwinsresolution boolean
dnshostname string
dnsserversearchorder array string
domaindnsregistrationenabled boolean
forwardbuffermemory uint32
fulldnsregistrationenabled boolean
gatewaycostmetric array uint16
igmplevel uint8
ipaddress array string
ipconnectionmetric uint32
ipenabled boolean
ipfiltersecurityenabled boolean
ipportsecurityenabled boolean
ipsecpermitipprotocols array string
ipsecpermittcpports array string
ipsecpermitudpports array string
ipsubnet array string
ipusezerobroadcast boolean
ipxaddress string
ipxenabled boolean
ipxframetype array uint32
ipxmediatype uint32
ipxnetworknumber array string
ipxvirtualnetnumber string
keepaliveinterval uint32
mtu uint32
numforwardpackets uint32
pmtubhdetectenabled boolean
pmtudiscoveryenabled boolean
tcpipnetbiosoptions uint32
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 30
tcpmaxconnectretransmissions uint32
tcpmaxdataretransmissions uint32
tcpnumconnections uint32
tcpuserfc1122urgentpointer boolean
tcpwindowsize uint16
winsenablelmhostslookup boolean
winshostlookupfile string
winsprimaryserver string
winsscopeid string
winssecondaryserver string
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Networkadapterconfiguration.asp
Method f_GetNetworkAdapterInformation
Fungsi Method ini menampilkan network adapter pada sistem operasi Windows.
Dari keseluruhan property yang ada di dalam class Win32_Networkadapter, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.14. Beberapa property dari class Win32_Networkadapter.
Property Tipe Data
name string
description string
deviceid string
pnpdeviceid string
status string
statusinfo uint16
speed uint64
maxspeed uint64
macaddress string
timeoflastreset datetime
index uint32
installed boolean
autosense boolean
adaptertype string
adaptertypeid uint16
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 31
productname string
servicename string
manufacturer string
maxnumbercontrolled uint32
netconnectionid string
netconnectionstatus uint16
permanentaddress string
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Networkadapter.asp
Method f_GetOSInformation
Keterangan Method ini menampilkan sistem operasi yang terinstal pada sistem komputer Windows.
Dari keseluruhan property yang ada di dalam class Win32_Operatingsystem, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.15. Beberapa property dari class Win32_Operatingsystem.
Property Tipe Data
name string
caption string
status string
manufacturer string
version string
producttype uint32
buildnumber string
buildtype string
csdversion string
servicepackmajorversion uint16
servicepackminorversion uint16
primary boolean
serialnumber string
registereduser string
organization string
installdate datetime
numberoflicensedusers uint32
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 32
bootdevice string
systemdevice string
systemdrive string
systemdirectory string
windowsdirectory string
lastbootuptime datetime
codeset string
countrycode string
locale string
currenttimezone sint16
localdatetime datetime
oslanguage uint32
osproductsuite uint32
ostype uint16
dataexecutionprevention_32bitapplications
boolean
dataexecutionprevention_available boolean
dataexecutionprevention_drivers boolean
dataexecutionprevention_supportpolicy boolean
debug boolean
distributed string
encryptionlevel uint32
foregroundapplicationboost uint8
freephysicalmemory uint64
freespaceinpagingfiles uint64
freevirtualmemory uint64
sizestoredinpagingfiles uint64
totalswapspacesize uint64
totalvirtualmemorysize uint64
totalvisiblememorysize uint64
numberofprocesses uint32
maxnumberofprocesses uint32
maxprocessmemorysize uint32
numberofusers uint32
Baca informasi selengkapnya pada situs Internet:
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 33
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Operatingsystem.asp
Method f_GetParallelPortInformation
Fungsi Method ini menampilkan parallel port pada sistem komputer Windows.
Dari keseluruhan property yang ada di dalam class Win32_Parallelport, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.16. Beberapa property dari class Win32_Parallelport.
Property Tipe Data
name string
description string
deviceid string
pnpdeviceid string
status string
statusinfo uint16
dmasupport boolean
installdate datetime
maxnumbercontrolled uint32
osautodiscovered boolean
protocolsupported uint16
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Parallelport.asp
Method f_GetPCMCIAControllerInformation
Fungsi Method ini menampilkan kemampuan dari perangkat pengendali Personal Computer Memory Card Interface Adapter (PCMCIA).
Dari keseluruhan property yang ada di dalam class Win32_Pcmciacontroller, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.17. Beberapa property dari class Win32_Pcmciacontroller.
Property Tipe Data
name string
description string
deviceid string
pnpdeviceid string
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 34
status string
statusinfo uint16
manufacturer string
maxnumbercontrolled uint32
protocolsupported uint16
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Pcmciacontroller.asp
Method f_GetPhysicalMemoryInformation
Keterangan Method ini menampilkan memori fisikal yang ada di dalam sistem komputer dan digunakan oleh sistem operasi.
Dari keseluruhan property yang ada di dalam class Win32_Physicalmemory, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.18. Beberapa property dari class Win32_Physicalmemory.
Property Tipe Data
name string
description string
status string
manufacturer string
model string
version string
memorytype uint16
typedetail uint16
positioninrow uint32
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Physicalmemory.asp
Method f_GetPointingDevInformation
Keterangan Method ini menampilkan perangkat input yang digunakan untuk menunjuk dan memilih area pada tampilan sistem komputer Windows.
Dari keseluruhan property yang ada di dalam class Win32_Pointingdevice, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.19. Beberapa property dari class Win32_Pointingdevice.
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 35
Property Tipe Data
name string
description string
deviceid string
pnpdeviceid string
status string
manufacturer string
hardwaretype string
numberofbuttons uint8
statusinfo uint16
pointingtype uint16
deviceinterface uint16
doublespeedthreshold uint32
quadspeedthreshold uint32
samplerate uint32
resolution uint32
handedness uint16
synch uint32
inffilename string
infsection string
installdate datetime
islocked boolean
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Pointingdevice.asp
Method f_GetPOTSModemInformation
Keterangan Method ini menampilkan layanan dan karakteristik dari modem Plain Old Telephone Service (POTS) pada sistem Windows.
Dari keseluruhan property yang ada di dalam class Win32_Potsmodem, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.20. Beberapa property dari class Win32_Potsmodem.
Property Tipe Data
name string
description string
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 36
deviceid string
pnpdeviceid string
status string
statusinfo uint16
attachedto string
model string
devicetype string
deviceloader string
index uint32
blindoff string
blindon string
compatibilityflags string
compressioninfo uint16
compressionoff string
compressionon string
configmanagererrorcode uint32
configmanageruserconfig boolean
configurationdialog string
countryselected string
dcb array uint8
default array uint8
errorcleared boolean
errorcontrolforced string
errorcontrolinfo uint16
errorcontroloff string
errorcontrolon string
flowcontrolhard string
flowcontroloff string
flowcontrolsoft string
maxbaudratetophone uint32
maxbaudratetoserialport uint32
maxnumberofpasswords uint16
modeminfpath string
modeminfsection string
modulationbell string
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 37
modulationccitt string
modulationscheme uint16
portsubclass string
stringformat string
prefix string
reset string
terminator string
properties array uint8
providername string
pulse string
tone string
responseskeyname string
dialtype uint16
answermode uint16
ringsbeforeanswer uint8
speakermodedial string
speakermodeoff string
speakermodeon string
speakermodesetup string
speakervolumeinfo uint16
speakervolumelow string
speakervolumemed string
speakervolumehigh string
supportscallback boolean
supportssynchronousconnect boolean
voiceswitchfeature string
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Potsmodem.asp
Method f_GetPrinterInformation
Keterangan Method ini menampilkan perangkat yang terhubung dengan sistem komputer Windows yang dapat menghasilkan gambar visual pada kertas atau media lain.
Dari keseluruhan property yang ada di dalam class Win32_Printer, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.21. Beberapa property dari class Win32_Printer.
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 38
Property Tipe Data
name string
description string
deviceid string
pnpdeviceid string
status string
statusinfo uint16
drivername string
portname string
capabilitydescriptions array string
printerpapernames array string
averagepagesperminute uint32
horizontalresolution uint32
verticalresolution uint32
attributes uint32
default boolean
direct boolean
local boolean
network boolean
hidden boolean
published boolean
queued boolean
rawonly boolean
shared boolean
sharename string
workoffline boolean
spoolenabled boolean
docompletefirst boolean
keepprintedjobs boolean
enablebidi boolean
enabledevqueryprint boolean
detectederrorstate uint16
extendeddetectederrorstate uint16
extendedprinterstatus uint16
jobcountsincelastreset uint32
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 39
location string
markingtechnology uint16
maxcopies uint32
maxnumberup uint32
maxsizesupported uint32
printerstate uint32
printerstatus uint16
printjobdatatype string
printprocessor string
priority uint32
separatorfile string
servername string
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Printer.asp
Method f_GetProcessorInformation
Fungsi Method ini menampilkan komponen yang menjalankan serangkaian instruksi mesin pada komputer yang menjalankan sistem operasi Windows. Pada komputer dengan prosesor lebih dari satu, setiap instance dari class Win32_Processor mewakili masing-masing prosesor.
Dari keseluruhan property yang ada di dalam class Win32_Processor, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.22. Beberapa property dari class Win32_Processor.
Property Tipe Data
name string
description string
deviceid string
status string
processorid string
uniqueid string
manufacturer string
version string
revision uint16
addresswidth uint16
datawidth uint16
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 40
l2cachesize uint32
l2cachespeed uint32
currentclockspeed uint32
extclock uint32
maxclockspeed uint32
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Processor.asp
Method f_GetSCSIControllerInformation
Keterangan Method ini menampilkan pengendali SCSI pada sistem Windows.
Dari keseluruhan property yang ada di dalam class Win32_Scsicontroller, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.23. Beberapa property dari class Win32_Scsicontroller.
Property Tipe Data
name string
description string
deviceid string
pnpdeviceid string
status string
statusinfo uint16
devicemap string
index uint32
drivername string
manufacturer string
hardwareversion string
controllertimeouts uint32
maxdatawidth uint32
maxnumbercontrolled uint32
maxtransferrate uint64
protocolsupported uint16
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Scsicontroller.asp
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 41
Method f_GetSerialPortConfigInformation
Keterangan Method ini menampilkan seting untuk transamisi data pada serial port.
Dari keseluruhan property yang ada di dalam class Win32_Serialportconfiguration, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.24. Beberapa property dari class Win32_Serialportconfiguration.
Property Tipe Data
name string
description string
baudrate uint32
parity string
paritycheckenabled boolean
settingid string
abortreadwriteonerror boolean
binarymodeenabled boolean
continuexmitonxoff boolean
ctsoutflowcontrol boolean
discardnullbytes boolean
dsroutflowcontrol boolean
dsrsensitivity boolean
errorreplacementenabled boolean
isbusy boolean
dtrflowcontroltype string
rtsflowcontroltype string
stopbits string
eventcharacter uint32
eofcharacter uint32
errorreplacecharacter uint32
xoffcharacter uint32
xoffxmitthreshold uint32
xoncharacter uint32
xonxmitthreshold uint32
xonxoffinflowcontrol uint32
xonxoffoutflowcontrol uint32
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Serialportconfiguration.asp
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 42
Method f_GetSerialPortInformation
Keterangan Method ini menampilkan serial port pada sistem Windows.
Dari keseluruhan property yang ada di dalam class Win32_Serialport, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.25. Beberapa property dari class Win32_Serialport.
Property Tipe Data
name string
description string
deviceid string
pnpdeviceid string
status string
statusinfo uint16
providertype string
binary boolean
osautodiscovered boolean
protocolsupported uint16
maxbaudrate uint32
maximuminputbuffersize uint32
maximumoutputbuffersize uint32
maxnumbercontrolled uint32
settablebaudrate boolean
settabledatabits boolean
settableflowcontrol boolean
settableparity boolean
settableparitycheck boolean
settablerlsd boolean
settablestopbits boolean
supports16bitmode boolean
supportsdtrdsr boolean
supportselapsedtimeouts boolean
supportsinttimeouts boolean
supportsparitycheck boolean
supportsrlsd boolean
supportsrtscts boolean
supportsspecialcharacters boolean
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 43
supportsxonxoff boolean
supportsxonxoffset boolean
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Serialport.asp
Method f_GetSoundDeviceInformation
Fungsi Method ini menampilkan property dari perangkat suara pada sistem komputer Windows.
Dari keseluruhan property yang ada di dalam class Win32_Sounddevice, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.26. Beberapa property dari class Win32_Sounddevice.
Property Tipe Data
name string
description string
deviceid string
pnpdeviceid string
status string
statusinfo uint16
productname string
manufacturer string
dmabuffersize uint16
mpu401address uint32
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Sounddevice.asp
Method f_GetTapeDriveInformation
Keterangan Method ini menampilkan penggerak tape drive pada komputer Windows.
Dari keseluruhan property yang ada di dalam class Win32_Tapedrive, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.27. Beberapa property dari class Win32_Tapedrive.
Property Tipe Data
name string
description string
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 44
deviceid string
pnpdeviceid string
status string
statusinfo uint16
manufacturer string
mediatype string
compression uint32
defaultblocksize uint64
maxblocksize uint64
minblocksize uint64
maxmediasize uint64
maxpartitioncount uint32
id string
numberofmediasupported uint32
ecc uint32
eotwarningzonesize uint32
errorcleared boolean
errordescription string
errormethodology string
featureshigh uint32
featureslow uint32
padding uint32
installdate datetime
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Tapedrive.asp
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 45
Method f_GetUSBControllerInformation
Keterangan Method ini menampilkan kemampuan dari pengendali Universal Serial Bus (USB).
Dari keseluruhan property yang ada di dalam class Win32_Usbcontroller, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.28. Beberapa property dari class Win32_Usbcontroller.
Property Tipe Data
name string
description string
deviceid string
pnpdeviceid string
status string
statusinfo uint16
manufacturer string
maxnumbercontrolled uint32
protocolsupported uint16
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Usbcontroller.asp
Method f_GetVideoControllerInformation
Keterangan Method ini menampilkan kemampuan dan kapasitas pengelolaan pengendali video pada sistem komputer Windows.
Dari keseluruhan property yang ada di dalam class Win32_Videocontroller, berikut ini adalah sebagian yang digunakan pada komponen ssci_com.
Tabel 3.29. Beberapa property dari class Win32_Videocontroller.
Property Tipe Data
name string
description string
deviceid string
pnpdeviceid string
status string
adaptercompatibility string
adapterdactype string
adapterram uint32
currentbitsperpixel uint32
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 46
currenthorizontalresolution uint32
currentnumberofcolors uint64
currentnumberofcolumns uint32
currentnumberofrows uint32
currentrefreshrate uint32
currentscanmode uint16
currentverticalresolution uint32
devicespecificpens uint32
driverdate datetime
driverversion string
inffilename string
infsection string
installdate datetime
installeddisplaydrivers string
maxrefreshrate uint32
minrefreshrate uint32
monochrome boolean
numberofcolorplanes uint16
numberofvideopages uint32
videomodedescription string
videoprocessor string
Baca informasi selengkapnya pada situs Internet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/wmisdk/wmi/Win32_Videocontroller.asp
Method f_GetSoftwareInformation
Keterangan Method ini menampilkan pembacaan nilai dalam Windows registry pada path HKEY_LOCAL_MACHINE\Software\ Microsoft\Windows\CurrentVersion\Uninstall\.
Tabel 3.30. Beberapa nilai yang dibaca.
Property Tipe Data
key string
displayname string
displayversion string
installlocation string
installsource string
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 47
installdate datetime
productid string
publisher string
regcompany string
regowner string
Skrip 3.18. Method f_GetSoftwareInformation.
Public Function f_GetSoftwareInformation(ByRef sXML As String, ByRef
sErrMsg As String) As Integer
On Error GoTo errHandler
Dim oWMI, oItem, oItems, oMyXML As cMyXML, vDummy As Variant, i As
Integer
Dim iRet As Integer
Dim sValue
Const sBaseKey = "Software\Microsoft\Windows\CurrentVersion\
Uninstall\"
Set oWMI = GetObject("winmgmts:root\default:StdRegProv")
oWMI.EnumKey HKEY_LOCAL_MACHINE, sBaseKey, oItems
Set oMyXML = New cMyXML
oMyXML.CreateRootNode "softwareinformation"
i = 0
On Error Resume Next
For Each oItem In oItems
iRet = oWMI.GetDWordValue(HKEY_LOCAL_MACHINE, sBaseKey & oItem,
"NoRemove", sValue)
If sValue <> 1 Or IsNull(sValue) Then
iRet = oWMI.GetStringValue(HKEY_LOCAL_MACHINE, sBaseKey &
oItem, _
"DisplayName", sValue)
If iRet <> 0 Then
iRet = oWMI.GetStringValue(HKEY_LOCAL_MACHINE, sBaseKey &
oItem, _
"QuietDisplayName", sValue)
End If
If Not (IsEmpty(sValue) Or IsNull(sValue)) Then
oMyXML.AddChildNode "software_row", ""
vDummy = "": vDummy = oItem
oMyXML.AddGrandChildNode i, "key", StringValue(vDummy)
oMyXML.AddGrandChildNode i, "DisplayName",
StringValue(sValue)
vDummy = ""
iRet = oWMI.GetStringValue(HKEY_LOCAL_MACHINE, sBaseKey &
oItem, _
"DisplayVersion", vDummy)
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 48
oMyXML.AddGrandChildNode i, "DisplayVersion",
StringValue(vDummy)
vDummy = ""
iRet = oWMI.GetStringValue(HKEY_LOCAL_MACHINE, sBaseKey &
oItem, _
"InstallLocation", vDummy)
oMyXML.AddGrandChildNode i, "InstallLocation",
StringValue(vDummy)
vDummy = ""
iRet = oWMI.GetStringValue(HKEY_LOCAL_MACHINE, sBaseKey &
oItem, _
"InstallSource", vDummy)
oMyXML.AddGrandChildNode i, "InstallSource",
StringValue(vDummy)
vDummy = ""
iRet = oWMI.GetStringValue(HKEY_LOCAL_MACHINE, sBaseKey &
oItem, _
"InstallDate", vDummy)
oMyXML.AddGrandChildNode i, "InstallDate",
StringValue(vDummy)
vDummy = ""
iRet = oWMI.GetStringValue(HKEY_LOCAL_MACHINE, sBaseKey &
oItem, _
"ProductID", vDummy)
oMyXML.AddGrandChildNode i, "ProductID",
StringValue(vDummy)
vDummy = ""
iRet = oWMI.GetStringValue(HKEY_LOCAL_MACHINE, sBaseKey &
oItem, _
"Publisher", vDummy)
oMyXML.AddGrandChildNode i, "Publisher",
StringValue(vDummy)
vDummy = ""
iRet = oWMI.GetStringValue(HKEY_LOCAL_MACHINE, sBaseKey &
oItem, _
"RegCompany", vDummy)
oMyXML.AddGrandChildNode i, "RegCompany",
StringValue(vDummy)
vDummy = ""
iRet = oWMI.GetStringValue(HKEY_LOCAL_MACHINE, sBaseKey &
oItem, _
"RegOwner", vDummy)
oMyXML.AddGrandChildNode i, "RegOwner", StringValue(vDummy)
i = i + 1
End If
End If
Next
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM 49
sErrMsg = ""
sXML = oMyXML.xmlText
Set oMyXML = Nothing
Set oItem = Nothing
Set oItems = Nothing
Set oWMI = Nothing
f_GetSoftwareInformation = 0
Exit Function
errHandler:
Set oItem = Nothing
Set oItems = Nothing
Set oWMI = Nothing
Set oMyXML = Nothing
sErrMsg = Err.Description
sXML = ""
f_GetSoftwareInformation = -1
End Function
Method f_Ping
Keterangan Method ini mengembalikan status respon dari sebuah komputer dengan perintah PING.
Kegunaan fungsi f_Ping akan dijelaskan pada pembahasan bab berikutnya.
Public Function f_Ping(sComputerName As String) As Integer
Dim oWMI, oPing
On Error GoTo errHandler
Set oWMI = GetObject("winmgmts:root\cimv2")
Set oPing = oWMI.Get("win32_pingStatus.Address='" & sComputerName &
"'")
If oPing.StatusCode = 0 Then
f_Ping = 0
Else
f_Ping = -1
End If
Set oWMI = Nothing
Set oPing = Nothing
Exit Function
errHandler:
Dim oShell, oScriptExec, strPingResults As String
Set oShell = CreateObject("WScript.Shell")
Set oScriptExec = oShell.Exec("ping -n 2 -w 1000 " & sComputerName)
strPingResults = LCase(oScriptExec.StdOut.ReadAll)
If InStr(strPingResults, "reply from") Then
f_Ping = 0
Else
f_Ping = -1
www.tobuku.com
WMI-FD-06013–MEMBUAT KOMPONEN SSC
End If
Set oShell = Nothing
Set oScriptExec = Nothing
Set oWMI = Nothing
Set oPing = Nothing
End Function
Pada skrip di atas, rutin errHandlertiadanya respon dari komputer yang dituju melainkan pada pewin32_pingStatus.Address= '" & sComputerName & "'")Win32_Pingstatus sehingga bisa dipastikan baris perintah itu akan memicu kesalahan.
Untuk menggantikan penggunaanWScript.Shell yang selanjutnya menjalankan perintah “Respon komputer yang dituju bisa didapat dari ada atau tiadanya teks “
Bab ini telah menuntaskan pembuatan komponen ssci_com dengan bahasa pemrograman Visual Basic. Pada bab sebelumnya mengenai program demo SysPie Agent, ditunjukkan bahwa informasi sistem komputer telah dapat ditampilkan dengan baik. Program klien (dsumber datanya dari pemanggilan fungsiprogram klien dan ssci_com dilakukan melalui dokumen XML. Bentuk komunikasi ini dipilih untuk memastikan ssci_com sebagai sistem yang terbuka, juga XML adalah standar industri, lintas protokolnya sederhana dan formatnya sudah diadopsi secara luas oleh banyak sistem dan pembuat software.
Untuk saat ini, SysPie Agent yang telah diinstal hanya menampilkan informasi pmenyimpannya ke dalam database. Pada bab selanjutnya akan diperlihatkan bagaimana informasi tersebut dapat disimpan ke dalam database. Dengan demikian setiap komputer klien yang terinstal SysPie Agent secara simultan akan mengirim informasi masingterkumpul dalam sebuah repository. Pada tahap selanjutnya, administrator bisa memperoleh gabungan informasi-informasi itu dan menampilkannya dalam berbagai bentuk laporan.
MEMBUAT KOMPONEN SSCI_COM
Set oScriptExec = Nothing
errHandler akan dijalankan saat terjadi kesalahan. Kesalahan yang dimaksud bukan tiadanya respon dari komputer yang dituju melainkan pada pemanggilan baris “Set oPing = oWMI.Get("
'" & sComputerName & "'")”. Sistem operasi Windows 2000 tidak memiliki class sehingga bisa dipastikan baris perintah itu akan memicu kesalahan.
Untuk menggantikan penggunaan class Win32_Pingstatus pada Windows 2000 digunakan objek yang selanjutnya menjalankan perintah “Exec("ping -n 2 -w 1000 " & sComputerName)
Respon komputer yang dituju bisa didapat dari ada atau tiadanya teks “reply from” pada hasil perinta
Bab ini telah menuntaskan pembuatan komponen ssci_com dengan bahasa pemrograman Visual Basic. Pada bab sebelumnya mengenai program demo SysPie Agent, ditunjukkan bahwa informasi sistem komputer telah dapat ditampilkan dengan baik. Program klien (dalam hal ini SysPie Agent) mendapatkan sumber datanya dari pemanggilan fungsi-fungsi di dalam komponen COM ssci_com. Komunikasi antara program klien dan ssci_com dilakukan melalui dokumen XML. Bentuk komunikasi ini dipilih untuk
i sistem yang terbuka, juga XML adalah standar industri, lintas protokolnya sederhana dan formatnya sudah diadopsi secara luas oleh banyak sistem dan pembuat
Untuk saat ini, SysPie Agent yang telah diinstal hanya menampilkan informasi pada layar komputer menyimpannya ke dalam database. Pada bab selanjutnya akan diperlihatkan bagaimana informasi tersebut dapat disimpan ke dalam database. Dengan demikian setiap komputer klien yang terinstal SysPie Agent
im informasi masing-masing komputer lokalnya ke server database dan terkumpul dalam sebuah repository. Pada tahap selanjutnya, administrator bisa memperoleh gabungan
informasi itu dan menampilkannya dalam berbagai bentuk laporan.
50
akan dijalankan saat terjadi kesalahan. Kesalahan yang dimaksud bukan Set oPing = oWMI.Get("
”. Sistem operasi Windows 2000 tidak memiliki class sehingga bisa dipastikan baris perintah itu akan memicu kesalahan.
pada Windows 2000 digunakan objek w 1000 " & sComputerName)”.
” pada hasil perintah PING.
Bab ini telah menuntaskan pembuatan komponen ssci_com dengan bahasa pemrograman Visual Basic. Pada bab sebelumnya mengenai program demo SysPie Agent, ditunjukkan bahwa informasi sistem
alam hal ini SysPie Agent) mendapatkan fungsi di dalam komponen COM ssci_com. Komunikasi antara
program klien dan ssci_com dilakukan melalui dokumen XML. Bentuk komunikasi ini dipilih untuk i sistem yang terbuka, juga XML adalah standar industri, lintas platform,
protokolnya sederhana dan formatnya sudah diadopsi secara luas oleh banyak sistem dan pembuat
ada layar komputer – tidak menyimpannya ke dalam database. Pada bab selanjutnya akan diperlihatkan bagaimana informasi tersebut dapat disimpan ke dalam database. Dengan demikian setiap komputer klien yang terinstal SysPie Agent
masing komputer lokalnya ke server database dan terkumpul dalam sebuah repository. Pada tahap selanjutnya, administrator bisa memperoleh gabungan