"Formulir penculikan": Seperti namanya, ini adalah menyeret bentuk aplikasi lain atau bahkan program sistem ke dalam bentuk program ini secara hidup. "Penculikan" paksa semacam ini tanpa persetujuan program lain dapat memainkan peran yang sangat unik dalam situasi tertentu. Artikel ini akan membahas teknologi dan penerapan formulir "penculikan", serta memberikan contoh program "bandit" yang lengkap.
Secara teknis, untuk melaksanakan "penculikan", harus ada objek MDIForm di program "perampok".
Syarat kedua untuk mewujudkan “penculikan” adalah anda harus mengetahui pegangan bentuk “penculikan”. Tidak sulit untuk melakukan ini. Misalnya, ketika mouse meluncur di layar, kita dapat menggunakan fungsi API GetCursorPos untuk mendapatkan koordinat posisi penunjuk mouse saat ini, dan kemudian menggunakan fungsi API lain WindowFromPoint untuk mendapatkan pegangan jendela titik yang ditentukan. Atau gunakan FindWindow untuk mendapatkan pegangan jendela.
Dengan dua kondisi di atas, program "perampok" dapat mulai menerapkan "penculikan": pertama gunakan perintah GW_CHILD dari fungsi API GetWindow untuk menemukan pegangan sub-jendela pertama program; kemudian gunakan fungsi API lainnya SetParent untuk "menculik" Formulir "Penculikan" menentukan "induk baru", yang merupakan pegangan untuk jendela anak di atas. Segera, dua bentuk yang awalnya tidak berhubungan memiliki hubungan "ayah-anak": jendela "diculik" muncul di dalam bentuk "perampok"!
2. Keamanan “penculikan”
"Penculikan" sembarangan sangat berbahaya. Namun, keselamatan dapat dijamin asalkan dua prinsip berikut dipatuhi:
Pertama, sebelum menutup program "perampok", gunakan fungsi SetParent untuk "melepaskan" formulir "yang diculik", yaitu mengembalikan "ayah" asli dari orang yang "diculik".
Kedua, jangan "menculik" jendela sistem. Jendela sistem umumnya meliputi: jendela taskbar, jendela yang dibuat dengan menekan "Start", jendela yang dibuat dengan menekan "Ctrl+Alt+Del", jendela yang dibuat dengan mengklik kanan mouse, dll.
Teknologi "penculikan" banyak digunakan di VB. Misalnya, kontrol dapat ditempatkan di dalam kontrol kontainer saat program sedang berjalan (seperti mengatur tombol sebagai jendela anak dari kontrol gambar atau formulir), atau memindahkan kontrol dari sebuah kontainer. ke yang lain dalam bentuk.
Kode:
Didefinisikan dalam bentuk Privat
hwndOldParent:HWND;
hwndNotePad:HWND;
Atur FormStyle jendela ke fsMDIForm
prosedur TForm1.Button1Click(Pengirim: TObject);
mulai
hwndNotePad:=FindWindow(PChar('Notepad'),0);
hwndOldParent:=GetParent(hwndNotePad);
Windows.SetParent(hwndNotePad,pegangan);
akhir;
prosedur TForm1.FormDestroy(Pengirim: TObject);
mulai
Windows.SetParent(hwndNotePad,hwndOldParent);
akhir;
Untuk informasi lebih lanjut, silakan lihat: http://lincosoft.go.nease.net/