Ada hal rutin yang saya lakukan setiap pagi dan sore, ketika ngantor saya harus mengeset ip statis menyesuaikan ip kantor sedangkan ketika di kos saya harus mengeset ip menjadi dinamis.
Masalah sepele memang tapi lumayan memakan waktu dan membosankan dan saya belum tau (setidaknya untuk saat ini) apakah OS (win 7) yang sy pake menyediakan solusi untuk masalah ini.
Dari teman kantor saya sudah dapat file batch untuk masalah ini, skripnya lebih kurang seperti berikut :
1234567891011121314151617181920
@ECHO OFF
Set varan=Wireless Network Connection
Set varip=172.xx.xx.xx
Set varnm=255.255.0.0
Set vargw=172.xx.xx.xxx
Set vardns1=202.xx.x.x
Set vardns2=202.xx.x.x
ECHO Auto Setting IP (arif.laksito@gmail.com)
ECHO for: "%varan%"
ECHO ---------------------------------------------
ECHO Setting "IP Address", "Subnet Mask" and "Gateway"
netsh interface ipv4 set address name="%varan%" source=static address=%varip% mask=%varnm% gateway=%vargw%
ECHO Setting "Primary DNS"
netsh interface ipv4 add dnsserver name="%varan%" address=%vardns1% index=1
ECHO Setting "Secondary DNS"
netsh interface ipv4 add dnsserver name="%varan%" address=%vardns2% index=2
Sedangkan untuk mengeset ke ip dinamis skripnya lebih sederhana lagi
12345678910
@ECHO OFF
Set varan=Wireless Network Connection
ECHO Auto Setting IP to DHCP (arif.laksito@gmail.com)
ECHO ---------------------------------------------
ECHO Setting "IP Address", "Subnet Mask" and "Gateway" to DHCP
netsh interface ipv4 set address name="%varan%" source=dhcp
ECHO Setting "DNS" to DHCP
Netsh interface ipv4 set dnsserver "%varan%" dhcp
Kedua skrip diatas sebenarnya sudah menyelesaikan permasalahan, tapi… ada yang kurang sebagai seorang proGAMMER et… sory maksudnya programmer :D tentunya kita akan sedikit penasaran bagaimana mengeksekusi skrip diatas via program.
Untuk VB 6 sudah saya bahas tuntas dibeberapa postingan saya, tapi untuk kali ini kita menggunakan bahasa C#, yuph inilah bahasa yang sedang sy gandrungi saat ini :), semua project sy terutama yang baru, saya paksain menggunakan bahasa ini, karena pelan2x tapi pasti VB 6 akan segera ditingalkan :cry:
Yuph intronya kita cukupkan sampai disini, untuk desain GUI aplikasinya seperti berikut :
Beberapa method penting yang digunakan oleh aplikasi ini sebagai berikut :
1. Mendapatkan daftar Network Connection
Untuk mendapatkan daftar network saya menggunakan perintah
1
netsh int ip show config
Untuk menjalankan perintah diatas saya menggunakan method ExecuteCommand, kemampuan lain dari method ini adalah menampung output dari perintah yang dijalankan.
Untuk contoh disini outputnya saya tampung ke dalam variabel output.
2. Akses registry
Untuk meningkatkan kemampuan program ini saya juga menambahkan method untuk menulis dan membaca registry, sehingga perubahan terakhir bisa tersimpan dan diload kembali pada saat program dijalankan.
// method untuk membaca registryprivatestringGetValue(stringkey,stringvalue){returnRegistry.CurrentUser.OpenSubKey(key).GetValue(value).ToString();}// method untuk menulis registryprivatevoidWriteValue(stringkey,stringvalueName,stringvalue){Registry.CurrentUser.CreateSubKey(key).SetValue(valueName,value);}// method untuk membaca setting program terakhirprivatevoidGetSetting(){output.Clear();ExecuteCommand("netsh","int ip show config",timeout,true);cmbNetworkConnection.Items.AddRange(GetNetworkConnections());stringdefaultNetwork=string.Empty;RegistryKeyregistryKey=Registry.CurrentUser.OpenSubKey(key);if(registryKey!=null){defaultNetwork=GetValue(key,"DefaultNetwork");txtIPAddress.Text=GetValue(key,"IPAddress");txtSubnetMask.Text=GetValue(key,"SubnetMask");txtDefaultGateway.Text=GetValue(key,"DefaultGateway");txtDnsServer1.Text=GetValue(key,"DnsServer1");txtDnsServer2.Text=GetValue(key,"DnsServer2");switch(GetValue(key,"IPAktif")){case"1":// dinamisrdoIPDinamis.Checked=true;break;case"2":// statisrdoIPStatis.Checked=true;break;default:rdoIPDinamis.Checked=true;break;}groupBox1.Enabled=rdoIPStatis.Checked;}else{// do nothing}if(defaultNetwork.Length>0){if(cmbNetworkConnection.Items.Count>0)cmbNetworkConnection.Text=defaultNetwork;}else{if(cmbNetworkConnection.Items.Count>0)cmbNetworkConnection.SelectedIndex=0;}}
Sebagai penutup berikut adalah kode pada saat menekan tombol Ok.