Software developer yang fokus mengembangkan aplikasi di atas platform .NET dan Android. Senang mempelajari teknologi baru terutama di bidang OOP, Design Pattern, ORM, Continuous Integration & Deployment dan arsitektur Microservice.
Sebelum kita melanjutkan pembahasan ada beberapa istilah yang harus kita ketahui yaitu Parent Window (Window Induk), Child Window (Window Anak) dan bagaimana cara mendapatkan nilai Handle Window (hWnd) atau dengan istilah yang lebih sederhana Process ID.
Setiap aplikasi yang berjalan di Windows umumnya memiliki jendela atau form. Jika ada beberapa jendela/form aplikasi berbeda yang terbuka, maka sistem akan memberikan semacam identitas bagi setiap jendela yang terbuka tersebut, di mana masing-masing jendela/form memiliki identitas atau alamat yang berbeda satu sama lain.
Konsep Child-Parent sangat sederhana, karena pengertian yang diberikan sama persis dengan namanya. Child/anak merupakan sebuah handle window yang berada di dalam handle window lainnya yang biasa disebut parent/induk. Oke kita lihat contoh berikut :
Dengan cara yang sama lakukan terhadap YM dan menghasilkan gambar berikut :
Nah yang jadi pertanyaan bagaimana caranya untuk mendapatkan nilai Handle, Caption dan Class dan yang terpenting disini adalah nilai Class. Ada banyak tool yang bisa digunakan salah satunya adalah Spy++, merupakan tool bawaan visual studio 6.
Oke kita langsung saja menjalankan program Spy++, lihat gambar :
Selanjutnya Anda tinggal drag icon ke aplikasi YM, lihat gambar :
Nah sampe disini analisis sudah selesai dan kita sudah mendapatkan semua informasi yang dibutuhkan, yaitu urutan windows parent<-anak :
YSearchMenuWndClass <- IMClass <- YHTMLContainer <- Internet Explorer_Server
YSearchMenuWndClass <- IMClass <- YIMInputWindow
Perlu diketahui bahwal class/window Internet Explorer_Server dan** YIMInputWindow** bukan class terluar, sehingga kita perlu mengetahui class diatasnya. Jadi untuk membaca pesan yang masuk, urutan class yang harus kita lalui adalah :
YSearchMenuWndClass -> IMClass -> YHTMLContainer -> Internet Explorer_Server
Sedangkan untuk membalas pesan yang masuk, urutan kelas yang harus kita lalui adalah :
YSearchMenuWndClass -> IMClass -> YIMInputWindow
Untuk memanipulasi class/window diatas kita membutuhkan windows handle/process id dari class tersebut, bagi yang sudah terbiasa menggunakan fungsi-fungsi API kemungkinan sudah tau fungsi API apa saja yang kita butuhkan. Jika masih bingung apa itu fungsi API, coba mampir ke sini.
Yaph benar udah taukan fungsi API yang kita gunakan untuk mendapatkan windows handle/process id :
FindWindow -> untuk mendapatkan process id induk class (YSearchMenuWndClass)
FindWindowEx -> untuk mendapatkan process id sub class (IMClass, YHTMLContainer, Internet Explorer_Server dan YIMInputWindow)
berikut deklarasi lengkapnya :
Oke berikutnya adalah bagian coding lengkap, bagaimana cara mengambil informasi yang ada di window Internet Explorer_Server dan mengirim pesan melalui window YIMInputWindow dan jangan lupa tambahkan references Microsoft HTML Object Library di project Anda.
Yaph mungkin itu saja penjelasan singkat untuk membuat mesin penjawab otomatis YM! untuk uji coba ini saya menggunakan YM! versi 8.1.0.421 bagi yang akan mencoba di versi 9 sudah saya cek ada sedikit perbedaan nama class/window, yang penting caranya sama seperti diatas tinggal sesuaikan saja.
Bagian terakhir dari artikel ini bisa Anda ikuti disini.
Beberapa waktu yang lalu saya merilis sebuah library dengan nama WhatsApp NET Client. Library ini merupakan hadiah dari saya untuk teman-teman .NET De...
WhatsApp NET Client adalah library untuk .NET Developer yang digunakan untuk mengembangkan aplikasi WhatsApp klien berbasis desktop. Library ini dikembangkan...
Comments