Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 11 kết quả

Đề tài: Làm sao để biết được chuột vừa bôi đen một đoạn văn bản trên cửa sổ bất kỳ?

  1. #1
    Ngày gia nhập
    08 2009
    Bài viết
    98

    Mặc định Làm sao để biết được chuột vừa bôi đen một đoạn văn bản trên cửa sổ bất kỳ?

    Đã hook được mouse move, mouse click...
    nếu double vào một chữ hoặc quét qua một đoạn văn bản thì chương trình sẽ phát hiện ra???

  2. #2
    Ngày gia nhập
    08 2009
    Nơi ở
    TP Cần Thơ - Lộ 91B
    Bài viết
    214

    - Bắt sự kiện MouseMove là được rồi
    - Ví dụ tôi muốn bắt lỗi dùng chuột bôi đen văn bản trong richTextBox
    Code:
    private void MouseMove(object sender, MouseEvenArgs e){
              if ( e.Button == MouseButton.Left && richTextBox.SelectedText != ""){
                         //-- Báo lỗi ở đây
                         richTextBox.SelectionLength = 0; //-- Loại bỏ đoạn văn bản vừa chọn
              }                
    }

    PHÁT TRIỂN PHẦN MỀM HỖ TRỢ CÔNG VIỆC
    ỨNG DỤNG QUẢN LÝ CHO DOANH NGHIỆP VỪA VÀ NHỎ

    (0969.867.490 - ltnghia.wins@gmail.com)

  3. #3
    Ngày gia nhập
    10 2010
    Bài viết
    518

    Thử thế này nhé:
    đầu tiền dùng WindowFromPoint để xác định handle của cửa sổ tại vị trí chuột.
    Định nói với bác là dùng GetClassName để kiểm tra xem class name của cửa sổ có phải là edit không(textbox trong .net là class edit của window) mà cái này không đúng trong các trường hợp control dc tạo mới.-chỗ này nếu kiểm tra dc thì tốt hơn
    Gửi EM_GETSEL để lấy vị trí bắc đầu dc bôi đen & vị trí kết thúc
    Gửi EM_GETTEXT để lấy text của edit
    làm theo 2 dòng cuối thì bác có dc text và vị trí cần lấy giá trị=> ngon nhé.
    Các message của lớp edit có thể tham khảo thêm ở đây: http://msdn.microsoft.com/en-us/libr...=VS.85%29.aspx
    Nói thêm 1 chút: cái handle dc trả về từ WindowFromPoint k phải lúc nào cũng đúng, ví dụ trong 1 combobox có 1 textbox, do vậy khi dùng hàm này thì nó trả về handle của combobox-nếu bác muốn làm chặt chẽ thì m nói cho-vì cũng hơi loằng ngoằng

  4. #4
    Ngày gia nhập
    08 2009
    Bài viết
    98

    Trích dẫn Nguyên bản được gửi bởi Solewind.IT Xem bài viết
    Gửi EM_GETSEL để lấy vị trí bắc đầu dc bôi đen & vị trí kết thúc
    Gửi EM_GETTEXT để lấy text của edit
    Nói thật chỗ đó không hiểu lắm . C++ mình cũng rành, nên chưa hiện thực được ý tưởng của bạn.
    Với lại mình muốn check xem text có được bôi đen ở mọi app, chẳng hạn trong PDF, Nodepage...

  5. #5
    Ngày gia nhập
    06 2009
    Nơi ở
    Cái hộp
    Bài viết
    1,255

    Dùng API SendMessage() để gửi đi, nhưng mà EM_GETSELTEXT chỉ dùng cho các edit control thôi.
    Men talk of killing time, while time quietly kills them.
    Time is what we want most, but what we use worst.
    ------------------------------
    YinYang's Programming Blog

  6. #6
    Ngày gia nhập
    10 2010
    Bài viết
    518

    Mặc định Làm sao để biết được chuột vừa bôi đen một đoạn văn bản trên cửa sổ bất kỳ?

    Trích dẫn Nguyên bản được gửi bởi Yin Yang Xem bài viết
    Dùng API SendMessage() để gửi đi, nhưng mà EM_GETSELTEXT chỉ dùng cho các edit control thôi.
    Ko phải đâu bác ah. EM_GETSELTEXT chỉ dùng cho rich edit thôi, còn EM_GETSEL chạy cho cả hai.
    Dạng của EM_GETSEL sẽ là
    int start,end;
    SendMessage(handle, EM_GETSEL, ref start, ref end);
    Sau khi chạy thì start chứa vị trí bắt đầu dc chọn, end chứa vị trí cuối dc chọn.
    EM_GETTEXT đề nghị google "sendmessage em_gettext example".
    Nói thêm 1 chút, nếu bác chỉ định lấy text đang được select ở 1 textbox thì có thể làm như mình nói nhé, còn nếu muốn lấy ở cửa sổ bất kỳ thì ngoài cách dùng clipboard ra chắc là k còn cách nào khác đâu-vì k thể xác định được khối dc chọn đâu. muốn dùng clipboard mà dự liệu k bị mất thì google với từ khóa là "backup clipboard". Đầu tiên là backup, rồi copy, rồi lấy text, rồi phục hồi lại clipboard bằng dữ liệu đã dc backup. Làm dc thì gửi cho mềnh 1 bản nhé
    Đã được chỉnh sửa lần cuối bởi Solewind.IT : 25-07-2011 lúc 08:25 AM.

  7. #7
    Ngày gia nhập
    06 2009
    Nơi ở
    Cái hộp
    Bài viết
    1,255

    phải rồi, nhưng EM_GETSELTEXT trả về text còn EM_GETSEL trả về vị trí. Ví dụ làm 1 từ điển, có thể lấy được text ở cả tiêu đề form. Trước đây cũng thử nhưng chưa thành công, bạn nào có ý tưởng giải quyết vấn đề này ko?
    Men talk of killing time, while time quietly kills them.
    Time is what we want most, but what we use worst.
    ------------------------------
    YinYang's Programming Blog

  8. #8
    Ngày gia nhập
    10 2010
    Bài viết
    518

    Cái vụ tra từ điển ấy trước mình cũng có để ý, các bác ấy thường hook hàm DrawText vì muốn vẽ 1 chuỗi thì phải dùng hàm này, thấy giang hồ đồn đại vậy thôi chứ chưa thử, cũng k hiểu vì sao mà cái này khá là khoai vì chưa thấy chương trình nào bắt dc hết cả-m thấy hay nhất lingoes nhưng h cũng tắt điện với Firefox 4 roài.

  9. #9
    Ngày gia nhập
    08 2009
    Bài viết
    98

    Ý tưởng của mình là nếu text được select thì sendkey Ctrl + C cho nó chui vào clipboard. Rồi lấy ở đó và show phần giải nghĩa lên. Tất nhiên là với text ở menu hay form titles... thì bó tay.
    Hiện nay mình đã làm được làm ấn Ctrl phải là tra được từ điển rồi, chức năng dịch đoạn văn thì gọi GoogleTranslateAPIs. Tốc độ nhanh, bắt được text ở bất kì đâu nếu ả cho select. Nhưng code C# (vì đọc tài liều thấy vốn từ kém ức chế quá, cài LacViet lại nặng, làm phục vụ bản thân thôi ).
    Nhiều khi mình đọc truyện hay tài liệu, tay chỉ để trên con chuột thôi, tay kia được giải phóng mà cứ thỉnh thoảng lại phải ấn phím thấy mệt quá, giờ muốn làm thêm mode là select text cái là nó bật form ra ngay

    Solving Problem??????????????????????????

  10. #10
    Ngày gia nhập
    10 2010
    Bài viết
    518

    Trích dẫn Nguyên bản được gửi bởi nguyenduykhanh1986 Xem bài viết
    Ý tưởng của mình là nếu text được select thì sendkey Ctrl + C cho nó chui vào clipboard. Rồi lấy ở đó và show phần giải nghĩa lên. Tất nhiên là với text ở menu hay form titles... thì bó tay.
    Hiện nay mình đã làm được làm ấn Ctrl phải là tra được từ điển rồi, chức năng dịch đoạn văn thì gọi GoogleTranslateAPIs. Tốc độ nhanh, bắt được text ở bất kì đâu nếu ả cho select. Nhưng code C# (vì đọc tài liều thấy vốn từ kém ức chế quá, cài LacViet lại nặng, làm phục vụ bản thân thôi ).
    Nhiều khi mình đọc truyện hay tài liệu, tay chỉ để trên con chuột thôi, tay kia được giải phóng mà cứ thỉnh thoảng lại phải ấn phím thấy mệt quá, giờ muốn làm thêm mode là select text cái là nó bật form ra ngay

    Solving Problem??????????????????????????
    Vậy ko nói từ đầu. Bác hook dc thì cũng biết dc khi nào có double click, k thì bắt luôn MouseUp ấy, còn vụ select thì copy nếu text="" thì k có select

Các đề tài tương tự

  1. Pattern ( trong regex ) lọc lấy chuỗi giữa 2 chuỗi biết trước ?
    Gửi bởi thitgaluoc trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 23-05-2011, 10:28 PM
  2. Xử lý chuỗi trên C# | Tách chuỗi con trong chuỗi trên C#?
    Gửi bởi ddsivp trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 8
    Bài viết cuối: 18-03-2011, 12:05 AM
  3. Turbo C Lỗi Nhập một chuỗi và 1 từ cho biết từ đó xuất hiện trong chuỗi bao nhiêu lần?
    Gửi bởi vietvinhqn1992 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 17-01-2011, 12:38 PM
  4. biến static trên C là gì? Công dụng và cách sử dụng biến stactis trên C???
    Gửi bởi nguoingu trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 15-05-2009, 09:31 AM
  5. Cách đánh dấu một điểm trên Form (bằng chuột), vẽ một đường thẳng bằng chuột?????????
    Gửi bởi nguyentinh trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 3
    Bài viết cuối: 17-10-2007, 12:17 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn