Antara muka pengaturcaraan aplikasi sistem operasi Windows diwakili oleh sekumpulan fungsi. Apabila ia dipanggil, pelbagai objek (fail, proses, utas, objek penyegerakan, dll.) Dapat dibuat. Untuk memberikan akses yang cukup abstrak dan bersatu ke objek-objek ini, pengenalannya dilakukan menggunakan deskriptor - nilai berangka "impersonal".
Perlu
- - penterjemah dari bahasa pengaturcaraan yang membenarkan penggunaan Windows API;
- - mungkin Windows Platform SDK.
Arahan
Langkah 1
Dapatkan pemegang tingkap. Terdapat banyak cara untuk melakukan ini. Kaedah tepat bergantung pada tujuan akhir.
Gunakan API CreateWindow atau CreateWindowEx untuk membuat tetingkap. Mereka mengembalikan kejayaan dan NULL pada kegagalan.
Cari tetingkap tingkat atas dan tetingkap anak dengan pelbagai parameter masing-masing menggunakan fungsi FindWindow dan FindWindowEx. Pada carian yang berjaya, pemegang tetingkap akan diperoleh.
Hitung tetingkap dengan fungsi EnumWindows, EnumChildWindows, EnumThreadWindows. Pegangan tetingkap yang dijumpai akan diteruskan sebagai parameter ke fungsi panggilan balik.
Cari pemegang ke tetingkap yang terletak pada kedudukan tertentu di skrin. Panggil salah satu fungsi: WindowFromPoint, ChildWindowFromPoint, atau ChildWindowFromPointEx.
Langkah 2
Dapatkan pengendalian proses. Buat proses baru dengan memanggil fungsi CreateProcess, CreateProcessAsUser, CreateProcessWithTokenW, atau CreateProcessWithLogonW API. Mereka semua mengembalikan proses ke proses baru di medan hProcessional PROCESS_INFORMATION struktur, penunjuk yang harus disampaikan kepada mereka sebagai parameter terakhir.
Cari pegangan proses dengan pengecam yang diketahui. Gunakan panggilan OpenProcess. ID semua proses yang dijalankan dapat diperoleh, misalnya, menggunakan fungsi CreateToolhelp32Snapshot, Process32First, dan Process32Next dari perpustakaan Bantuan Alat.
Dapatkan semula pseudo menangani proses semasa menggunakan fungsi GetCurrentProcess.
Langkah 3
Dapatkan penerangan untaian. Fungsi CreateThread dan CreateRemoteThread membuat utas sendiri dan proses orang lain, masing-masing, mengembalikan pegangan mereka. Anda boleh membuka utas yang ada menggunakan pengecamnya dan mendapatkan pegangan yang sesuai menggunakan fungsi OpenThread. Pemegang pseudo aliran semasa dikembalikan semasa GetCurrentThread dipanggil.
Langkah 4
Deskriptor untuk fail, direktori, cakera fizikal, volume cakera, konsol, sumber komunikasi (port I / O), slot surat, dan pipa bernama dapat diperoleh dengan memanggil satu fungsi, CreateFile.
Langkah 5
Deskriptor objek pemetaan fail ke memori dikembalikan dengan panggilan ke CreateFileMapping dan OpenFileMapping.
Langkah 6
Fungsi CreateMutex, CreateSemaphore, dan CreateEvent membuat, dan fungsi OpenMutex, OpenSemaphore, dan OpenEvent membuka objek penyegerakan yang ada (mutex, semaphores, dan peristiwa). Semuanya mengembalikan deskriptor.
Langkah 7
Semua objek GDI (seperti konteks peranti, fon, berus, pensil, bitmap yang bergantung pada perkakasan dan bebas, bahagian DIB, dll.) Dimanipulasi melalui penerangannya. Fungsi untuk membuat objek GDI banyak dan harus dilihat di bahagian MSDN untuk mendapatkan maklumat tentangnya.
Langkah 8
Deskriptor yang diperoleh dalam satu proses, sebagai peraturan, tidak dapat digunakan dalam proses yang lain. Walau bagaimanapun, dalam beberapa kes adalah mungkin untuk mendapatkan pendua pendua yang sesuai dengan objek utama. Panggil DuplicateHandle API untuk menggandakan pegangan. Ini boleh digunakan, misalnya, untuk berkongsi objek atau saluran penyegerakan tanpa nama antara beberapa proses.