Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Làm thế nào để có được một xử lý cửa sổ giao diện điều khiển (HWND)

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch thuật của Microsoft và có thể được Cộng đồng Microsoft chỉnh sửa lại thông qua công nghệ CTF thay vì một biên dịch viên chuyên nghiệp. Microsoft cung cấp các bài viết được cả biên dịch viên và phần mềm dịch thuật thực hiện và cộng đồng chỉnh sửa lại để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng nhiều ngôn ngữ Tuy nhiên, bài viết do máy dịch hoặc thậm chí cộng đồng chỉnh sửa sau không phải lúc nào cũng hoàn hảo. Các bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này: 124103
Tóm tắt
Nó có thể hữu ích để thao tác một cửa sổ kết hợp với một consoleapplication. Win32 API cung cấp không có phương pháp trực tiếp cho việc thu thập thewindow xử lý liên quan đến một ứng dụng giao diện điều khiển. Tuy nhiên, bạn canobtain cửa sổ xử lý bằng cách gọi FindWindow(). Chức năng này lấy awindow xử lý dựa trên một tên lớp hoặc tên cửa sổ.

Gọi GetConsoleTitle() để xác định tiêu đề giao diện điều khiển hiện tại. Sau đó supplythe hiện tại giao diện điều khiển tên để FindWindow().
Thông tin thêm
Bởi vì nhiều cửa sổ có thể có cùng tên, bạn nên thay đổi tiêu đề cửa sổ giao diện điều khiển thecurrent để một tiêu đề duy nhất. Điều này sẽ giúp ngăn chặn thewrong cửa sổ xử lý được trả lại. Sử dụng SetConsoleTitle() để changethe tiêu đề cửa sổ giao diện điều khiển hiện tại. Ở đây là quá trình:
  1. Gọi GetConsoleTitle() để tiết kiệm tiêu đề cửa sổ giao diện điều khiển hiện tại.
  2. Gọi SetConsoleTitle() để thay đổi tiêu đề giao diện điều khiển để một tiêu đề duy nhất.
  3. Gọi Sleep(40) để đảm bảo tiêu đề cửa sổ đã được Cập Nhật.
  4. Gọi FindWindow (NULL, uniquetitle), để có được HWND này gọi trả về HWND--hoặc NULL nếu thao tác thất bại.
  5. Gọi SetConsoleTitle() với giá trị Lấy từ bước 1, để khôi phục lại tiêu đề cửa sổ ban đầu.
Bạn nên kiểm tra kết quả HWND. Ví dụ, bạn có thể kiểm tra để xem nếu thereturned HWND tương ứng với quá trình hiện tại bởi callingGetWindowText() trên HWND và so sánh kết quả withGetConsoleTitle().

HWND kết quả không được đảm bảo để phù hợp với tất cả cửa sổ handleoperations.

Mẫu mã

Các chức năng sau truy lục hiện tại giao diện điều khiển ứng dụng windowhandle (HWND). Nếu chức năng thành công, giá trị trả lại là xử lý của cửa sổ giao diện điều khiển. Nếu chức năng không thành công, giá trị trả lại là NULL. Bỏ Someerror kiểm tra qua, cho ngắn gọn.
   HWND GetConsoleHwnd(void)   {       #define MY_BUFSIZE 1024 // Buffer size for console window titles.       HWND hwndFound;         // This is what is returned to the caller.       char pszNewWindowTitle[MY_BUFSIZE]; // Contains fabricated                                           // WindowTitle.       char pszOldWindowTitle[MY_BUFSIZE]; // Contains original                                           // WindowTitle.       // Fetch current window title.       GetConsoleTitle(pszOldWindowTitle, MY_BUFSIZE);       // Format a "unique" NewWindowTitle.       wsprintf(pszNewWindowTitle,"%d/%d",                   GetTickCount(),                   GetCurrentProcessId());       // Change current window title.       SetConsoleTitle(pszNewWindowTitle);       // Ensure window title has been updated.       Sleep(40);       // Look for NewWindowTitle.       hwndFound=FindWindow(NULL, pszNewWindowTitle);       // Restore original window title.       SetConsoleTitle(pszOldWindowTitle);       return(hwndFound);   }				

Cảnh báo: Bài viết này đã được dịch tự động

Thuộc tính

ID Bài viết: 124103 - Xem lại Lần cuối: 02/09/2014 18:08:00 - Bản sửa đổi: 3.0

  • kbhowto kbwndw kbmt KB124103 KbMtvi
Phản hồi
ype="text/javascript"> Asimov.clickstreamTracker.init();