Monday, May 23, 2011

Source Code untuk Menjalankan Start Menu dengan Memanfaatkan SendKeys

  No comments
Berikut ini adalah cara yang teman - teman dapat gunakan untuk menjalankan start menu. Dengan melakukan hal ini, seolah - olah teman - teman melakukan klik pada tombol start windows sehingga menampilkan start menu. Untuk melakukan ini kita menggunakan function sendkeys untuk mengirimkan kombinasi tombol CTRL + ESC sehingga start menu dapat ditampilkan. Berikut ini source codenya :

objShell = CreateObject("WScript.Shell")
objShell.SendKeys("^{esc}")

Function SendKey digunakan untuk mengirimkan perintah yang berupa tombol yang ada di keyboard, sehingga kita bisa menggantikan penekanan tombol di keyboard dengan syntak. Bila teman - teman ingin melakukan percobaan atau mau bereksplorasi dengan fungsi Sendkeys ini silahkan ganti syntak yang berwarna merah dengan daftar parameter penekanan tombol di bawah ini :

  • BACKSPACE = {BACKSPACE}, {BS}, or {BKSP}
  • BREAK = {BREAK}
  • CAPS LOCK = {CAPSLOCK}
  • DEL or DELETE = {DELETE} or {DEL}
  • DOWN ARROW = {DOWN}
  • END = {END}
  • ENTER = {ENTER} or ~
  • ESC = {ESC}
  • HELP = {HELP}
  • HOME = {HOME}
  • INS or INSERT = {INSERT} or {INS}
  • LEFT ARROW = {LEFT}
  • NUM LOCK = {NUMLOCK}
  • PAGE DOWN = {PGDN}
  • PAGE UP = {PGUP}
  • PRINT SCREEN = {PRTSC}
  • RIGHT ARROW = {RIGHT}
  • SCROLL LOCK = {SCROLLLOCK}
  • TAB = {TAB}
  • UP ARROW = {UP}
  • F1 = {F1}
  • CTRL = ^
  • ALT = %
  • SHIFT = +
  • Huruf, angka atau karakter lain bisa langsung ketikkan karakter yg dimaksud, misal ingin mengirim tombol CTRL+A maka tinggal berikan parameter ^A 
Sebenarnya function SendKeys dapat digantikan dengan syntak bawaan Visual Foxpro yaitu KEYBOARD. Dimana format dari function KEYBOARD adalah sebagai berikut :

KEYBOARD cKeyboardValue

Contoh :

KEYBOARD "{CTRL+LEFTARROW}" 
KEYBOARD "{CTRL+A}"

Daftar dari parameter untuk cKeyboardValue adalah sebagai berikut :

  • LEFTARROW = LEFTARROW
  • RIGHTARROW = RIGHTARROW
  • UPARROW = UPARROW
  • DOWNARROW = DNARROW
  • HOME = HOME
  • END = END
  • PAGE UP = PGUP
  • PAGE DOWN = PGDN
  • DEL = DEL
  • BACKSPACE = BACKSPACE
  • SPACEBAR = SPACEBAR
  • INS = INS
  • TAB = TAB
  • SHIFT+TAB = BACKTAB
  • Left Brace = LBRACE
  • Right Brace = RBRACE
  • ENTER = ENTER
  • F1 to F12 = F1, F2, F3 ... 
  • CTRL+F1 to CTRL+F12 = CTRL+F1, CTRL+F2 ... 
  • SHIFT+F1 to SHIFT+F12 = SHIFT+F1, SHIFT+F2 ... 
  • ALT+F1 to ALT+F12 = ALT+F1, ALT+F2, ALT+F3 ... 
  • ALT+0 to ALT+9 = ALT+0, ALT+1, ALT+2 ... 
  • ALT+A to ALT+Z = ALT+A, ALT+B, ALT+C ... 
  • CTRL+LEFT ARROW = CTRL+LEFTARROW
  • CTRL+RIGHT ARROW = CTRL+RIGHTARROW
  • CTRL+HOME = CTRL+HOME
  • CTRL+END = CTRL+END
  • CTRL+PAGE UP = CTRL+PGUP
  • CTRL+PAGE DOWN = CTRL+PGDN
  • CTRL+A TO CTRL+Z = CTRL+A, CTRL+B, CTRL+C ... 
  • CTRL+0 = CTRL+0
  • RIGHT MOUSE BUTTON = RIGHTMOUSE
  • LEFT MOUSE BUTTON = LEFTMOUSE
  • MOUSE BUTTON = MOUSE
  • ESC = ESC
Meskipun sebenarnya function Keyboard bawaan Visual Foxpro telah lengkap dan bisa menggantikan function SendKeys, akan tetapi untuk menjalankan start menu yang memerlukan kombinasi tombol CTRL+ESC hanya bisa dilakukan oleh function SendKeys sedangkan function Keyboard tidak diijinkan untuk melakukan perintah dengan kedua kombinasi tombol tersebut.


SELAMAT MENCOBA...!!

Sunday, May 22, 2011

Source Code untuk Mengubah Password Login Windows

  No comments
Berikut ini adalah cara yang teman - teman dapat gunakan untuk mengubah password dari username yang digunakan untuk login ke Windows. Cara ini menggunakan fasilitas net user yang dimiliki oleh command windows yang dapat digunakan untuk mengubah password berdasarkan username yang ada. Bila teman - teman ingin menggunakan dan memasukkan modul ini ke dalam aplikasi yang dibuat dari Visual Foxpro, silahkan coba source code di bawah ini :

cUSR="administrator"
cPSW="foxpromania"
Execscript("! net user "+cUSR+" "+cPSW)

Silahkan atur username yang mau diubah passwordnya melalui variable cUSR, dalam contoh diatas yang mau diubah passwordnya adalah username administrator. Dan silahkan atur password baru bagi username tersebut melalui variable cPSW, dalam contoh diatas password baru yang diberikan ke username administrator adalah foxpromania. Setelah menjalankan syntak diatas, silahkan log off windows dan login dengan password baru. Silahkan coba tetapi hati - hati jangan sampai lupa passwordnya....!!



SELAMAT MENCOBA...!!

Saturday, May 21, 2011

Source Code untuk Mengatur Default Home Page di Internet Explorer

  No comments
