Cách Lấy Bộ Mô Tả

Mục lục:

Cách Lấy Bộ Mô Tả
Cách Lấy Bộ Mô Tả

Video: Cách Lấy Bộ Mô Tả

Video: Cách Lấy Bộ Mô Tả
Video: How to get code OC|| Cách lấy code OC 👀 |đọc mô tả- Read the description| 2024, Có thể
Anonim

Giao diện lập trình ứng dụng của hệ điều hành Windows được thể hiện bằng một tập hợp các chức năng. Khi chúng được gọi, các đối tượng khác nhau (tệp, quy trình, luồng, đối tượng đồng bộ hóa, v.v.) có thể được tạo. Để cung cấp khả năng truy cập đủ trừu tượng và thống nhất vào các đối tượng này, việc xác định chúng được thực hiện bằng cách sử dụng các bộ mô tả - các giá trị số "không cá nhân hóa".

Cách lấy bộ mô tả
Cách lấy bộ mô tả

Cần thiết

  • - một trình dịch từ một ngôn ngữ lập trình cho phép sử dụng Windows API;
  • - có thể là Windows Platform SDK.

Hướng dẫn

Bước 1

Nhận tay cầm cửa sổ. Có rất nhiều cách để làm điều này. Phương pháp chính xác phụ thuộc vào mục tiêu cuối cùng.

Sử dụng API CreateWindow hoặc CreateWindowEx để tạo cửa sổ. Họ trả về một xử lý cho thành công và NULL cho thất bại.

Tìm kiếm cửa sổ cấp cao nhất và cửa sổ con theo các tham số khác nhau bằng cách sử dụng các chức năng FindWindow và FindWindowEx tương ứng. Khi tìm kiếm thành công, tay cầm cửa sổ sẽ được lấy.

Liệt kê các cửa sổ với các hàm EnumWindows, EnumChildWindows, EnumThreadWindows. Các chốt của các cửa sổ được tìm thấy sẽ được chuyển như một tham số cho hàm gọi lại.

Tìm tay cầm của cửa sổ nằm ở một vị trí cụ thể trên màn hình. Gọi một trong các hàm: WindowFromPoint, ChildWindowFromPoint hoặc ChildWindowFromPointEx.

Bước 2

Nhận các xử lý quy trình. Tạo một quy trình mới bằng cách gọi các hàm API CreateProcess, CreateProcessAsUser, CreateProcessWithTokenW hoặc CreateProcessWithLogonW. Tất cả chúng đều trả về một xử lý cho tiến trình mới trong trường hProcess của cấu trúc PROCESS_INFORMATION, con trỏ sẽ được chuyển cho chúng dưới dạng tham số cuối cùng.

Tìm xử lý của quy trình bằng số nhận dạng đã biết của nó. Sử dụng lệnh gọi OpenProcess. Bạn có thể lấy ID của tất cả các quy trình đang chạy, ví dụ, bằng cách sử dụng các hàm CreateToolhelp32Snapshot, Process32First và Process32Next của thư viện Tool Help.

Truy xuất xử lý giả của quy trình hiện tại bằng cách sử dụng chức năng GetCurrentProcess.

Bước 3

Nhận mô tả của chủ đề. Các hàm CreateThread và CreateRemoteThread lần lượt tạo các luồng trong quy trình của chính chúng và của người khác, trả về các xử lý của chúng. Bạn có thể mở một luồng hiện có bằng cách sử dụng mã định danh của nó và nhận được xử lý tương ứng bằng cách sử dụng chức năng OpenThread. Xử lý giả của luồng hiện tại được trả về khi GetCurrentThread được gọi.

Bước 4

Bộ mô tả cho tệp, thư mục, đĩa vật lý, khối lượng đĩa, bảng điều khiển, tài nguyên giao tiếp (cổng I / O), khe thư và đường ống được đặt tên có thể được lấy bằng cách gọi một hàm duy nhất, CreateFile.

Bước 5

Các bộ mô tả đối tượng ánh xạ tệp vào bộ nhớ được trả về bởi các cuộc gọi đến CreateFileMapping và OpenFileMapping.

Bước 6

Các hàm CreateMutex, CreateSemaphore và CreateEvent tạo và các hàm OpenMutex, OpenSemaphore và OpenEvent mở các đối tượng đồng bộ hóa hiện có (mutexes, semaphores và sự kiện). Tất cả chúng đều trả về bộ mô tả.

Bước 7

Tất cả các đối tượng GDI (chẳng hạn như bối cảnh thiết bị, phông chữ, bút vẽ, bút chì, bitmap độc lập và phụ thuộc vào phần cứng, phần DIB, v.v.) đều được thao tác thông qua bộ mô tả của chúng. Các chức năng để tạo các đối tượng GDI rất nhiều và nên tham khảo trên phần MSDN để biết thông tin về chúng.

Bước 8

Theo quy tắc, một bộ mô tả thu được trong một quy trình, không thể được sử dụng trong một quy trình khác. Tuy nhiên, trong một số trường hợp, có thể lấy được một bộ mô tả trùng lặp tương ứng với đối tượng chính. Gọi API DuplicateHandle để sao chép xử lý. Ví dụ, điều này có thể được sử dụng để chia sẻ các đối tượng hoặc kênh đồng bộ hóa chưa được đặt tên giữa nhiều quy trình.

Đề xuất: