Home > Visual Basic > Sekilas windows API

Sekilas windows API

January 2, 2010

Windows API (Application Programming Interface) merupakan sekumpulan fungsi eksternal yang terdapat dalam file-file librarynya windows atau program lain yang dapat digunakan untuk meningkatkan kemampuan program kita.

Kenapa menggunakan Windows API ?
Ya alasan paling sederhananya sih untuk mengatasi keterbatasan fungsi-fungsi internal (built-in) visual basic. Bayangkan kita diminta BOZZZ untuk membuat sebuah aplikasi yang mempunyai kemampuan sebagai berikut :

  1. Melakukan Restart
  2. Melakukan Shutdown
  3. Selalu diatas windows yg lain (On Top Most)
  4. Akses Registry Windows
  5. Menontaktifkan program-program tertentu, seperti Windows Taks Manager, Regedit, Ms Config de el el.
  6. Mendeteksi koneksi internet
  7. Mendapatkan direktori system (c:\windows\system32 atau c:\windows\system)
  8. Menyembunyikan mouse cursor, tombol Start, TaskBar
  9. Dan lain-lain, kayax mau buat virus aja😀

Saya yakin kalo kita blank sama sekali tentang Windows API pasti cuma bisa gigit jari dan bisa-bisa terancam bakalan dipecat😀.

Apakah Windows API harus DIHAPAL?
Saya merekomendasikan jawabannya IYA kalo pada ingin stress😀, coba kita lihat cuplikan fungsi-fungsi Windows API berikut :

Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Private Declare Sub SetWindowPos Lib "User32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As Long

Selain deklarasi fungsi-fungsi, Windows API juga biasanya membutuhkan deklarasi konstanta. Misal untuk fungsi ExitWindowsEx, membutuhkan deklarasi konstanta berikut :

Private Const EWX_LOGOFF = 0
Private Const EWX_SHUTDOWN = 1
Private Const EWX_REBOOT = 2
Private Const EWX_FORCE = 4

Fungsi SetWindowPos membutuhkan deklarsi konstanta berikut :

Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOACTIVATE = &H10
Private Const SWP_SHOWWINDOW = &H40

Iiihhhh serem bukan?😥 penampakan fungsi diatas baru 4 loh, coba bayangkan fungsi-fungsi Windows API itu jumlahnya ada ribuan, tapi jangan khawatir ada tip dan triknya kok untuk mudah mengingat fungsi-fungsi Windows API yaitu cukup mengingat nama fungsinya, Misal.

  1. Untuk Restart dan Shutdown (ExitWindowsEx)
  2. Mendapatkan direktori system (GetSystemDirectory)
  3. Menyembunyikan mouse cursor (ShowCursor)

Trus bagaimana melengkapi deklarasi fungsi-fungsi Windows API berikut konstantanya ?
Saya biasanya menggunakan salah satu dari 2 tools berikut:

  1. API Text Viewer (bawaan vb), tool ini saya gunakan jika saya ingat nama fungsi plus konstantanya, kalo enggak ingat ya saya biasanya pake tool yang kedua😀
  2. API-GUIDE sayang situs aslinya sudah tidak aktif lagi. Keuntungan menggunakan API-GUIDE, kita cukup mengingat nama fungsi APInya otomatis contoh penggunaan akan ditampilkan mudah bukan? Jadi tidak ada alasan untuk tidak mempelajari Windows API

Menggunakan API Text Viewer
Dari IDE Visual Basic, klik menu Add-Ins -> Add-In Manager, terus aktifkan item VB6 API Viewer

Jika proses diatas berhasil, akan ada tambahan sub menu API Viewer di menu Add-Ins, kita tinggal klik menu tersebut untuk menampilkan tool API Text Viewer

Deklarasi fungsi-fungsi Windows API berikut konstantanya tersimpan di file WIN32API.txt, jadi kita terlebih dulu harus mengaktifkan file tersebut, dengan cara klik menu File -> Load Text File, trus tinggal pilih file WIN32API.txt

Untuk mendapatkan deklarsi lengkap, kita tinggal mengetikan nama fungsi APInya, misal untuk contoh diatas saya mengetikan fungsi ExitWindowsEx kemudian klik tombol Add dan otomatis deklarsi lengkap fungsi ExitWindowsEx akan ditampilkan di list.

Kemudian untuk mendapatkan konstanta dari fungsi ExitWindowsEx, kita harus mengganti nilai API Type menjadi Constants, dan tinggal mengetikkan nama konstantanya misal EWX_

Jika sudah selesai tekan tombol Copy untuk mengcopy fungsi API berikut konstantanya dan tinggal pastekan ke editor code visual basic.

