www.tobuku.com
MANAJEMEN ASET IT - BAGIAN 3 MEMBUAT KOMPONEN SSCI_COM Mei 2006 Oleh : Feri Djuandi
Tingkat:
√ 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.
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
1
www.tobuku.com Untuk mulai membuat komponen ssci_com, silakan ikuti langkah-langkah langkah langkah berikut ini. 1. Jalankan Ms Visual Basic 6.0 dan buat sebuah projek baru bar dengan tipe ActiveX DLL. DLL Klik tombol Open.
Gambar 3.1. Memulai projek ActiveX DLL. 2. Jalankan menu Project Project 1 Properties,, kemudian namakan projek ini sebagai ssci_com.
Gambar 3.2. Window Project Properties. Biarkan property-property property lain dengan nilai default default-nya. Klik tombol OK. WMI-FD-06013–MEMBUAT MEMBUAT KOMPONEN SSCI_COM SSC
2
www.tobuku.com 3. Jalankan menu Project 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. Klik tombol OK. 4. Saat ini di dalam projek tersebut hanya ada sebuah objek, yaitu Class1. Pada window property-nya property ubahlah nilai-nilainya nilainya seperti diperlihatkan gambar di bawah ini.
Gambar 3.4. Merubah property cMyXML. Klik tombol OK. 5. Untuk sementara, simpanlah dulu projek ini sebagai ssci_com.vbp.
WMI-FD-06013–MEMBUAT MEMBUAT KOMPONEN SSCI_COM SSC
3
www.tobuku.com 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 “”. 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
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
4
www.tobuku.com 9. Skrip berikutnya adalah method CreateRootNode, AddChildNode dan AddGrandChildNode. Struktur dokumen XML yang digunakan pada sistem ini diperlihatkan pada gambar berikut.
Root
Child
Grandchild Node
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
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
5
www.tobuku.com 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). xmlElem End Sub
appendChild
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.
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
6
www.tobuku.com
3.2. Membuat Class cSSCI Class cSSCI mengandung cukup banyak method f_GetXXX. Namun demikian, sebagian besar methodmethod method itu sangat mirip pengkodeannya. Perbedaannya adalah pemanggilan class-class class WMI dan propertynya yang berlainan n 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 cSSCI.
Gambar 3.7. Property class cSSCI.
WMI-FD-06013–MEMBUAT MEMBUAT KOMPONEN SSCI_COM SSC
7
www.tobuku.com 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.
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
8
www.tobuku.com 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.
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
9
www.tobuku.com 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
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
10
www.tobuku.com 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 panggilanpanggilan 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 WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
11
www.tobuku.com Else f_GetLoginInformation = 0 End If End Function Berikut ini adalah potongan dari skrip di atas. Di situ tampak bahwa oMyXML didefinisikan sebagai sebuah intance dari class cMyXML.. Pada inisialisasi inilah event Initialize dari class cMyXML dijalankan. Silakan lihat kembali penjelasan sebelumnya mengenai class cMyXML dimana sebuah dokumen XML dibuat pada event tersebut. Pada baris selanjutnya ke dalam dokumen XML itu dibuat sebuah root node dengan method CreateRootNode, diikuti baris-baris baris berikutnya untuk pembuatan child node dan grandchild node menggunakan method AddChildNode dan AddGrandChildNode. ... 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 xmlText. xmlText Setelah selesai digunakan, akhirnya oMyXML dibebaskan dari memori. Pada saat inilah event Terminate dari class cMyXML dijalankan. Isi dari variabel sXML diperlihatkan pada gambar di bawah ini.
Gambar 3.8. Dokumen XML hasil pemanggilan f_GetLoginInformation. f_GetLoginInformation Jika cukup teliti, Anda akan bertanya bertanya-tanya tanya apa artinya angka nol (0) pada parameter method AddGrandChildNode 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. Akan tampak nanti bahwa sebuah dokumen XML bisa mengandu mengandung ng beberapa child node. Dengan demikian, saat 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 masing memiliki indeks 0, 1, 2, 3 dan 4. Oleh karena itu parameter indeks pada method AddGrandChildNode harus dirujuk dengan benar.
WMI-FD-06013–MEMBUAT MEMBUAT KOMPONEN SSCI_COM SSC
12
www.tobuku.com
Indeks=
Indeks=
Indeks=
Indeks=
Gambar 3.9 3.9. Dokumen XML dengan beberapa child node.. 7. Silakan ketik skrip di bawah ini untuk membuat method f_GetComputerSysInformation. f_GetComputerSysInformation Penjelasannya akan diberikan setelah ini. Skrip 3.16. Method f_GetComputerSysInformation. 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\CIMV2") 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 my = "": vDummy = oItem.Description oMyXML.AddGrandChildNode i, "description", StringValue(vDummy) vDummy = "": vDummy = oItem.manufacturer oMyXML.AddGrandChildNode i, "manufacturer", StringValue(vDummy)
WMI-FD-06013–MEMBUAT MEMBUAT KOMPONEN SSCI_COM SSC
13
www.tobuku.com 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 WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
14
www.tobuku.com 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: WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
15
www.tobuku.com ... 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 classclass 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 classclass 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
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
16
www.tobuku.com 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.
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
17
www.tobuku.com
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/enus/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.
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
18
www.tobuku.com 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, StringValue(vDummy)
"softwareelementid",
vDummy = "": vDummy = oItem.softwareelementstate oMyXML.AddGrandChildNode i, "softwareelementstate", StringValue(vDummy)
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
19
www.tobuku.com 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, StringValue(vDummy)
"smbiosbiosversion",
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. WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
20
www.tobuku.com 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
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
21
www.tobuku.com
Baca informasi selengkapnya pada situs Internet: http://msdn.microsoft.com/library/default.asp?url=/library/enus/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
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
22
www.tobuku.com
Baca informasi selengkapnya pada situs Internet: http://msdn.microsoft.com/library/default.asp?url=/library/enus/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/enus/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
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
23
www.tobuku.com 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/enus/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
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
24
www.tobuku.com 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/enus/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
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
25
www.tobuku.com logpixels
uint32
bitsperpel
uint32
pelsheight
uint32
pelswidth
uint32
Baca informasi selengkapnya pada situs Internet: http://msdn.microsoft.com/library/default.asp?url=/library/enus/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/enus/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.
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
26
www.tobuku.com 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/enus/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/enus/wmisdk/wmi/Win32_Keyboard.asp
Method
f_GetLogicalDiskInformation
Keterangan
Method ini menampilkan perangkat penyimpanan data lokal pada sistem Windows.
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
27
www.tobuku.com 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/enus/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
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
28
www.tobuku.com 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
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
29
www.tobuku.com 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/enus/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
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
30
www.tobuku.com 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/enus/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
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
31
www.tobuku.com 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_32bitapplication s
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:
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
32
www.tobuku.com http://msdn.microsoft.com/library/default.asp?url=/library/enus/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/enus/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
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
33
www.tobuku.com 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/enus/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/enus/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.
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
34
www.tobuku.com 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/enus/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
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
35
www.tobuku.com 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
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
36
www.tobuku.com 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/enus/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. WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
37
www.tobuku.com 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
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
38
www.tobuku.com 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/enus/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 masingmasing 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
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
39
www.tobuku.com 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/enus/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/enus/wmisdk/wmi/Win32_Scsicontroller.asp
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
40
www.tobuku.com 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/enus/wmisdk/wmi/Win32_Serialportconfiguration.asp WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
41
www.tobuku.com
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
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
42
www.tobuku.com supportsxonxoff
boolean
supportsxonxoffset
boolean
Baca informasi selengkapnya pada situs Internet: http://msdn.microsoft.com/library/default.asp?url=/library/enus/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/enus/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
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
43
www.tobuku.com 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/enus/wmisdk/wmi/Win32_Tapedrive.asp
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
44
www.tobuku.com 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/enus/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
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
45
www.tobuku.com 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/enus/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
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
46
www.tobuku.com 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 Uninstall\"
=
"Software\Microsoft\Windows\CurrentVersion\
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 StringValue(sValue)
i,
"DisplayName",
vDummy = "" iRet = oWMI.GetStringValue(HKEY_LOCAL_MACHINE, sBaseKey & oItem, _ "DisplayVersion", vDummy) WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
47
www.tobuku.com oMyXML.AddGrandChildNode StringValue(vDummy)
i,
"DisplayVersion",
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
WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
48
www.tobuku.com 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 WMI-FD-06013–MEMBUAT KOMPONEN SSCI_COM
49
www.tobuku.com End If Set Set Set Set End
oShell = Nothing oScriptExec = Nothing oWMI = Nothing oPing = Nothing Function
Pada skrip di atas, rutin errHandler akan dijalankan saat terjadi kesalahan. Kesalahan yang dimaksud bukan tiadanya respon dari komputer yang dituju melainkan pada pemanggilan pe baris “Set Set oPing = oWMI.Get(" win32_pingStatus.Address= '" & sComputerName & "'") "'")”. ”. Sistem operasi Windows 2000 tidak memiliki class Win32_Pingstatus sehingga bisa dipastikan baris perintah itu akan memicu kesalahan. Untuk menggantikan penggunaan class Win32_Pingstatus pada Windows 2000 digunakan objek WScript.Shell yang selanjutnya menjalankan perintah “Exec("ping “ -n 2 -w w 1000 " & sComputerName) sComputerName)”. Respon komputer yang dituju bisa didapat dari ada atau tiadanya teks ““reply from”” pada hasil perintah perinta 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 komputer telah dapat ditampilkan dengan baik. Program klien (d (dalam alam hal ini SysPie Agent) mendapatkan sumber datanya dari pemanggilan fungsi-fungsi fungsi fungsi di dalam komponen COM ssci_com. Komunikasi antara program klien dan ssci_com dilakukan melalui dokumen XML. Bentuk komunikasi ini dipilih untuk memastikan ssci_com sebagaii sistem yang terbuka, juga XML adalah standar industri, lintas platform, 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 p pada 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 secara simultan akan mengirim im informasi masing masing-masing masing komputer lokalnya ke server database dan terkumpul dalam sebuah repository. Pada tahap selanjutnya, administrator bisa memperoleh gabungan informasi-informasi informasi itu dan menampilkannya dalam berbagai bentuk laporan.
WMI-FD-06013–MEMBUAT MEMBUAT KOMPONEN SSCI_COM SSC
50