1. Tuyển Mod quản lý diễn đàn. Các thành viên xem chi tiết tại đây

Cho hỏi về Click and See

Chủ đề trong 'Điện - Điện tử - Viễn thông' bởi hanibal, 07/06/2005.

  1. 0 người đang xem box này (Thành viên: 0, Khách: 0)
  1. hanibal

    hanibal Thành viên mới

    Tham gia ngày:
    11/03/2004
    Bài viết:
    518
    Đã được thích:
    0
    Cho hỏi về Click and See

    Hi,
    Tôi muốn viết một ứng dụng tương tự như CT Từ điển Click&See chạy trên môi trường WinNT nhưng chưa biết phải dùng cách nào (ngôn ngữ, tài liệu hướng dẫn. kinh nghiệm,..)
    Bạn nào biết làm ơn chỉ giùm.
    Thanks
  2. nvl

    nvl ĐTVT Moderator

    Tham gia ngày:
    31/01/2002
    Bài viết:
    4.304
    Đã được thích:
    6
    Có nhiều cách để làm việc này, không khó lắm, nhưng cần phải học và thêm một chút kiên trì. Bạn có thể hook chuột và bắt phím, đó là cách dễ nhất. Một cách khác nữa là override API, cách này phức tạp hơn nhưng cũng nhanh hơn. Cả hai cách này đều sẽ giúp bạn copy được text tại vị trí cần thiết.
    Nhược điểm của các phương pháp copy text là đôi khi có một số vị trí khá khó khăn không thể copy chính xác được. Vì vậy, người ta còn dùng cả cách OCR, tức là mắt người nhìn thấy chữ ở đâu trên màn hình thì cũng có thể copy được bitmap tại đó. Sau khi có được bitmap rồi, người ta dùng chương trình nhận dạng dựa trên mạng Neutron để đổi ra text. Cái này cũng không khó, vì tất cả những thứ cần được nhận chỉ là 26x2 chữ cái. Phương pháp OCR tỏ ra khá đa năng nhưng đổi lại là nếu chữ quá to hoặc quá bé thì cũng không nhận dạng được.
    Bạn thử nói xem bạn đã học được ngôn ngữ nào rồi, lập được những chương trình đến mức độ nào, thì tôi mới tư vấn tiếp được
  3. hanibal

    hanibal Thành viên mới

    Tham gia ngày:
    11/03/2004
    Bài viết:
    518
    Đã được thích:
    0
    Thanks,
    Rất cám ơn nvl đã giúp đỡ. Thực tế tôi mới chỉ lập trình với mức độ nghiệp dư tàm tạm.
    Về ứng dụng này mục đích của tôi là lấy được đoạn text (gồm các số 0-9 với font chuẩn của WindowNT, size 8 : cố định) là kết xuất của một ứng dụng chạy trên WinNT viết bằng ngôn ngữ CHILL. Tôi muốn lấy đoạn text này (bằng cách bôi đen chẳng hạn) rồi click như ct Click&See để đưa ra một chú thích tương ứng (chỉ khoảng ~ 50 word) từ một CSDL.
    Với nhu cầu như thế rất mong nvl giúp thêm.
    Thanks
  4. nvl

    nvl ĐTVT Moderator

    Tham gia ngày:
    31/01/2002
    Bài viết:
    4.304
    Đã được thích:
    6
    Bài toán của bạn khá đơn giản, nếu như bạn có thể copy và paste đoạn text đó. Chương trình viết bằng CHILL chưa chắc đã sử dụng các hàm API của WIN nên bạn sẽ phải dùng phương pháp hook. Bây giờ bạn thử thế này xem:
    - Bôi đen đoạn text cần copy, sau đó copy và paste ra một chỗ khác (thí dụ notepad). Nếu được thì lại thông báo để tôi chỉ tiếp
    - Bạn định dùng công cụ phát triển nào VB, VC ?
  5. hanibal

    hanibal Thành viên mới

    Tham gia ngày:
    11/03/2004
    Bài viết:
    518
    Đã được thích:
    0
    Thanks nvl,
    Tôi đã thử rồi, kq là không copy được đoạn text (bằng bàn phím, chuột ).
    Nếu phải chọn giữa 02 ngôn ngữ thì có lẽ VB với tôi quen thuộc hơn.
    nvl chỉ giùm tiếp với
  6. nvl

    nvl ĐTVT Moderator

    Tham gia ngày:
    31/01/2002
    Bài viết:
    4.304
    Đã được thích:
    6
    Nếu bạn định copy một đoạn text trong cửa sổ console thì không phải là ctr-C với cả ctr-V như bình thường đâu. Bạn phải nhấn phím Enter hoặc chuột phải để copy sau khi đã đánh dấu. Nếu copy được thì bài toán sẽ đơn giản hơn rất nhiều, nếu không bạn phải chọn 1 trong 2 giải pháp:
    1. Copy bitmap rồi nhận dạng kiểu OCR
    2. Tìm xem chương trình nó dùng hàm nào để output text thì override nó.
    Tôi nghĩ rằng nếu không thể copy và paste, bạn nên chọn giải pháp 1. Trước hết xin hỏi, bạn đã biết cách viết DLL chưa? Đã hook chuột và bàn phím lần nào chưa? Dùng VB yếu và bất tiện lắm đó !
  7. hanibal

    hanibal Thành viên mới

    Tham gia ngày:
    11/03/2004
    Bài viết:
    518
    Đã được thích:
    0
    OK, có thể copy được và paste sang NotePad bằng cách bôi đen (chuột Trái và Phải) nvl ạ
  8. nvl

    nvl ĐTVT Moderator

    Tham gia ngày:
    31/01/2002
    Bài viết:
    4.304
    Đã được thích:
    6
    Rất tuyệt, vì đã copy được như vậy thì công việc tự nhiên giảm tải được 50% rồi. Bây giờ bạn có thể yên tâm mà dùng VB, nếu không phải viết hook. Bạn hãy lựa chọn lần cuối trước khi bắt tay vào làm:
    1. Giải pháp 1: Hook chuột- Bạn phải biết cách viết DLL và nên dùng một công cụ khác VB
    2. Giải pháp 2: Hotkey- Bạn tô đen chỗ cần copy, nhấn hotkey và chú thích sẽ tự động hiện ra như ý. Cách này hoàn toàn thực hiện được bằng VB
    Nào chọn đi...
  9. hanibal

    hanibal Thành viên mới

    Tham gia ngày:
    11/03/2004
    Bài viết:
    518
    Đã được thích:
    0
    Thanks nvl,
    Mình chọn VB thôi, nvl chỉ tiếp nhé
  10. nvl

    nvl ĐTVT Moderator

    Tham gia ngày:
    31/01/2002
    Bài viết:
    4.304
    Đã được thích:
    6
    Bắt đầu nào:
    - Dùng hàm RegisterHotKey để đăng kí một phím nóng với hệ thống. Như vậy, khi bạn dùng phím nóng để kích hoạt chương trình từ bất cứ thời điểm nào, bạn cũng nhận được một cái msg để xử lý tác vụ từ hệ thống.
    - Dùng hàm Send Keyboard Event để gửi phím đến cửa sổ console (của chương trình cần copy). Bạn có thể lấy được handle của cửa sổ này nhờ cách xem active window là cái nào.
    - Giả lập sự kiện copy + paste vào clipboard
    - Lấy đoạn text từ clipboard ra và xử lý. Cửa sổ chú thích có thể hiển thị tại vị trí chuột
    Các bước đại khái như vậy. Tài liệu thì tra trên MSDN, có đầy đủ và chi tiết cho tất cả các bước !
    Chúc thành công

Chia sẻ trang này