Xây dựng lớp xử lý thơng tin một đối tượng

Một phần của tài liệu phần mềm hỗ trợ người khiếm thị học tiếng anh (Trang 124)

4 NHỮNG KỸ THUẬT SỬ DỤNG TRONG ỨNG DỤNG

4.2 Xây dựng lớp xử lý thơng tin một đối tượng

Để mơ tả thơng tin cho người mù ta phải biết chính xác thơng tin cần mơ tả của các các đối tượng. Vì vậy ứng dụng phải xây dựng một đối tượng truy cập thơng tin

(AccObject) hồn chỉnh để lấy thơng tin của các đối tượng hoặc các phần tử UI một cách

đầy đủ . Đây là một đối tượng thu thập tồn bộ thơng tin cũng như các hành động của một

đối tượng cụ thể như là name, value, DefaultAction,….Ví dụ nút Start của Windows là một AccObject cĩ name là “Start” và DefaultAction là “Press” .

Cĩ nhiều kỹ thuật để lấy thơng tin của các đối tượng. Ta cĩ thể dùng các hàm API (Application Programming Interface) hoặc sử dụng Hook (cơ chế câu mĩc giữa ứng dụng và hệđiều hành) để lấy thơng tin của các đối tượng. Tuy nhiên các kỹ thuật này khá phức tạp địi hỏi người lập trình viên phải tốn nhiều cơng sức mà mang lại hiệu quả khơng cao.

Với cơng nghệ phát triển mạnh mẽ hiện nay Microsoft đã cung cấp một kỹ thuật cho phép ta truy cập các thơng tin của đối tượng một cách dễ dàng và đầy đủ. Đĩ là phương pháp MSAA (Microsoft Active Accessibility) đã được tích hợp vào .Net Framework dưới dạng một thư viện liên kết động.

MSAA là một chuNn dựa trên COM (Component Object Model) do Microsoft đề

xuất nhằm tạo ra một cách thức để các phần mềm và hệđiều hành (HĐH) cĩ thể giao tiếp

được với nhau. Các DLL hiện thực cơ chế này được tích hợp vào các HĐH Windows phiên bản từ 98 trở về sau. MSAA cung cấp các tính năng lập trình dưới dạng các giao diện COM (COM interface) và API. Theo cơ chế này, các phần tử giao diện được đặc trưng bởi các đối tượng COM (COM object), tạm gọi là accessible object - đối tượng truy cập. Các

Trang 125

bao gồm tên, toạđộ màn hình, và một số thơng tin khác. Tất cả các accessibility object đều hiện thực interface IAccessible; và thơng qua việc gọi các phương thức và truy cập vào các thuộc tính của interface này, chúng ta cĩ thể lấy được thơng tin của phần tử giao diện. Trong đề tài này chúng tơi dùng kỹ thuật MSAA.

Muốn sử dụng MSAA ta chỉ cần AddReference Accessibility vào ứng dụng. Accessibility cĩ rất nhiều thành phần trong đĩ ta chỉ cần quan tâm đến giao diện IAccessible, nĩ là giao diện cĩ thể truy cập được thơng tin của các đối tượng hỗ trợ

MSAA. Ta cĩ thể lấy thơng tin giao diện IAccessible của một đối tượng bằng nhiều cách như lấy thơng tin giao diện IAccessible từ một điểm (AccessibleObjectFromPoint), từ một cửa sổđịnh danh bất kì (AccessibleObjectFromWindow) hay từ một sự kiện định danh (AccessibleObjectFromEvent),…

Sau đây là một ví dụ minh họa việc lấy thơng tin giao diện IAccessible tại vị trí một

điểm cho trước trên màn hình:

[DllImport("oleacc.dll")]

public static extern IntPtr AccessibleObjectFromPoint(Point pt, [Out, MarshalAs(UnmanagedType.Interface)] out IAccessible accObj, [Out]

out object ChildID);

Như ta thấy ở ví dụ trên, việc lấy thơng tin giao diện IAccessible từ một điểm cho trước khá dễ dàng. “pt” là tham sốđiểm cho trước, “accobj” là tham số giao diện IAccessible được trả về, “ChildID” là tham số chỉ chính đối tượng hiện hành hay là đối tượng con hoặc thành phần con của đối tượng hiện hành

Một đối tượng cĩ rất nhiều thuộc tính giúp ta cĩ thể nhận biết được đối tượng chẳng hạn như thuộc tính Name (đối tựơng nào cũng hỗ trợ thuộc tính này), thuộc tính Role giúp ta nhận biết được là loại đối tượng nào: button hay combobox,…

Từ những thơng tin thu thập được của đối tượng AccObject, ta sẽ sàng lọc để lấy ra những thơng tin cần thiết phục vụ cho việc mơ tả thơng tin cho người mù. Ngồi ra, căn cứ

vào những thơng tin đĩ, ta cĩ thể nhận biết được nĩ là đối tượng gì, trạng thái ra sao, hành

động mặc định của đối tượng đĩ, nĩ là đối tượng cha hay là một đối tượng con trong một tập các đối tượng và những thơng tin mơ tả chi tiết vềđối tượng ,…

Trang 126

Đối với một đối tượng giao diện thơng thường ta cần quan tâm đến các thuộc tính chính yếu như :

• Thuộc tính Name: cho biết tên của đối tượng.

• Thuộc tính Role: cho biết nĩ là đối tượng gì , là button hay combobox.

• Thuộc tính State: cho biết trạng thái của đối tượng , thuộc tính này quan trọng với một số control như checkbox đã được chọn hay chưa, radiobutton đã nhấn hay khơng,….

Sau đây là một ví dụ minh họa việc ta sẽ lấy thơng tin tên của chính đối tượng hiện hành một cách khá dễ dàng khi ta đã cĩ giao diện IAccessible của đối tượng nĩ :

private string GetObjectName(IAccessible IAcc){ return IAcc.get_accName(0);

}

Một phần của tài liệu phần mềm hỗ trợ người khiếm thị học tiếng anh (Trang 124)

Tải bản đầy đủ (PDF)

(196 trang)