2011-08-16 38 views
5

Trong python, tôi liệt kê các cửa sổ cấp cao nhất thông qua EnumWindows và tôi cũng liệt kê các quy trình qua EnumProcesses.Làm cách nào để tôi có thể xử lý cửa sổ chính bằng Python?

Sau đó, trong tập lệnh python, tôi đặt tất cả các cửa sổ xử lý thuộc về cùng một pid vào một danh sách (tôi đã làm điều này thông qua GetWindowThreadProcessId).

Sau đó tôi phát hiện ra điều gì đó: có 3 chốt cửa sổ thuộc về notepad.exe, nhưng tôi chỉ mở một tệp văn bản.

Tại sao?

Bên cạnh đó, tôi đã cố gắng đặt cửa sổ văn bản làm cửa sổ nền trước thông qua SetForegroundWindow, tôi đã chuyển ba chốt cửa sổ cho chức năng này và hai tác phẩm.

Làm cách nào để thực hiện điều này?

Trả lời

5

Quy trình đôi khi tạo cửa sổ ẩn cho mục đích riêng của chúng. Bạn nên bỏ qua chúng (sử dụng hàm IsWindowVisible).

+0

đã nhận. cảm ơn bạn – Alcott

4

Để điều tra loại điều này, người bạn thân nhất của bạn là Spy ++, đi kèm với một số phiên bản của Visual Studio, nếu bạn có thể nhận được.

Theo đó, notepad.exe tạo ra ba cửa sổ cấp cao nhất:

  1. Cửa sổ chính có thể nhìn thấy, lớp tên "Notepad", chồng chéo.
  2. Cửa sổ bật lên, bị tắt, bị tắt, tên lớp "MSCTFIME UI", chú thích "M".
  3. Cửa sổ bật lên, bị tắt, bị tắt, tên lớp "IME", chú thích "IME mặc định".

Hai cửa sổ ẩn được sử dụng nội bộ bằng notepad để triển khai IME (Trình soạn thảo phương thức nhập), GUI để nhập tập lệnh phức tạp.

Nhiều chương trình tạo cửa sổ ẩn cấp cao nhất cho nhiều thứ. Đối với những gì bạn có ý định, bạn có thể bỏ qua tất cả và chỉ sử dụng những cái nhìn thấy được.

+0

câu trả lời của bạn khá rõ ràng, cảm ơn bạn., – Alcott

Các vấn đề liên quan