Berikut ini adalah cara yang dapat teman - teman gunakan untuk mengatur Home Page dari Internet Explorer. Dengan melakukan hal ini maka setiap user yang membuka Internet Explorer akan melihat halaman Website yang telah diatur sebagai Home Page. Salah satu fungsi dari melakukan pengaturan Home Page ini adalah membantu mempromosikan produk atau jasa yang teman - teman punya melalui aplikasi yang telah dibuat.

Jika teman - teman memasukkan modul ini ke dalam aplikasi yang teman - teman buat, dan mengarahkan alamat Home Page ke website atau blog yang teman - teman punyai, maka otomatis setiap user yang pernah menjalankan program atau aplikasi yang teman - teman buat, akan selalu membuka halaman blog atau website teman - teman ketika mereka menjalankan Internet Explorer. Dari situlah teman - teman dapat menjadikan ini sebagai cara untuk membantu mempromosi kan produk atau jasa yang teman - teman miliki. 

Untuk melakukan pengaturan Home Page secara otomatis melalui source code, teman - teman bisa menggunakan syntak di bawah ini :

objWshShell = CreateObject("WScript.Shell")
strHomePage = "http://www.foxpromania.co.cc"
objWshShell.RegWrite("HKCU\Software\Microsoft\"+;
 "Internet Explorer\Main\Start Page", strHomePage)

Silahkan isikan variable strHomePage dengan alamat dari blog atau website yang teman - teman miliki.



SELAMAT MENCOBA...!!

Friday, May 20, 2011

Source Code untuk Mengetahui Persentase CPU yang terpakai

  No comments
Berikut ini adalah cara yang teman - teman dapat gunakan untuk mengetahui jumlah persentase dari CPU yang terpakai. Cara manual untuk melihat ini adalah dengan membuka Windows Task Manager dan kemudian pilih tab Performance, di bagian CPU Usage akan terlihat presentase pemakaian CPU. Bila teman - teman ingin mendapatkan data tersebut secara otomatis melalui syntak maka dapat menggunakan syntak di bawah ini :

strLineProcessorTime=""
objWMIService = GetObject("winmgmts:\\.\root\CIMV2") 
colItems = objWMIService.ExecQuery(;
 "SELECT * FROM Win32_PerfFormattedData_PerfOS_Processor"+;
 " WHERE Name = '_Total'") 
For Each objItem In colItems    
 strLineProcessorTime = strLineProcessorTime + " " +;
  objItem.PercentProcessorTime 
endfor
strLineProcessorTime=ROUND(val(strLineProcessorTime),0)
?strLineProcessorTime

Dengan menjalankan syntak diatas, maka teman - teman akan mendapatkan jumlah nilai dari CPU yang terpakai dalam satuan persen yang sudah di tampung dalam variable strLineProcessorTime. Bila teman - teman ingin mengembangkan kreasi lagi, untuk dapat mengetahui jumlah nilai pemakaian CPU secara real time, maka bisa menaruh syntak diatas ke dalam procedure timer di kontrol timer dan kemudian menampilkan nilainya ke dalam grafik atau progress bar.


SELAMAT MENCOBA...!!

Thursday, May 19, 2011

Source Code untuk Mendapatkan Informasi MAC Address

  No comments
Berikut ini adalah cara yang dapat teman - teman gunakan bila ingin mendapatkan informasi mengenai MAC Address yang ada di Network Card di suatu PC atau Laptop. Sebelumnya mungkin teman - teman harus tau dulu apa itu MAC Address. MAC Address (Media Access Control Address) adalah sebuah alamat jaringan yang diimplementasikan pada lapisan data-link dalam tujuh lapisan model OSI, yang merepresentasikan sebuah node tertentu dalam jaringan. Dalam sebuah jaringan berbasis Ethernet, MAC address merupakan alamat yang unik yang memiliki panjang 48-bit (6 byte) yang mengidentifikasikan sebuah komputer, interface dalam sebuah router, atau node lainnya dalam jaringan. MAC Address juga sering disebut sebagai Ethernet address, physical address, atau hardware address.

MAC Address ini biasanya digunakan untuk mengidentifikasi sebuah PC atau laptop yang terkonek ke sebuah jaringan. Dalam beberapa jaringan privat biasanya para administrator jaringan akan menggunakan MAC Address ini untuk mengidentifikasi siapa saja yang boleh mengakses ke jaringan tertentu. Bila teman - teman ingin mencoba mendapatkan data MAC Address di dalam PC atau Laptop melalui source code, bisa menggunakan syntak berikut ini :

cMacAddress=""
objWMIService = GetObject("winmgmts:"+;
 "{impersonationLevel=impersonate}!\\.\root\cimv2")
colItems = objWMIService.ExecQuery(;
 "Select * From Win32_NetworkAdapterConfiguration")
For Each objItem in colItems
 IF varTYPE(objItem.MACAddress)="C"
  cMacAddress=cMacAddress+objItem.MACAddress+","
  endif
endfor
?cMacAddress

Setelah menjalankan syntak diatas maka teman - teman telah mendapatkan informasi MAC Address yang sudah ditampung di dalam variable cMacAddress. Perlu diketahui setiap PC atau Laptop mungkin akan memiliki MAC Address lebih dari satu, tergantung dari jumlah Network Card yang terinstal. Bila terdapat lebih dari satu MAC Address maka di variable cMacAddress juga akan berisi lebih dari satu MAC Address yang dipisahkan dengan koma (,).


SELAMAT MENCOBA...!!

Wednesday, May 18, 2011

Alternatif Cara untuk Menjalankan Aplikasi atau File Eksternal dari VFP

  No comments
Berikut ini adalah alternatif cara yang teman - teman dapat gunakan untuk menjalankan Aplikasi atau File Eksternal dari Visual Foxpro. Ada beberapa alternatif source code yang dapat digunakan untuk melakukan hal ini, baik dari syntak bawaan Visual Foxpro, melalui Winapi atau melalui script objek bawaan VBScript. Mungkin kita langsung aja mencoba alternatif - alternatif tersebut. Berikut ulasannya :

Cara Pertama (Menggunakan Syntak Bawaan Visual Foxpro)
Source code bawaan Visual Foxpro yang digunakan menjalankan aplikasi dan file eksternal adalah sebagai berikut :

[ RUN / ! ] /N (Nama Aplikasi Eksternal)

Contoh 1

RUN /N Notepad

Contoh 2

! /N "C:\Program Files\Adobe\Reader 9.0\Reader\Acrord32.exe" ;
 "C:\Tutorial.pdf"

Beberapa hal yang harus diperhatikan dalam menggunakan syntak bawaan Visual Foxpro dengan cara pertama diatas adalah sebagai berikut :

  1. Klausa RUN bisa diganti dengan
  2. Klausa /N artinya adalah No Waiting, bila teman - teman menghilangkan klausa tersebut maka aplikasi eksternal yang dijalankan akan diiringi dengan sebuah konsol, dan konsol tidak akan hilang sampai teman - teman menutup aplikasi tersebut.
  3. (Nama Aplikasi Eksternal) adalah sebuah aplikasi atau file dengan ekstensi exe. Bila aplikasi tersebut adalah bawaan windows atau sudah diregistrasikan maka teman - teman bisa langsung mencantumkan nama aplikasi tersebut seperti pada Contoh 1. Akan tetapi secara normal teman - teman harus mencantumkan path lengkap untuk memanggilnya seperti Contoh 2, saat menjalankan aplikasi acrobat reader.
  4. Bila teman - teman ingin menjalankan file eksternal seperti Contoh 2 yaitu ingin menjalankan file dengan format PDF maka teman - teman harus mencantumkan default aplikasi untuk membaca file tersebut dan kemudian baru diikuti nama file eksternal yang ingin dibuka.

Cara Kedua (Menggunakan Function Shellexecute di WinAPI)
Alternatif lain dengan lebih banyak pilihan adalah dengan menggunakan function Shellexecute di WinAPI seperti di bawah ini :

&& Deklarasi ini harus dijalankan dulu sebelum menjalankan contoh - contoh di bawah
DECLARE INTEGER ShellExecute IN shell32;
    INTEGER hwnd,; 
    STRING  lpOperation,; 
    STRING  lpFile,; 
    STRING  lpParameters,;  
    STRING  lpDirectory,; 
    INTEGER nShowCmd

Contoh 1

ShellExecute(0, "Open", "Notepad", "", "", 1)

Contoh 2

ShellExecute(0, "Open", ""C:\Tutorial.pdf"", "", "", 1)

Dengan menggunakan cara kedua ini kita akan lebih banyak mempunyai opsi dalam melakukan pemanggilan aplikasi file eksternal. Berikut kelebihannya :

  1. Tidak harus menyertakan default aplikasi untuk menjalankan sebuah file, contohnya bila ingin membuka file pdf kita tinggal tentukan aja lokasi dan nama filenya tanpa menentukan letak default aplikasi untuk membuka file pdf tersebut seperti cara pertama.
  2. Saat membuka aplikasi ada berbagai pilihan tampilan yang ditunjukkan pada angka 1 yang berwarna merah, pilhan selengkapnya adalah (0) Hide - Menjalankan aplikasi tetapi tidak menampakkan jendela aplikasinya, (1) Normal - Menjalankan aplikasi dengan tampilan default, (2) Minimized - Menjalankan aplikasi dengan jendela di Minimize, (3) Maximized - Menjalankan aplikasi dengan jendela di Maximized
  3. Selain itu teman - teman juga bisa memberikan parameter dan default directory untuk menjalankan aplikasi jika memang diperlukan.

Cara Ketiga (Menggunakan Objek Wscript Shell)
Alternatif terakhir untuk menjalankan aplikasi atau file eksternal ini menggunakan Objek Wscript Shell. Berikut cara penggunaannya :

Contoh 1

cRun=CREATEOBJECT("wscript.shell")
cRun.Run("notepad",1)

Contoh 2

cRun=CREATEOBJECT("wscript.shell")
cRun.Run("c:\tutorial.pdf",1)

Dengan cara yang ketiga ini teman - teman tetap bisa mengatur tampilan jendela aplikasi berdasarkan angka 1 yang berwarna merah dan selain itu cara pemanggilan file eksternal juga tidak harus disertai pemanggilan default aplikasinya. 

Untuk menentukan cara mana yang akan digunakan terserah teman - teman mana yang dianggap lebih sederhana dan mudah cara pakainya. Yang tepenting ada alternatif cara yang dapat dipilih, jadi jika satu cara dirasa tidak sesuai dengan keinginan maka bisa mencoba cara yang lain.



SEMOGA BERMANFAAT...!! 

Tuesday, May 17, 2011

Source Code untuk Mengetahui Nama & Kapasitas Processor yang Dipakai

  No comments
Berikut ini adalah cara yang dapat teman - teman gunakan untuk mengetahui Nama dan Kapasitas Processor yang sedang dipakai di dalam PC atau Laptop. Cara manual untuk melakukan ini sebenarnya mudah, hanya dengan melakukan klik kanan di My Computer - Properties. Di sana ada informasi mengenai nama dan kapasitas memory yang dimiliki oleh Processor yang sedang dipakai. Tetapi bila teman - teman ingin mendapatkan informasi mengenai Nama dan Kapasitas Processor yang sedang dipakai tersebut secara otomatis, yang nantinya mungkin dapat teman - teman gunakan sebagai pedoman pada aplikasi yang teman - teman buat maka bisa menggunakan source code di bawah ini :

objWMIService = GetObject("winmgmts:" ;
 + "{impersonationLevel=impersonate}!\\" + "."+ "\root\cimv2")
colItems  =  objWMIService.ExecQuery( ;
 "Select  *  from  Win32_Processor")
For  Each  objItem  in  colItems
  cName = objItem.Name
Endfor

Variable cName telah terisi dengan informasi mengenai Nama dan Kapasitas Processor yang sedang teman - teman pakai. Sebagai tambahan sebenarnya teman - teman bisa mendapatkan informasi lain mengenai Processor yang sedang dipakai dengan menggunakan source code bawaan Visual Foxpro di bawah ini .

GETENV("PROCESSOR_ARCHITECTURE")
GETENV("PROCESSOR_IDENTIFIER")
GETENV("PROCESSOR_LEVEL")
GETENV("NUMBER_OF_PROCESSORS")
GETENV("PROCESSOR_REVISION")



SELAMAT MENCOBA...!!

Monday, May 16, 2011

Source Code untuk Melakukan Copy File dengan Banyak Opsi

  No comments
Berikut ini adalah cara yang dapat teman - teman gunakan untuk melakukan Copy Files dengan opsi pengaturan yang lebih beragam. Sehingga kita bisa menentukan saat melakukan Copy Files apa jenis opsi yang ingin kita pilih melalui source code, misalnya menampilkan progress pengCopyan, melakukan overwrite secara otomatis tanpa konfirmasi dan pengaturan - pengaturan lain.

Di dalam Visual Foxpro sebenarnya sudah ada source code bawaan yang dapat digunakan untuk melakukan Copy Files yaitu :

COPY FILE FileName1 TO FileName2

Contoh :

COPY FILE "C:\testfile.txt" TO "D:\testfilecopy.txt"

Contoh syntak diatas digunakan untuk  mengcopy file C:\testfile.txt ke D:\testfilecopy.txt.

Syntak diatas sebenarnya telah bisa memenuhi kebutuhan, bila ingin melakukan pengCopyan Files lewat source code. Tetapi bila kita menggunakan syntak bawaan Visual Foxpro diatas terdapat beberapa hal yang terasa kurang bila dibandingkan jika kita melakukan Copy Files secara manual dengan menggunakan Windows Explorer, yaitu :

  1. Tidak bisa memunculkan progress pengCopyan Files. Bila file berukuran kecil mungkin hal ini tidak menjadi masalah, tetapi bila File berukuran besar sampai ratusan MB ke atas maka akan menjadi masalah karena nantinya aplikasi terkesan hang karena menunggu Copy Files selesai, sedangkan user tidak tau sudah sampai mana progress pengCopyan.
  2. Opsi konfirmasi pengCopyan seperti gambar di bawah ini, beserta cara menentukan opsi secara otomatis juga tidak bisa diaktifkan, meski mungkin dengan tambahan coding akal - akalan bisa melakukannya tetapi opsi default untuk hal ini tidak tersedia.
Berdasarkan hal itu, maka jika teman - teman ingin melakukan Copy Files yang dapat memanfaatkan semua opsi seperti layaknya melakukan Copy Files secara manual dengan Windows Explorer maka dapat menggunakan alternatif syntak di bawah ini :

cFile="d:\testfile.rar"
cDir="g:\"

objShell = CreateObject("shell.application")
objFolder = objShell.NameSpace(cDir)