Menggunakan API-GUIDE
API-GUIDE bisa didownload di sini, setelah download kemudian install dan jalankan API-GUIDEnya, kita tinggal mengetikan nama fungsi API misal ExitWindowsEx, mengklik tab Example(s), diakhiri dengan mengklik tombol Copy, mudah bukan ? tinggal dipastekan ke editor code visual basic.


Selamat mencoba🙂

  1. Nakalboy
    April 19, 2010 at 4:53 am

    OM,,ne kan lg bahas API di VB6,,,lah klo yg VB.net gmn OM?,,,klo bs tlong di bahas jg.Thax OM

  2. April 19, 2010 at 5:18 am

    Nakalboy :

    OM,,ne kan lg bahas API di VB6,,,lah klo yg VB.net gmn OM?,,,klo bs tlong di bahas jg.Thax OM

    Pembahasan masalah ini sudah ada kok om di buku upgrade vb6 to vb.net jadi refrensinya bagus banget salah satu perbedaan implementasi fungsi api di vb dan vb net yaitu perubahan tipe data.

    Klo untuk develop selanjutnya sy lebih cendrung ke java dari pada vb.net makanya diblog ini tidak ada pembahasan ttg vb.net

  3. ChazSD
    June 22, 2010 at 3:50 am

    om kasih dong link referensi ato pun ebook (jika ada) untuk PEMAKAIAN/PENULISAN API pada VB.NET (mau di upgrade nih my brain😉 )

    dah minta tolong sama si mbah google tapi gak ada yg sesuai…

    thanks ya om….

  4. June 22, 2010 at 4:16 am

    Sebenarnya mengkonversi fungsi API dari VB6 ke VB.NET sangat mudah om.

    Contoh Fungsi API di VB 6

    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
    

    Yang perlu diperhatikan adalah tipe parameternya klo Long di .NETnya jadi Integer, Klo Integer mungkin jadi Short diNETnya😀

    Khusus tipe Any, kita harus menentukan tipenya secara pasti, masih mengacu pada fungsi API di atas parameter Destination As Any bisa saja menjadi Destination As String.

    Dan bisa jadi fungsi API diatas klo dikonversi ke .NET menjadi :

    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As String, Source As String, ByVal Length As Integer)
    

    CMIIW😀

  5. ChazSD
    June 22, 2010 at 4:39 am

    nah memang seperi itu maksudnya om……
    soalnya ada project VB6 ane yg banyak pake fungsi API mau di konversi ke VB.NET…
    konversi pake VS2008 malah banyak yg error… jadi harus konversi manual deh…

    makanya ane nanya referensi …. dah ngobok2 MSDN gak ada yg sesuai….
    masih bingung nih…

  6. June 22, 2010 at 5:00 am

    Berarti udah enggak bingung lagi ya😉

  7. Toro
    May 11, 2011 at 10:08 pm

    mantab…mas kalo on top most itu nama apinya apa ya??
    masih newbie tentang api nih pengen belajar byk lg….^_^

    • May 12, 2011 at 4:54 am

      Nama fungsi APInya [strong]SetWindowPos[/strong] pake API-GUIDE aja om, entar dikasih sample codenya

  8. July 18, 2011 at 2:35 am

    berarti kita harus menghapal fungsi API juga ya om??? :(:(:(:(:(:(
    pantes selama ini pusing. semenjaka sy koding di vb. fungsi api tidak pernah sy kwasai. soalnya terlalu ribet untuk memahaminya…

    kata om admin, fungsinya aaja yang perlu kita ketahui ya. terus om. supaya kita dapat fungsi2 apa aja apa ya om. maksd saya gini om. kalau sya mau matiin monitor. fungsi apinya apa om. dll juga. ada tips lain lagi ga om untuk menghapal fungsi2 api ini. thanks

    • July 18, 2011 at 3:02 am

      Enggak usah dihapal om, tinggal searching aja di google😀

  9. Learner Boy
    September 1, 2011 at 12:25 pm

    Kepada kakak admin yang baik, saya ada beberapa pertanyaan untuk kakak soal win32 API programming ini. Antara lain :
    1. Bagaimana caranya kita tahu fungsi dari api yang kita deklarasikan tersebut. Contohnya : Apa fungsi dari getasynkeystate.
    2. Bagaimana cara menentukan konstanta-konstanta yang diperlukan tersebut.
    3. Type dalam API text viewer itu apa sih kak gunanya, mohon penjelasan yang sangat rinci soal ini.
    4. Dan yang terakhir, bagaimana cara kita memanggil fungsi API yang telah kita deklarasikan tersebut.
    5. Saya akan sangat berterima kasih kepada kakak jika kakak memberikan ebook yang membahas secara detain tentang penggunaan win32 API pada VB 6 sekalipun berbahasa Inggris tidak apa2.
    6. KAlo bisa penjelasannya yang detil yah kak.
    7. Maaf kak jika pertanyaannya terlalu banyak dan juga kalau ada kata yang salah. hanya Allah yang bisa kebaikan kakak dalam mengajari saya. Thans before

    • September 4, 2011 at 6:16 am

      Wedewww pertanyaannya banyak amat😀

      Bagaimana caranya kita tahu fungsi dari api yang kita deklarasikan tersebut. Contohnya : Apa fungsi dari getasynkeystate.

      Klo ini ya harus sering2x baca referensi tentang fungsi API.

      Bagaimana cara menentukan konstanta-konstanta yang diperlukan tersebut.

      Semuanya sudah ada di situs msdn microsoft.
      Contoh fungsi api ExitWindowsEx

      Type dalam API text viewer itu apa sih kak gunanya, mohon penjelasan yang sangat rinci soal ini.

      Sebuah fungsi API (Declares) kan jarang berdiri sendiri biasanya membutuhkan deklarasi konstanta (Constants) atau type terstruktur (Types)

      Dan yang terakhir, bagaimana cara kita memanggil fungsi API yang telah kita deklarasikan tersebut

      Makanya sy sendiri biasanya menggunakan tools API-Guide, sample MSDN, atw langsung googling berdasarkan nama fungsi APInya.

      Saya akan sangat berterima kasih kepada kakak jika kakak memberikan ebook yang membahas secara detain tentang penggunaan win32 API pada VB 6 sekalipun berbahasa Inggris tidak apa2.

      1. Win32 API Programming with Visual Basic
      2. Win32 API Puzzle Book and Tutorial for Visual Basic Programmers

  10. Learner boy
    September 7, 2011 at 1:17 pm

    1. memang sama yah kak penggunaanya API pada VB6 dengan C++?, tampaknya microsoft menggunakan c++ sebagai contohnya.

    • September 8, 2011 at 2:54 am

      Ya jelas beda, yg pentingkan setelah kita membaca referensi dari Microsoft minimal kita jadi tau nama fungsi APInya plus kegunaannya.

      Contoh untuk melakukan restart dan shutdown kita menggunakan fungsi API ExitWindowsEx, selanjutnya tinggal googling aja dengan keyword “ExitWindowsEx+VB” kan banyak tuh link-link yang membahas cara penggunaanya.

      Atau menggunakan tool AP-GUIDE trus cari fungsi API ExitWindowsEx nanti otomatis otomatis ada sample penggunaanya.

      Lihat gambar

      Makanya saran sy om dicoba dulu tool2x yg sy bahas diatas biar tidak menanyakan sesuatu yg sudah ada jawabannya.

  11. learner boy
    September 9, 2011 at 1:00 pm

    Thank You, brother, sekarang saya sudah mengerti.😀
    Tapi jangan kapok menjawab pertanyaan saya kak.

    • September 9, 2011 at 1:05 pm

      Oke om🙂

  12. awaludin
    November 9, 2011 at 5:09 am

    kaka ada ebook yg bahasa indonesia nya ga, mksh kk

    • November 9, 2011 at 6:43 am

      Belum nemu om, mungkin om bisa coba buku “EKSPLORASI WIN32-API VISUAL BASIC”

  13. November 11, 2011 at 6:45 am

    salam kenal, nama saya nofry, ym:nofry_79 , saya mau tanya bisa ngak api ini dipake insert data / text di dialogbox di aplikasi lain. gimana caranya? thx

    • November 11, 2011 at 8:29 am

      Yg jelas bisa om, coba pelajari postingan sy yang disini.

  14. November 11, 2011 at 6:49 am

    ini email saya: nofrywalangitan@gmail.com

  15. Melani Anggreini
    February 21, 2012 at 9:07 am

    kak saya mau nanya ?

    1. Gimana caranya agar aplikasi Always on top pada mode full screen (ex. ketika bermain Game)
    2. Gimana caranya agar Taskbar Always on top pada mode full screen (ex. ketika bermain Game)
    3. Gimana caranya agar game selalu berada dibelakang taskbar ( setiap game mempunyai security atau settingan always on top, file apa yang perlu diedit dalam game tersebut (ex. game Online)
    4. tanks atas jawabannya, tolong dijawab dengan rinci, serta software atau contoh code sourcenya?

  16. afdoal
    November 19, 2012 at 3:17 pm

    om….
    ada gak WinAPI yang bisa menghapus dan menambahkan baris tertentu di text file??

  1. No trackbacks yet.
Comments are closed.
%d bloggers like this: