2012-03-17 36 views
7

Tôi muốn kiểm tra xem cửa sổ của ứng dụng bên ngoài có thanh cuộn dọc hay ngang có thể nhìn thấy bằng HWND (tay cầm) của cửa sổ, tồn tại bất kỳ chức năng WinApi nào để nhận thông tin này không? Tôi thực sự thử chức năng GetScrollInfo nhưng có vẻ như không lấy thông tin về khả năng hiển thị của thanh cuộn.Làm thế nào tôi có thể kiểm tra xem Cửa sổ có thanh cuộn có thể nhìn thấy bằng HWND của mình không?

Trả lời

16

Làm thế nào về GetScrollBarInfo với OBJID_HSCROLL hoặc OBJID_VSCROLL

Nếu idObject là OBJID_CLIENT và cửa sổ theo quy định của hwnd không phải là một điều khiển thanh hệ thống di chuyển, hệ thống sẽ gửi thông điệp SBM_GETSCROLLBARINFO vào cửa sổ để có được thanh cuộn thông tin. Điều này cho phép GetScrollBarInfo hoạt động trên một điều khiển tùy chỉnh giống như một thanh cuộn. Nếu cửa sổ không xử lý thông điệp SBM_GETSCROLLBARINFO, chức năng GetScrollBarInfo thất bại.

Bạn có thể kiểm tra rgstate trong cơ cấu SCROLLBARINFO, có một lá cờ STATE_SYSTEM_INVISIBLE đó.


Một cách khác có thể là để kiểm tra GetWindowLong(hWnd, GWL_STYLE) and (WS_HSCROLL or WS_VSCROLL) <> 0

+0

trông đầy hứa hẹn, nhưng không làm việc với các cửa sổ trình duyệt Internet Explorer hoặc các ứng dụng Explorer.exe (Windows 7) – Salvador

+1

Tôi tin rằng 'Explorer.exe' chứa điều khiển 'SysTreeView32' và' SysListView32' (cả hai trả về hợp lệ 'WS_HSCROLL' hoặc' WS_VSCROLL') với 'GetWindowLong'. Tôi sử dụng Spy ++ để xác nhận kiểu cửa sổ. không thử nghiệm với 'GetScrollBarInfo'. – kobik

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