1 - Ý tưởng dẫn đến giải thuật:
- Mục đích yêu cầu của đề tài là: "Nhận dạng từ dưới cursor mouse trên desktop window". Cĩ nghĩa là tại một vị trí bất kỳ nào đĩ của cursor mouse trên màn hình Windows nếu cĩ một tác động chuột quy định trước (chẳng hạn như click nút phải của chuột) thì phải lấy được từở ngay dưới vị trí cursor (nếu cĩ), hoặc xuất ra thơng báo cho biết khơng cĩ từ nào nằm ngay dưới vị trí cursor đang đứng.
- Cĩ 2 dạng thể hiện văn bản trên màn hình Windows, đĩ là: * Thể hiện dưới dạng ảnh, dùng hàm kết xuất và xử lý ảnh * Thể hiện dưới dạng chuỗi văn bản, dùng hàm kết xuất văn bản
- Đối với dạng thể hiện ảnh, văn bản chỉ là tập các điểm ảnh của bức ảnh, chẳng cĩ ý nghĩa gì khác đối với Windows, nên nếu muốn trích văn bản ra chỉ cĩ một cách là xử lý ảnh, điều này thực sự là một vấn đề hay và cĩ nhiều ứng dụng thực tiễn: như nhận dạng một trang giấy được scan vào máy để tạo ra file text tương ứng thay cho việc đánh máy lại trang giấy đĩ. Tuy nhiên nĩ là vấn đề hết sức phức tạp cĩ sai số nhất định, và tùy thuộc vào font chữ mà văn bản thể hiện, trong khi đĩ cĩ một cách khác để lấy đượïc chính xác các dịng text trên màn hình.
- Đối với dạng thể hiện văn bản bằng các hàm kết xuất văn bản: Ứng dụng sẽ gởi cho Windows chuỗi văn bản cần thể hiện và các thơng số cần thiết, và Windows dùng các hàm kết xuất văn bản để vẽ chuỗi văn bản đĩ ra màn hình. Từ cách kết xuất đĩ đã nảy sinh một ý tưởng về việc nhận dạng các dịng text trên màn hình: là nếu ta cĩ thể khống chế các hàm kết xuất văn bản, lấy về các thơng tin của các hàm này, thì vấn đề cĩ thể thực hiện được mà khơng cần phải xử lý ảnh.
* Từ sự phân tích đĩ chúng tơi đã chọn giải thuật dựa vào sự khống chế các hàm xuất văn bản của Windows, và cũng may mắn là hầu như tất cả dịng văn bản kết xuất ra màn hình đều dùng dạng kết xuất dùng hàm kết xuất văn bản, nên nếu thực hiện hồn hảo ý tưởng nĩi trên thì vấn đềđược giải quyết gần như hồn tồn.
2 - Phân tích vấn đề:
Để thực hiện được các ý tưởng trên, cần phải thực hiện các việc sau:
- Override các hàm kết xuất văn bản của Windows để khống chế việc kết xuất văn bản ra màn hình.
- Tạo một cái bẫy sự kiện chuột để khi sự kiện chuột quy định xảy ra sẽ dẫn vào phần xử lý lấy text của chương trình. Chú ý là trong phần xử lý này phải cĩ cách nào đĩ để khiến Windows vẽ lại các dịng text, cĩ như vậy thì hàm override kết xuất
văn bản mới vớt được các thơng tin, và in kết quả vào cửa sổứng dụng của chương trình chính.
- Cĩ một đoạn chương trình để phân tích dịng văn bản, để tách lấy từ ra.
- Chương trình chính làm điểm bắt đầu / kết thúc chương trình, và enable / disable việc trích lấy từ (bẫy sự kiện chuột).