Bonjour, tout le monde,
Pada posting pertama kali ini, gw akan mencoba untuk membuat aplikasi yang akan sangat berguna dalam keseharian gw di kampus tercinta gw bernamakan FASILKOM UI di Depok.
Sebenarnya sudah dari satu tahun lalu sejak bersinggah di FASILKOM UI, gw merasakan bahwa setiap kali gw pindah koneksi dari rumah gw ke kampus, gw merasa lelah harus ganti konfigurasi Internet. Karena untuk mendapatkan koneksi ke Internet, diperlukan konfigurasi proxy address untuk dapat surf ke dalam internet, dan setiap hari gw harus membuka Start > Control Panel > Network and Internet > Internet Option > dan dibagian Connection, aktifkan proxy.
Proses ini memerlukan waktu yang tidak sedikit sehingga diperlukan adanya efisiensi waktu. Karena itu gw mencoba membuat simple proxy on off yang akan dipasang di desktop, seharusnya sih pembuatan ini tidak dengan WPF tetapi dengan widget ( HTML) supaya lebih bagus, tapi untuk saat ini gw akan membahas WPF saja.
Pertama untuk User Interface-nya, gw membuat memakai Microsoft Expression Blend 4. Tetapi Visual Studio 2008 dan 2010 juga tidak masalah, keduanya dapat membuat WPF application.
Kode User Interface dapat dilihat dibawah ini
MainWindows.xaml
[sourcecode language="XML"]
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"
x:Class="SimpleProxy.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640" Height="480" Background="{x:Null}" Foreground="{x:Null}" WindowStyle="None" AllowsTransparency="True">
<Grid x:Name="LayoutRoot">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.739*"/>
<ColumnDefinition Width="0.261*"/>
</Grid.ColumnDefinitions>
<Rectangle x:Name="OuterWindow" Margin="177,180,-8.04,175" Stroke="Black" RadiusY="16.5" RadiusX="16.5" MouseDown="OuterWindow_MouseDown">
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0">
<GradientStop Color="#FF7752E2" Offset="0"/>
<GradientStop Color="#FF4C0FF9" Offset="1"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<TextBlock x:Name="LabelStateText" TextWrapping="Wrap" Text="Current State :" Foreground="White" FontSize="18.667" Margin="209,222.666,141.436,232.503" d:LayoutOverrides="Height"/>
<TextBlock x:Name="LabelStateOnOff" HorizontalAlignment="Right" TextWrapping="Wrap" Text="OFF" Foreground="#FF8F9F7E" FontSize="64" Margin="0,193,8,201.873" d:LayoutOverrides="Height" TextAlignment="Center"/>
<Button x:Name="ButtonChangeState" Content="Change State" Margin="209,0,141.436,201.873" Click="ButtonChangeState_Click" RenderTransformOrigin="0.085,0.675" VerticalAlignment="Bottom"/>
</Grid>
</Window>
[/sourcecode]
Kode-kode diatas merupakan XAML code yang berperan sebagai “tampilan” dari suatu program. Sebenarnya kode diatas tidak terlalu penting untuk di perhatikan karena dapat di-generate oleh Visual Studio secara langsung dengan beberapa tambahan yang pada akhirnya akan menjadi seperti ini :

Sekarang kita akan lanjut ke bagian Code-Behind dari program ini, kode-kodenya dapat dilihat berikut ini :
MainWindow.xaml.cs
[sourcecode language="CSharp"]
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using Microsoft.Win32;
namespace SimpleProxy
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
this.InitializeComponent();
CheckProxy();
// Insert code required on object creation below this point.
}
/// <summary>
/// This method will on/off the proxy setting on the Internet Setting
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ButtonChangeState_Click(object sender, System.Windows.RoutedEventArgs e)
{
RegistryKey cUser = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true);
if(int.Parse(cUser.GetValue("ProxyEnable").ToString()) == 1 )
{
cUser.SetValue("ProxyEnable", 0);
CheckProxy();
}
else
{
cUser.SetValue("ProxyEnable", 1);
CheckProxy();
}
}
/// <summary>
/// This method will check the update of changement in proxy
/// </summary>
public void CheckProxy()
{
RegistryKey proxyRegKey = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true);
int enabled = int.Parse(proxyRegKey.GetValue("ProxyEnable").ToString());
if(enabled == 1)
{
LabelStateOnOff.Text = "ON";
}
else
{
LabelStateOnOff.Text = "OFF";
}
}
/// <summary>
/// This method enable drag function in the window
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OuterWindow_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
this.DragMove();
}
}
}
[/sourcecode]
Diatas terdapat 3 method :
- ButtonChangeState_Click,
- CheckProxy,
- dan OuterWindow_MouseDown,
ButtonChangeState_Click
akan dipanggil ketika User menekan pada tombol “change state” pada program, dan method ini akan berfungsi mengubah state proxy Internet Explorer menjadi aktif atau tidak.
CheckProxy
adalah method yang berfungsi untuk mengubah tampilan program ketika terjadi perubahan pada Registry proxy, perubahan tersebut berupa text dimana bila proxy menjadi aktif maka “ON” yang akan tampil, bila tidak aktif maka akan menjadi “OFF”
OuterWindow_MouseDown
berfungsi supaya program menjadi drag-able
yang menarik buat gw dalam pemrograman kali ini adalah bagaimana cara mengakses register ( maklum baru tahu ^^;), jadi cara mengaksesnya itu dengan mengetik berikut :
[sourcecode language="CSharp"]
RegistryKey proxyRegKey = Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Internet Settings", true);
[/sourcecode]
RegistryKey adalah suatu Class yang terdapat pada Library Microsoft.Win32 dan merupakan class, OpenSubKey berfungsi untuk mendapatkan instansi dari RegistryKey, pasti semuanya yang pernah ngutak-atik windows pernah membuka regedit.exe pada windows, nah dengan RegistryKey kita dapat mengakses setiap subkeys
Dengan semua kode diatas, program seharusnya dapat berjalan dengan baik, permasalahan yang timbul dengan merombak registry adalah masalah security, penulis pernah mendengar bahwa seharusnya ada cara yang lebih baik untuk dapat mengakses register.
Untuk tutorial ini gw akhiri disini, mudah-mudahan bermanfaat
Avoir