if !isnull(objFolder)
 if File(cFile)
  objFolder.CopyHere(cFile,0)
 else
  Messagebox("File Sumber Invalid..!!, 0+16,"Error")
 endif  
else
 Messagebox("Direktori target invalid..!!, 0+16,"Error")
endif

Sebenarnya syntak dasar untuk melakukan mengCopyan Files dengan source code diatas, hanyalah terdiri dari 3 baris syntak berikut ini :

objShell = CreateObject("shell.application")
objFolder = objShell.NameSpace(cDir)
objFolder.CopyHere(cFile,0)

Akan tetapi pada source code diatas dibuat lebih lengkap untuk dapat mendeteksi apakah File sumber yang akan di Copy benar - benar ada atau valid, dan juga apakah lokasi Folder untuk meletakkan hasil pengCopyan benar - benar ada atau tidak. 

Hal - hal yang perlu diperhatikan dalam menggunakan source code untuk melakukan pengCopyan diatas adalah sebagai berikut :

  1. Tentukan lokasi File yang akan di Copy dengan mengatur variable cFile, kemudian tentukan lokasi Folder untuk meletakkan hasil pengCopyan dengan mengatur variable cDir. 
  2. Untuk mengatur pilihan opsi, silahkan ubah angka 0 yang terdapat di dalam Function CopyHere dengan daftar paramater yang di dapat dari MSDN Microsoft di bawah ini

SEMOGA BERMANFAAT...!!

Sunday, May 15, 2011

Menampilkan Aplikasi Microsoft Office di Dalam Form

  No comments
Bila di posting Cara Mudah Menampilkan Dokumen PDF di Form, kita telah mencoba untuk menampilkan dokumen pdf ke dalam form, berikut ini kita akan mencoba membuka dokumen Microsoft Office (doc, docx, xls, xlsx, ppt, ptx) ke dalam form. Cara yang digunakan secara garis besar hampir sama dengan menampilkan dokumen pdf yaitu memanfaatkan Active X Microsoft Web Browser, tetapi ada beberapa hal lain yang harus dilakukan khususnya bila aplikasi Microsoft Office yang terinstal di dalam Sistem Operasi adalah Microsoft Office 2007 keatas. Di bawah ini adalah contoh tampilan form yang digunakan untuk menampilkan Aplikasi Microsoft Office Word.
Berikut ini adalah langkah - langkah yang teman - teman dapat ikuti, untuk dapat menggunakan kontrol ActiveX Microsoft Web Browser untuk menampilkan dokumen Microsoft Office :

  1. Bila versi Microsoft Office yang terinstal adalah versi 2007 ke atas, maka teman - teman harus melakukan editing registry dengan membuka atau melakukan klik ganda pada file reg yang bisa teman - teman dapatkan di link di bawah ini.

  2. Kemudian kita tambahkan dulu kontrol ActiveX Microsoft Web Browser dengan cara menambahkan kontrol ActiveX Control (OleControl) ke dalam form, seperti gambar di bawah ini.
  3. Setelah tampil jendela Insert Object, pilih Microsoft Web Browser seperti gambar di bawah ini.
  4. Setelah di tambahkan di form, maka kontrol Microsoft Web Browser akan tampak seperti gambar di bawah ini.
  5. Selanjutnya sesuaikan ukuran dari olecontrol (Microsoft Web Browser) diatas sesuai keinginan dan sebagai contoh tambahkan satu Commandbutton di bawahnya seperti gambar diatas dan di procedure click milik Commanbutton tersebut ketikkan source code berikut ini.

    thisform.olecontrol2.navigate(GETFILE;
     ("Microsoft Office Files:xls,xlsx,doc,docx,ppt,pptx"))

    Syntak diatas digunakan untuk memilih file dokumen Microsoft Office yang terdiri dari dokumen Office Word (doc,docx), Excel (xls,xlsx) & PowerPoint (ppt,pptx) dan kemudian menampikannya ke dalam form melalui kontrol ActiveX Microsoft Web Browser.
  6. Jalankan form dan kemudian klik CommandButton untuk memilih dokumen Microsoft Office yang ingin dibuka.


SELAMAT MENCOBA..!!

Saturday, May 14, 2011

Membuat Aplikasi Hanya Bisa Berjalan Sekali (One Instance Application)

  No comments
Mungkin sebelumnya teman - teman perlu tau dulu apa yang dimaksud "Aplikasi Hanya Bisa Berjalan Sekali (One Instance Application)". Maksud hal itu adalah membuat agar user hanya bisa menjalankan sebuah aplikasi sekali saja. Secara default aplikasi yang telah teman - teman hasilkan dengan melakukan build project bukan merupakan One Instance Application, hmmm.....maksudnya seperti ini, mungkin bisa di coba, setelah teman - teman melakukan build project dan menghasilkan sebuah file EXE, silahkan klik atau jalankan file EXE tersebut. Hasilnya pasti akan tampil form utama dari aplikasi yang teman - teman buat. Biarkan dulu form utama tersebut terbuka dan kemudian jalankan lagi EXE tersebut, apa yang terjadi???, ternyata akan tampil 2 form utama atau dua aplikasi yang sama. Hal itulah yang dimaksud aplikasi yang teman - teman buat bukan merupakan One Instance Application karena teman - teman bisa menjalankan EXE atau aplikasi lebih dari satu kali sehingga menjalankan banyak Instance dengan aplikasi yang sama.

Salah satu contoh One Intance Application adalah aplikasi Yahoo Messenger, karena berapa kalipun teman - teman menjalankan aplikasi tersebut maka form Yahoo Messenger yang tampil pasti hanya satu buah, kecuali bila teman - teman melakukan sedikit otak - atik di registry baru form Yahoo Messeger bisa ditampilkan lebih dari satu kali.

Dalam kesempatan kali ini kita akan mencoba membuat agar aplikasi yang kita buat bisa menjadi One Instance Application seperti Yahoo Messenger. Caranya sangat mudah karena sudah ada kontrol vcx yang dapat digunakan untuk membuat hal ini. Sebelum mencobanya silahkan download dulu file vcxnya di link di bawah ini :


Setelah mendownload dan mengekstrak One Instance VCX di atas, ikuti langkah - langkah berikut untuk menggunakannya.

  1. Tambahkan One Instance VCX  ke dalam Fom Utama (Main Form) dari project aplikasi yang teman - teman buat, dengan cara, di dalam Form Controls - klik View Classes - pilih Add seperti gambar di bawah ini. Kemudian pada jendela Open arahkan ke One Instance VCX, yang telah teman - teman download tadi.
  2. Setelah One Instance VCX tampil di dalam Form Controls, kemudian tambahkan ke dalam form. Seperti gambar di bawah ini. 
  3. Setelah itu teman - teman tinggal mengatur property OneInstance dari kontrol One_Instance tersebut dengan nilai .T.
  4. Untuk melihat hasilnya, teman - teman harus membuild project aplikasi dari Form Utama (Main Form) tersebut dan kemudian coba klik atau jalankan EXE hasil build. Jika setelah dijalankan berkali - kali hanya tetap satu aplikasi atau satu form utama aja yang jalan, maka Aplikasi yang teman -teman buat sudah menjadi One Instance Application.


SELAMAT MENCOBA..!!

Friday, May 13, 2011

Membuat Form Bergetar dengan Kontrol Buzz

  No comments
Berikut ini adalah cara yang dapat teman - teman gunakan untuk membuat efek bergetar pada sebuah form. Bagi teman - teman yang sering menggunakan Yahoo Messenger pasti tidak asing lagi dengan efek form yang bergetar, bila salah satu teman kita mengirimkan pesan BUZZ. Untuk membuat form bergetar disini kita akan menggunakan Kontrol vcx Buzz. Untuk menyingkat waktu kita langsung aja mencobanya. Sebelumnya silahkan download dulu Kontrol vcx Buzz nya di link di bawah ini :


Setelah mendownload dan mengekstrak Kontrol Buzz di atas, ikuti langkah - langkah berikut untuk menggunakannya.

  1. Buat sebuah form dan kemudian di dalam Form Controls - klik View Classes - pilih Add seperti gambar di bawah ini. Kemudian pada jendela Open arahkan ke Kontrol Buzz, yang telah teman - teman download tadi.
  2. Setelah Kontrol Buzz tampil di dalam Form Controls, kemudian tambahkan ke dalam form. Setelah ditambahkan di dalam form Kontrol Buzz akan nampak seperti Kontrol Timer, karena memang Kontrol Buzz tersebut dibuat dengan Parent Class nya adalah Kontrol Timer.
  3. Setelah Kontrol Buzz berada di dalam form, teman - teman bisa mengaktifkan efek getar dengan mengakses Method Buzz yang dimiliki Kontrol Buzz tersebut. Sebagai contoh mungkin teman - teman bisa tambahkan sebuah CommandButton di dalam form dan kemudian di Procedure Click milik CommandButton tersebut isikan dengan Syntak thisform.buzz1.buzz()
  4. Jalankan form dan kemudian tekan CommandButton yang tadi telah ditambahkan untuk membuat form bergetar seperti layaknya mengirimkan pesan BUZZ di Yahoo Messenger.


SELAMAT MENCOBA..!!

Thursday, May 12, 2011

Membuat Animasi Layar Berbintik

  No comments
Berikut ini adalah salah satu komponen ActiveX yang dapat teman - teman gunakan untuk membuat tampilan layar agar dipenuhi dengan bintik - bintik atau dengan sebuah kata. ActiveX ini mungkin tidak terlalu berguna bagi aplikasi teman - teman, tetapi mungkin bisa digunakan untuk mengembangkan kreasi atau mungkin pelengkap bagi aplikasi yang teman - teman buat. Hasil dari menjalankan animasi layar berbintik akan mengakibatkan layar monitor teman - teman akan dipenuhi bintik atau kata seperti gambar di bawah ini.
Layar Dipenuhi Bintik
Layar Dipenuhi Kata
Sebelum kita mencoba untuk menggunakan kontrol ActiveX Animasi_layar ini, silahkan download dulu file OCX nya di link di bawah ini :


Setelah mendownload ActiveX Animasi_Layar tersebut dan kemudian mengekstraknya, ikuti langkah - langkah berikut ini untuk menggunakannya :

  1. Registrasikan dulu kontrol ActiveX tersebut dengan cara mengetikkan syntak di bawah ini di dalam Command Window dan kemudian tekan enter.
    ! /n regsvr32 "I:\foxpro\Animasi_layar.ocx"
    Ubah I:\foxpro\ dan sesuaikan dengan lokasi (path) dimana teman - teman meletakkan file "Animasi_layar.ocx" di Local Disk. Dan bila proses registrasi ocx berhasil maka akan keluar pesan seperti gambar di bawah ini.
  2. Selanjutnya buat form dan tambahkan kontrol ActiveX Animasi_layar dengan cara menambahkan kontrol ActiveX Control (OleControl) ke dalam form, seperti gambar di bawah ini.
  3. Setelah tampil jendela Insert Object, pilih Animasi_Layar.Bintik seperti gambar di bawah ini.
  4. Setelah di tambahkan di form, maka kontrol Animasi_Layar.Bintik akan tampak seperti gambar di bawah ini.
  5. Setelah kontrol Animasi_Layar.Bintik berhasil ditambahkan ke dalam form, pertama kali atur property Interval dari olecontrol (Animasi_Layar.Bintik) tersebut dengan angka antara 1 - 200, semakin kecil nilai Interval yang diberikan maka semakin cepat animasi ditampilkan. 
  6. Setelah mengatur property Interval kemudian gunakan syntak - syntak di bawah ini untuk mengatur animasi.

    && Menampilkan Animasi Bintik - Bintik di Layar
    thisform.olecontrol1.showanim(1,0,"")

    && Menampilkan Animasi Bintik Kata - Kata di Layar
    thisform.olecontrol1.showanim(1,1,"Foxpro Mania")

    && Menghentikan Animasi
    thisform.olecontrol1.showanim(0,0,"")

    Function showanim() milik olecontrol (Animasi_Layar.Bintik) ini lah yang digunakan untuk mengatur penampilan animasi di layar.


SELAMAT MENCOBA...!!

Wednesday, May 11, 2011

Source Code untuk Mengetahui Kapasitas Memory (RAM) yang Terpakai & Tersisa

  No comments
Berikut ini adalah source code yang teman - teman bisa gunakan untuk mengetahui ukuran jumlah kapasitas total, kapasitas yang sedang terpakai dan kapasitas yang masih tersedia dari memory (RAM) yang ada di dalam sebuah PC atau Laptop. Cara manual untuk melihat hal ini adalah dengan membuka TaskManager dan kemudian pilih tab Performance. Di sana akan terlihat semua informasi yang berhubungan dengan kapasitas memory (RAM). Tetapi bila teman - teman membutuhkan modul yang bisa mendapatkan data mengenai kapasitas memory (RAM) secara otomatis, teman - teman bisa menggunakan source code di bawah ini :

strComputer = "."
objWMIService = GetObject("winmgmts:\\" + ;
 strComputer + "\root\CIMV2")
colCSItems = objWMIService.ExecQuery;
 ("SELECT * FROM Win32_ComputerSystem")
For Each objCSItem In colCSItems
  nTotalRam=VAL(objCSItem.TotalPhysicalMemory)
endfor
colOSItems = objWMIService.ExecQuery;
 ("SELECT * FROM Win32_OperatingSystem")
For Each objOSItem In colOSItems
  nFreeRam=VAL(objOSItem.FreePhysicalMemory)*1024
endfor
nUsageRam=nTotalRam-nFreeRam

Dengan menjalankan syntak diatas maka teman - teman tinggal mengakses variable nTotalRam untuk mengetahui kapasitas total dari memory yang ada di PC atau Laptop, variable nFreeRam untuk mengetahui kapasitas memory yang masih tersisa dan bisa digunakan serta variable nUsageRam untuk mengetahui kapasitas memory yang sedang terpakai.

Sebagai catatan semua variable tersebut bertype data numeric dan masih dalam satuan byte. Bila ingin merubah ke dalam Kilobyte, Megabyte atau Gigabyte silahkan kembangkan kreasi teman - teman untuk mengkonversikannya dengan pedoman :

  • 1 Kilobyte = 1024 byte
  • 1 Megabyte = 1048576 byte
  • 1 Gigabyte = 1073741824 byte


SELAMAT MENCOBA...!!

Monday, May 9, 2011

Membuat Background Form yang Mengikuti Gambar di Wallpaper

  No comments
Berikut ini, kita akan menggunakan sebuah ActiveX yang dapat digunakan untuk menghias background dari form yang teman - teman buat. Saat teman - teman memakai kontrol ActiveX ini di dalam form, maka form tersebut akan mempunyai background, dimana gambar dari background tersebut akan secara otomatis sesuai dengan dengan gambar yang ada di wallpaper. Seperti gambar di bawah ini :


Sebelum kita mencoba untuk menggunakan kontrol ActiveX Desktop Background ini, silahkan download dulu file OCX nya di link di bawah ini :


Setelah mendownload ActiveX Desktop Background tersebut dan kemudian mengekstraknya, ikuti langkah - langkah berikut ini untuk menggunakannya :

  1. Registrasikan dulu kontrol ActiveX tersebut dengan cara mengetikkan syntak di bawah ini di dalam Command Window dan kemudian tekan enter.
    ! /n regsvr32 "I:\Desk Background.ocx"
    Ubah I:\ dan sesuaikan dengan lokasi (path) dimana teman - teman meletakkan file "Desk Background.ocx" di Local Disk. Dan bila proses registrasi ocx berhasil maka akan keluar pesan seperti gambar di bawah ini.
  2. Selanjutnya buat form dan tambahkan kontrol ActiveX Desktop Background dengan cara menambahkan kontrol ActiveX Control (OleControl) ke dalam form, seperti gambar di bawah ini.
  3. Setelah tampil jendela Insert Object, pilih Desk_Background.Image seperti gambar di bawah ini.
  4. Setelah di tambahkan di form, maka kontrol Desk_Background.Image akan tampak seperti gambar di bawah ini.
  5. Sesuaikan ukuran kontrol dengan ukuran form dan kemudian atur property Anchor dari olecontrol tersebut dengan nilai 15. Setelah itu coba jalankan form, dan form akan nampak seperti pada gambar yang pertama tadi.

Dalam menggunakan kontrol ActiveX diatas, ada hal yang perlu diperhatikan, yaitu dengan menggunakan kontrol ActiveX tersebut sebagai background form, maka teman - teman tidak akan bisa menambahkan kontrol bawaan foxpro seperti textbox, commandbutton dll, ke dalam form. Sebenarnya kontrol bawaan foxpro bisa tambahkan ke dalam form, tetapi saat form dijalankan kontrol bawaan foxpro tersebut akan tertutup oleh ActiveX meski sudah mengatur layout dari kontrol bawaan foxpro ke Bring to Front. Sehingga bila ingin menambahkan kontrol lain ke dalam form harus menggunakan kontrol ActiveX juga, salah satu caranya adalah dengan menggunakan kontrol ActiveX "Microsoft Form 2.0 Frame" sebagai berikut.

  1. Tambahkan kontrol ActiveX "Microsoft Form 2.0 Frame" dengan cara menambahkan kontrol ActiveX Control (OleControl) ke dalam form.
  2. Setelah tampil jendela Insert Object, pilih Microsoft Form 2.0 Frame seperti gambar di bawah ini.
  3. Setelah Microsoft Form 2.0 Frame berhasil ditambahkan, untuk menampilkan Toolbox yang berisi kumpulan kontrol ActiveX seperti gambar di bawah ini, klik kanan pada Frame dan pilih "Frame Edit". Selanjutnya melalui Toolbox tersebut tambahkan kontrol - kontrol umum seperti Textbox, Commandbutton dll sesuai keinginan.
  4. Setelah kontrol di tambahkan ke dalam Frame, ada yang perlu teman - teman ingat, yaitu bila ingin agar saat form dijalankan, Frame beserta kontrolnya akan berada di depan Background, maka saat di mode desain seperti gambar di bawah ini, buat layout Frame agar "Send to Back" terhadap Background atau dengan kata lain bila dalam mode desain Frame berada di belakang Background atau tertutup Background, maka saat form dijalankan justru nantinya Frame yang akan berada di depan Background dan sebaliknya.
  5. Berikut adalah tampilan Desk Background setelah ditambahkan Frame dan kontrol - kontrol yang lain.


SELAMAT MENCOBA...!!

Sunday, May 8, 2011

Source Code untuk Mengatur Kecepatan Gerakan Mouse

  No comments
Bila di posting Source Code untuk Mengubah Tombol Kanan dan Kiri pada Mouse kita telah bisa mengatur primary button mouse. Berikut ini adalah source code yang bisa teman - teman gunakan untuk mengatur kecepatan gerakan mouse. Dengan melakukannya teman - teman bisa memperlambat atau mempercepat gerakan mouse.Cara manual untuk melakukan hal ini, adalah dengan masuk ke pengaturan Mouse yang ada di Control Panel, di tab Pointer Options di bagian Motion. Akan tetapi jika teman - teman ingin melakukan pengaturan tersebut secara otomatis dan memasukkannya di dalam aplikasi atau program yang teman - teman buat, bisa menggunakan source code yang memanfaatkan win32api di bawah ini :

Declare Integer SystemParametersInfo in win32api ;
 Integer, Integer, Integer, Integer
SystemParametersInfo(113, 0, 1, 0)

Angka 1 yang berwarna merah diatas adalah nilai yang digunakan untuk mengatur kecepatan mouse. Silahkan isikan nilai antara 1 - 20. Nilai 1 berarti mengatur kecepatan mouse dalam posisi yang paling lambat dan 20 berarti mengatur kecepatan mouse ke posisi yang paling cepat.

 SELAMAT MENCOBA...!!

Saturday, May 7, 2011

Source Code untuk Mengatur Tampilkan Jendela Aplikasi di Desktop

  No comments
Berikut ini adalah salah satu trik yang teman - teman bisa gunakan untuk mengatur tampilan dari jendela aplikasi yang ada di desktop. Dengan ini teman - teman bisa mengatur agar semua aplikasi yang sedang terbuka di minimize, ditampilkan seluruhnya di desktop dengan posisi horizontal atau vertikal dan juga bisa mengatur perpindahan jendela antar aplikasi. Cara manual untuk melakukan ini adalah dengan menekan tombol Show Desktop atau Switch Between Windows di Taskbar. OK sekarang mungkin biar lebih jelas langsung kita coba saja source codenya dan mungkin untuk percobaan silahkan buka beberapa aplikasi dulu sebelum menjalankan source code di bawah ini :

&& Membuat variable public yang diisikan object Shell.Application
PUBLIC oShell
oShell=CreateObject("Shell.Application")

&& Meminimize semua jendela aplikasi yang sedang aktif
oShell.MinimizeAll

&& Mengembalikan posisi sebelum dilakukan MinimizeAll
oShell.UndoMinimizeALL 

&& Mengatur semua jendela tampil secara Cascade
oShell.CascadeWindows

&& Mengatur semua jendela tampil secara Horizontal
oShell.TileHorizontally

&& Mengatur semua jendela tampil secara Vertikal
oShell.TileVertically

&& Menampilkan kotak pilihan aplikasi yang ingin diaktifkan
oShell.WindowSwitcher

Cara mencoba source code diatas, ketikkan dan jalankan dulu 2 baris syntak pertama di Command Window, kemudian jalankan satu persatu baris perintah selanjutnya.


SELAMAT MENCOBA...!!

Friday, May 6, 2011

Source Code untuk Mengubah Tombol Kanan dan Kiri pada Mouse

  No comments
Berikut adalah source code yang bisa teman - teman gunakan untuk mengubah fungsi tombol kanan pada mouse menjadi tombol kiri dan sebaliknya. Sehingga semua fungsi atau aktifitas yang biasanya teman - teman lakukan dengan melakukan klik kiri mouse, hanya akan bisa dilakukan dengan klik kanan, begitu juga sebaliknya. Fungsi dari melakukan perubahan tombol primary dari mouse ini adalah mempermudah bagi teman - teman kita yang kidal. Selain itu bagi teman - teman yang iseng, bisa juga digunakan untuk berbuat jahil pada teman yang lainnya..:D. 

Cara manual untuk melakukan hal ini, adalah dengan masuk ke pengaturan Mouse yang ada di Control Panel, di tab Buttons teman - teman bisa melakukan perubahan mengenai tombol primary mouse ini. tetapi jika teman - teman ingin melakukannya secara otomatis dan memasukkannya di dalam aplikasi atau program yang teman - teman buat, bisa menggunakan source code di bawah ini :

&& Mengubah klik kanan menjadi klik kiri
Declare Integer SwapMouseButton in win32api integer
SwapMouseButton(1)

&& Mengembalikan kondisi mouse secara normal
Declare Integer SwapMouseButton in win32api integer
SwapMouseButton(0)

Angka 1 dan 0 inilah parameter yang digunakan untuk menentukan apakah ingin mengatur tombol mouse dalam kondisi normal atau diubah fungsinya.



 SELAMAT MENCOBA...!!

Wednesday, May 4, 2011

Pengetahuan Dasar Menu di Visual Foxpro

  No comments
Berikut adalah artikel yang berhubungan dengan hal - hal yang berkaitan dengan menu yang ada di Visual Foxpro. Bagi teman - teman yang baru belajar Visual Foxpro bisa memanfaatkannya untuk menambah pengetahuan. 

Menu adalah suatu fasilitas yang dapat digunakan untuk mengorganisasikan form-form yang ada pada project yang sama sehingga semua form yang di miliki dapat di tampilkan sesuai dengan urutan dan kebutuhan aplikasi. Di dalam Visual Foxpro terdapat dua jenis menu yaitu (1) Menu yang biasanya akan ditampilkan di bagian atas form utama dibawah caption form, (2) Shortcut yaitu menu yang biasanya ditampikan saat kita melakukan klik kanan dengan posisi bisa bebas di dalam form.
Contoh Tampilan Menu
Contoh Tampilan Shortcut


Cara Membuat Menu
Pembahasan pertama mengenai menu kita coba mulai dari hal yang paling dasar yaitu cara pembuatan menu. Di Visual Foxpro teman - teman bisa melakukan alternatif cara berikut untuk membuat menu yaitu :

Cara 1 :
  1. Pada Layar Utama Visual Foxpro pilih menu File - New - pilih opsi Menu - klik tombol New file
  2. Setelah tampil jendela New Menu, selanjutnya bisa pilih, mau buat Menu atau Shortcut
Cara 2 :
  1. Buat sebuah project baru, kemudian klik tab Other - klik Menu - klik tombol New 
  2. Setelah tampil jendela New Menu, selanjutnya bisa pilih, mau buat Menu atau Shortcut
Cara 3 :
  1. Dari Command Window ketikkan Create Menu <nama menu>, Contoh Create Menu menuutm
  2. Setelah tampil jendela New Menu, selanjutnya bisa pilih, mau buat Menu atau Shortcut
Desain Menu
Dalam melakukan desain menu, Visual Foxpro menyediakan banyak fasilitas, dari pemberian icon, hotkey dan lain sebagainya bagi teman - teman yang ingin belajar membuat menu dari awal, bisa mempelajari langkah- langkah detailnya dengan membaca Chapter 11: Designing Menus and Toolbars di ebook yang di posting di Microsoft Visual Foxpro 6.0 - Programmer`s Guide. Dan berikut ini beberapa hal yang biasanya digunakan dalam desain form. :

  1. Bila ingin memberi garis pembatas antara submenu satu dan submenu lain, bisa mengetikkan \- di kotak Prompt di Menu Designer
  2. Bila ingin menjalankan form tertentu melalui submenu, bisa menaruh syntak DO FORM <nama form> Contoh DO FORM formutm di dalam kotak Command atau Procedure
  3. Untuk menutup Form yang sedang aktif di Form Utama bisa menggunakan syntak APPLICATION.ACTIVEFORM.RELEASE di dalam kotak Command atau Procedure
  4. Sedangkan untuk menutup Form Utama bisa berikan syntak  :
    QUIT
    CLEAR EVENTS
Cara Aktifkan Menu di Form
Secara default menu yang teman - teman buat tidak langsung bisa dijalankan di dalam form. Ada beberapa hal yang teman - teman harus perhatikan jika ingin menjalankan menu di form, hal - hal tersebut adalah :

  1. Form yang digunakan untuk menampilkan menu, property ShowWindow nya harus diatur ke 2 - As Top-Level Form
  2. Saat mengaktifkan Menu Designer, pilih menu View - General Options - aktifkan atau beri tanda centang pada opsi Top-Level Form - klik OK. Selanjutnya setiap melakukan perubahan pada menu, simpan perubahan dengan pilih menu Menu - Generate - klik Yes bila ada jendela konfirmasi penyimpanan perubahan.
  3. Di procedure init milik form yang digunakan untuk menampilkan menu ketikkan syntak berikut untuk menjalankan menu : DO <nama menu>.mpr WITH THIS,.T. Contoh DO mnutm.mpr WITH THIS,.T.
Cara Disable Submenu
Melalui menu, teman - teman juga bisa mengatur hak akses user dengan melakukan pembatasan untuk mengakses form tertentu, dengan cara mendisable submenu yang digunakan untuk menjalankan form tertentu tersebut. Syntak yang digunakan untuk mendisable submenu tertentu adalah sebagai berikut :

SET SKIP OF BAR 1 OF "File" .T.

Contoh syntak diatas adalah digunakan untuk mendisable submenu yang ada di menu File, dan submenu pada urutan atau baris pertama lah yang akan di disable yang ditunjukkan dengan syntak BAR 1. Sedangkan .T. adalah syntak yang digunakan untuk mengatur agar submenu pada baris pertama di disable, jika teman - teman mengubahnya menjadi .F. maka submenu pada baris pertama pada menu File akan di enable kan lagi.

Beri Tanda Centang di Submenu 
Selain bisa mengatur agar submenu bisa disable atau enable, teman - teman juga bisa mengatur agar di sisi kiri pada submenu tertentu akan terdapat tanda centang, dengan mengetikkan syntak berikut :

SET MARK OF BAR 1 OF "FILE" TO .T.

Contoh syntak diatas adalah digunakan untuk memberikan tanda centang pada submenu yang ada di menu File, dan submenu pada urutan atau baris pertama lah yang akan di beri tanda centang yang ditunjukkan dengan syntak BAR 1. Sedangkan .T. adalah syntak yang digunakan untuk mengatur agar submenu pada baris pertama tersebut di beri tanda centang, jika teman - teman mengubahnya menjadi .F. maka tanda centang di submenu pada baris pertama pada menu File akan di dihilangkan.
Tanda Centang pada Submenu

Menu Lanjut
Selain melalui Menu Designer dalam membuat dan mendesain menu, di Visual Foxpro juga bisa membuat dan merancang menu melalui syntak. Dengan membuat menu melalui syntak, teman - teman bisa mempunyai lebih kebebasan dalam mengatur dan mendesain menu, salah satu contoh pembuatan menu melalui syntak bisa teman - teman lihat di posting Mengatur Posisi Menu, yang bisa mengatur posisi menu yang biasanya berada di atas tetapi bisa diatur posisinya sesuai keinginan.
Posisi Menu yang Tidak di Atas


SEMOGA BERMANFAAT...!!