3 TỔNG QUAN VỀ ACTIVE ACCESSIBILITY VÀ HOOK
3.4 Giao diện IAccessible
IAccessible(Viết tắt là IA) là một giao diện chứa các thuộc tính và phương thức dùng trong trong các UI (User Interface) phổ biến như là menu ,button,…
3.4.1 Các thuộc tính mơ tả nội dung
Giao diện IA cung cấp các thuộc tính mơ tảđể mơ tả các thơng tin khác nhau của một đối tượng . Một số thuộc tính chứa nội dung cụ thể , một số thuộc tính khác thì chứa nội dung mơ tả của chính bản thân các UI. Các dạng thơng tin của mỗi thuộc tính khác
Trang 106
nhau phụ thuộc vào đối tượng cần lấy thơng tin. Các thuộc tính mà chúng ta cần truy xuất bao gồm : • Thuộc tính Name • Thuộc tính Role • Thuộc tính State • Thuộc tính Value • Thuộc tính Description • Thuộc tính Help • Thuộc tính HelpTopic • Thuộc tính KeyboardShortcut • Thuộc tính DefaultAction 3.4.2 Mơ tả chi tiết Thuộc tính Name
Thuộc tính Name là một chuỗi dùng để nhận dạng, hoặc thơng báo tên của các nhân tố cho các ứng dụng. Tất cà các đối tượng đều hỗ trợ thuộc tính Name. Thuộc tính Name nhận được thơng qua việc gọi phương thức IAccessible::get_accName.
Ví dụ : Nút Start trong Windows cĩ thuộc tính Name là “Start”.
Thuộc tính Role
Thuộc tính Role mơ tả vai trị của nhân tố UI của đối tượng. Tất cả các đối tượng đều hỗ trợ thuộc tính Role. Thuộc tính Role nhận được thơng qua gọi phương thức
Accessible::get_accRole
Ví dụ : Windows cĩ Role là ROLE_SYSREM_WINDOW và control button cĩ role là ROLE_SYSTEM_PUSHBUTTON.
Trang 107
Thuộc tính State mơ tả trạng thái của đối tượng trong khoảng thời gian nhất thời. Tất cả các đối tượng đều hỗ trợ thuộc tính State.Thuộc tính State nhận được thơng qua gọi phương thức IAccessible::get_accState.
Active Accessibility cung cấp hằng số trạng thái của đối tượng, được định nghĩa trong thư viện oleacc, chúng kết nối nhận dạng trạng thái của đối tượng. Những nhà thiết kếđã tạo ra các hằng số trạng thái xác định trước. Nếu một giá trị State xác định trước
được trả về thì ta cĩ thể dùng hàm GetStateText để lấy văn bản mơ tả về giá trị State đĩ.
Thuộc tính Value
Thuộc tính Value cung cấp nguyên bản thơng tin thể hiện được chứa đựng trong các
đối tượng một cách trực quan. Thuộc tính Value nhận được thơng qua việc gọi phương thức IAccessible::get_accValue.
Ví dụ : Control edit thì thuộc tính Value là văn bản mà nĩ chứa đựng. Ngược lại menu item thì thuộc tính Value là rỗng.
Thuộc tính Description
Thuộc tính Description của đối tượng cung cấp nguyên bản mơ tả về hình thức trực quan của đối tượng. Phần mơ tả cĩ ý nghĩa rất quan trọng vì nĩ sẽ làm sáng tỏ rõ ràng ý nghĩa của các đối tượng mà cịn cĩ thểđược dùng trong ngữ cảnh tra cứu hoặc được dùng trong các ứng dụng khác. Thuộc tính này cĩ thể giúp người sử dụng hiểu được ý nghĩa tồn diện của các đối tượng.Thuộc tính Description nhận được thơng qua gọi phương thức IAccessible::get_accDescription
Thuộc tính Description được hỗ trợ khi sự mơ tả chưa được rõ ràng, hay là nĩ bổ
sung ý nghĩa cho các thuộc tính Name, Role, State, Value.
Ví dụ : Một button cĩ nhãn là “OK” thì khơng cần thêm thơng tin gì nữa, ngược lại khi một button chứa một hình ảnh một ngọn núi thì nĩ chưa được rõ ràng. Thuộc tính Name, Role, Help mơ tả ý nghĩa của chính đối tượng đĩ cịn thuộc tính Description thể
hiện những thơng tin bổ sung làm cho những ý nghĩa đĩ được sáng tỏ hơn. Ví dụ như thuộc tính Description trong trường hợp này là “đây là button thể hiện hình ngọn núi”.
Trang 108
Thuộc tính Help cung cấp những thơng tin nĩi cho người sử dụng biết chức năng của
đối tượng.Thuộc tính help nhận được thơng qua gọi phương thức IAccessible::getacc_Help Thuộc tính này chứa đựng thơng tin dưới dạng nổi (tương tự như tooltip) dùng để mơ tảđối tượng là gì hoặc ta sử dụng đối tượng đĩ như thế nào.
Ví dụ : Một toolbar button cĩ biểu tượng máy in thì thuộc tính Help của nĩ là “In tài liệu hiện tại”
Thơng tin của thuộc tính Help khơng phải là duy nhất bên trong giao diện người dùng.
Thuộc tính Help sẽ khơng được hỗ trợ nếu các thuộc tính khác đã cung cấp đầy đủ
thơng tin về mục đích ý nghĩa và hành động của đối tượng
Thuộc tính Help Topic
Thuộc tính Help Topic lấy những thơng tin chi tiết các hàm WinHelp của
Microsoft® Win32® kết hợp với đối tượng để thể hiện thơng tin .Thuộc tính này chỉ hỗ trợ
cho một sốđối tượng.Thuộc tính HelpTopic nhận được thơng qua gọi phương thức IAccessible::get_accHelpTopic
Thuộc tính KeyboardShortcut
Thuộc tính KeyboardShortcut mơ tả phím tắt hoặc khĩa liên kết với đối tượng. Thuộc tính KeyboarchShortcut nhận được thơng qua gọi phương thức
IAccessible::getacc_KeyboarchShortcut
Chuỗi trả về mơ tả một khĩa truy cập tắt (phím tắt) hoặc khĩa truy cập (giúp ta dễ
nhớ dễ truy cập) . Các kí tự của các khĩa truy cập được gạch dưới giống như các menu , menu item, các label …Chuỗi trả về phải chứa tên của khĩa cùng với một hay nhiều phím bổ sung. Chuỗi trả về phải cĩ định dạng rõ ràng để ta cĩ thể dễ dàng phân tách chúng như
là: [[phím bổ sung] + […] + tên phím].
Ví dụ : Bao gồm các phím sau : ALT+F, CTRL+ALT+4, WIN+F1, CTRL+ALT+SHIFT+BACKSPACE, hoặc đơn giản nhất là BACKSPACE.
Trang 109
Nếu đối tượng chứa cả hai Shortcut key và Access key thì thuộc tính
KeyboarchShortcut sẽ trả về access key . Access key là phím mà khi người dùng nhấn vào khi đối tượng hoặc cha của đối tượng đang giữ focus.
Ví dụ : Menu Print chứa cả hai shortcut key (Ctrl + P) và access key (P) .. Trong trường hợp này thuộc tính KeyboarchShortcut là P để phản ánh rằng người dùng phải nhấn cái gì khi menu đang nắm focus.
Thuộc tính DefaultAction
Thuộc tính DefaultAction mơ tả hành động chính yếu của đối tượng đĩ. Thuộc tính DefaultAction là một từ chỉ hành động hay một cụm từ chỉ hành động.Thuộc tính
DefaultAction được trả về thơng qua gọi hàm IAccessible::get_accDefaultAction.
3.4.3 Phương thức và thuộc tính Selection và Focus
Giống như nhiều nhân tố trong các ứng dụng đang vận hành của hệđiều hành Windows. Đối tượng truy cập select và nhận được focus từ bàn phím. Những thuộc tính này làm cho người dùng cĩ thể tương tác với các nhân tốứng dụng , thay đổi giá trị và cĩ thể vận dụng chúng trong ứng dụng của chúng ta.
Đối tượng focus là một đối tượng trong tồn bộ hệđiều hành , nĩ nhận được tham số đầu vào từ bàn phím. Đối tượng focus nếu khơng phải là cửa sổđang kích hoạt thì là đối tượng con của cửa sổđang kích hoạt.
Đối tượng selected thì được đánh dấu để tham gia vào một số kiểu thao tác của một nhĩm thao tác.
Ví dụ người dùng cĩ thể chọn nhiều item trong control listview, nhưng focus là chỉ
thuộc duy nhất một đối tượng trong hệđiều hành vào lúc này đĩ là những item đã được focus trong vùng chọn của các item.
Ta quyết định truy cập đối tượng focus hay hoặc những nhân tố con của nĩ thơng qua việc gọi phương thức IAccessible::accFocus. Ta quyết định truy cập đối tượng được chọn hay các đối tượng con của đối tượng được chọn qua phương thức
IAccessible::accSelection. Những đối tượng như là listview cĩ nhiều hơn một đối tượng con được chọn thì đối tượng cha phải hỗ trợ giao diện IEnumVARIANT cho phép ta liệt kê số con được chọn.
Trang 110
3.4.4 Phương thức và thuộc tính Navigate của đối tượng
Ứng dụng cĩ thểđiều hướng từđối tượng này đến đối tượng khác thơng qua phương thức IAccessible::accNavigate và IAccessible::accHitTest . Những phương thức này cho phép ta nhận được ID của các đối tượng con hoặc địa chỉ hoặc giao diện IAccessible của
đối tượng khác. Sựđiều hướng cho ta thấy các đối tượng được quan hệ với nhau như thế
nào. Đang điều hướng thì sẽ khơng thay đối selection hoặc focus của đối tượng.
Giao diện IAccessible cung cấp các thuộc tính và phương thức hỗ trợ nhiều dạng
điều hướng:
Sử dụng IAccessible::accHitTest
Để xác định một điểm cĩ thuộc đối tượng, đối tượng con hoặc khơng ta cĩ thể gọi phương thức IAccessible::accHitTest của đối tượng cha . Nếu các đối tượng con nằm chồng lấp trên cùng một điểm , IAccessibleHitTest trả vềđối tượng con cao nhất cĩ thể
nhìn thấy được .
Sử dụng IAccessible::accLocation
Để lấy vị trí khung của đối tượng hoặc một trong những đối tượng con ta phải gọi
IAccessible::accLocation. Phương thức này trả về tọa độ khung hình chữ nhật bao quanh
đối tượng . Nếu đối tượng khơng cĩ hình dạng giống như hình chữ nhật thì phương thức trả về khung hình chữ nhật nhỏ nhất bao quanh tất cảđối tượng.
Hình vẽ mơ tả mối quan hệ giữa miền các đối tượng khơng phải hình chữ nhật và miền hình chữ nhật.
Object Bounding Rect
Regional Object
Hit Test (passes) Hit Test (fails)
Hình 47 Mối quan hệ giữa các miền
IAccessible::accHittest thì chính xác hơn IAccessible::accLocation vì nĩ cĩ thể
Trang 111
bao quanh. Sự chính xác này rất hữu ích, ví dụ khi ứng dụng đang tìm các thơng tin thơng qua việc theo dõi vị trí con trỏ chuột.