Thực hành điều khiển VnVoice

Trang 1 trong tổng số 2 trang 1, 2  Next

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

Thực hành điều khiển VnVoice

Bài gửi  Admin on 30/9/2011, 08:44

Tham khảo: Lập trình tương tác bằng VB6
Lấy về: VnVoice 1.0
Codes:




Được sửa bởi Admin ngày 30/9/2011, 14:01; sửa lần 4.

Admin
Admin

Tổng số bài gửi : 291
Join date : 18/02/2009

Xem lý lịch thành viên http://hedieuhanh.forumvi.net

Về Đầu Trang Go down

Thay mat ca lop cam on Thay rat nhieu.

Bài gửi  NguyenVanNam(I11C) on 30/9/2011, 09:15

em chao Thay.
Hom truoc thay day mon vnvoice hay qua. em thay rat thich, Em thay no duoc ung dung rat nhieu trong thuc tien. em co mot y tuong doi voi cong viec la se doc ten nhung benh nhan da co ket qua bang chuong trinh vnvoice nhung doc qua CSDL, em nghi la duoc vi minh se xuat file text cua CSDL vao clipboard thi se doc duoc. Em se lam thu phan nay, mong rang se duoc su huong dan them cua Thay.
Mot lan nua xin chan thanh cam on Thay. Em chao Thay.

Admin
- Thày ủng hộ và sẵn sàng giúp em hay bạn nào khác quan tâm đến ứng dụng công nghệ TTS. Tất cả đã trong tầm tay !
- Tuy nhiên, trước mắt hãy chú ý và chịu khó bỏ dấu cho bài của mình đã !

NguyenVanNam(I11C)

Tổng số bài gửi : 13
Join date : 27/08/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thực hành điều khiển VnVoice

Bài gửi  NGUYENDINHNGHIA-I11C on 30/9/2011, 09:20

NguyenVanNam(I11C) đã viết: em chao Thay.
Hom truoc thay day mon vnvoice hay qua. em thay rat thich, Em thay no duoc ung dung rat nhieu trong thuc tien. em co mot y tuong doi voi cong viec la se doc ten nhung benh nhan da co ket qua bang chuong trinh vnvoice nhung doc qua CSDL, em nghi la duoc vi minh se xuat file text cua CSDL vao clipboard thi se doc duoc. Em se lam thu phan nay, mong rang se duoc su huong dan them cua Thay.
Mot lan nua xin chan thanh cam on Thay. Em chao Thay.

Cho mình hỏi , theo như lời bạn nói thì vnvoice được ứng dụng rất nhiều trong thực tiễn là những ứng dụng gì vậy , bạn có thể kể cho mình một số ứng dụng được áp dụng rộng rãi trong thực tế không .

NGUYENDINHNGHIA-I11C

Tổng số bài gửi : 36
Join date : 25/08/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Chao Nghia

Bài gửi  NguyenVanNam(I11C) on 30/9/2011, 09:45

Chao Nghia.
Vnvoice la mot chuong ma minh moi biet hom qua Thay moi day, va theo minh no la mot ung dung rat hay va rat thuc tien.
VD: tat ca cac dich vu deu can thiet phai goi ten hoac STT cua mot khach hang. neu nhu co mot nguoi ngoi goi thi qua don gian, phai mat tien thue nhan cong va neu ung dung rong rai thi khong the thuc hien duoc. nhu vay chung ta phai dung VnVoice. ngoai ra no con duoc dung trong nhieu cai nua ma chung ta chua biet. Minh co the giai thich them cho ban xu huong phat trien trong tuong lai. Hien tai may tinh co the dieu khien bang giong noi. nhu vay chuong trinh Vnvoice se co the lam duoc tat ca. khi ban goi mot doan text de thuc hen mot van de gi do, VnVoice se chuyen thanh giong noi va giong noi do se duoc thuc thi tren may tinh. va nhu vay co phai la ban co the dieu khien may tinh bang cach chi can goi lenh. Ngoai ra ung dung thuc te ma minh co neu trong bai tren. Ung dung vnvoice de doc ten cac benh nhan da co ket qua, luc do khong can phai nguoi ngoi xem benh nhan nao co ket qua nua ma minh se cho doc tu dong. Tuy nhien theo bai tren minh noi chung la Thay day ve Vnvoice nhung con mot cai rat la hay va ung dung rong rai hon nua do la Lap Trinh Tuong Tac voi another Application. qua hay, qua tuyet, ban co the tuong tac voi tat ca chuong trinh ma ban muon. nhu Thay da VD. backup data la mot cong viec cuc ky quan trong. neu nhu ban la mot nguoi quan tri. ban phai backup moi ngay, tham chi la moi gio. nhu vay khi ban lam duoc mot chuong trinh tuong tac thi ban chang phai lam nua. ma nhu vay co phai la ban co them thoi gian de nghien cuu cai khac, trong khi ban thao tac nhu vay co khi quen hoac lam bieng khong lam, con tu dong thi luc nao cung duoc thuc thi. chao Nghia. tui moi uong milu nen tra loi khac tu tin, kaka...

NguyenVanNam(I11C)

Tổng số bài gửi : 13
Join date : 27/08/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

phần mem giong VnVoice moi cac ban xem qua NHMTTS SAPI5 4.0

Bài gửi  thanhnam06511c on 30/9/2011, 10:24

Phần mềm NHMTTS SAPI5 4.0
Tính năng:
- Tổng hợp tiếng nói tiếng Việt từ văn bản với các thông số ngữ điệu gồm: trường độ, cường độ và khoảng ngừng; được xác định bởi mô hình mạng nơ-ron.
- Hỗ trợ chuẩn giao tiếp SAPI5.
- Cho phép đọc văn bản chứa đồng thời tiếng Việt và một ngôn ngữ khác. Sử dụng mã Unicode.
- Cung cấp 2 giọng đọc nam và nữ: "NHMTTS Voice (Male)" và "NHMTTS Voice (Female)".
- Cho phép kết hợp tùy chọn một giọng đọc khác trong hệ thống kết hợp với một giọng NHMTTS để có thể đọc văn bản chứa đồng thời hai ngôn ngữ.
- Cho phép điều chỉnh mặc định tốc độ đọc, khoảng ngừng, âm lượng và tần số cho các giọng đọc NHMTTS.
- Cho phép điều chỉnh tốc độ đọc và âm lượng trong quá trình đọc.
- Thông báo vị trí văn bản đang đọc và thông tin khẩu hình tương ứng.
- Tự động phát hiện các từ sai vị trí dấu thanh.
- Kèm theo chương trình TTSApp minh họa các tính năng của bộ đọc.
Tương thích: Windows 7, Vista, XP, Server, NT, 98
Các bạn có thể vào trang VNSPeech.com de xem chi tiet nha

thanhnam06511c

Tổng số bài gửi : 16
Join date : 31/08/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thực hành điều khiển VnVoice

Bài gửi  Tranvancanh(I11C) on 30/9/2011, 10:42

Admin đã viết:

Cám ơn Thầy rất nhiều!!! Phải làm 1 cái cho riêng mình 1 lần nữa thanks thầy và các bạn. Chào cả nhà hii

Tranvancanh(I11C)

Tổng số bài gửi : 39
Join date : 16/09/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thực hành điều khiển VnVoice

Bài gửi  NgoDucTuan (I11C) on 30/9/2011, 11:03

NguyenVanNam(I11C) đã viết: Chao Nghia.
Vnvoice la mot chuong ma minh moi biet hom qua Thay moi day, va theo minh no la mot ung dung rat hay va rat thuc tien.
VD: tat ca cac dich vu deu can thiet phai goi ten hoac STT cua mot khach hang. neu nhu co mot nguoi ngoi goi thi qua don gian, phai mat tien thue nhan cong va neu ung dung rong rai thi khong the thuc hien duoc. nhu vay chung ta phai dung VnVoice. ngoai ra no con duoc dung trong nhieu cai nua ma chung ta chua biet. Minh co the giai thich them cho ban xu huong phat trien trong tuong lai. Hien tai may tinh co the dieu khien bang giong noi. nhu vay chuong trinh Vnvoice se co the lam duoc tat ca. khi ban goi mot doan text de thuc hen mot van de gi do, VnVoice se chuyen thanh giong noi va giong noi do se duoc thuc thi tren may tinh. va nhu vay co phai la ban co the dieu khien may tinh bang cach chi can goi lenh. Ngoai ra ung dung thuc te ma minh co neu trong bai tren. Ung dung vnvoice de doc ten cac benh nhan da co ket qua, luc do khong can phai nguoi ngoi xem benh nhan nao co ket qua nua ma minh se cho doc tu dong. Tuy nhien theo bai tren minh noi chung la Thay day ve Vnvoice nhung con mot cai rat la hay va ung dung rong rai hon nua do la Lap Trinh Tuong Tac voi another Application. qua hay, qua tuyet, ban co the tuong tac voi tat ca chuong trinh ma ban muon. nhu Thay da VD. backup data la mot cong viec cuc ky quan trong. neu nhu ban la mot nguoi quan tri. ban phai backup moi ngay, tham chi la moi gio. nhu vay khi ban lam duoc mot chuong trinh tuong tac thi ban chang phai lam nua. ma nhu vay co phai la ban co them thoi gian de nghien cuu cai khac, trong khi ban thao tac nhu vay co khi quen hoac lam bieng khong lam, con tu dong thi luc nao cung duoc thuc thi. chao Nghia. tui moi uong milu nen tra loi khac tu tin, kaka...
Theo lời giải thích của bạn Nam là rất có lý và thực tiễn mình cũng gặp rất nhiều, nhưng theo mình nghĩ nếu biết cách phát triển nó theo chiều hướng tích cực và phù hợp với nhu cầu của công ty mình thì nó mang lại rất nhiều giá trị cho bản thân mình cũng như cho cả công ty hiện mình đang làm. Chắc các bạn cũng đồng tình với ý kiến của mình là môn HĐH ko đơn giản, có nhiều những kiến mới không đơn thuần là chỉ Hệ Điều Hành, trong bài giảng của Thầy có lý thuyết xen lẫn thực hành,áp dụng thực tiễn rất nhiều.
avatar
NgoDucTuan (I11C)

Tổng số bài gửi : 52
Join date : 31/08/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thực hành điều khiển VnVoice

Bài gửi  NGUYENDINHNGHIA-I11C on 30/9/2011, 11:47

NguyenVanNam(I11C) đã viết: Chao Nghia.
Vnvoice la mot chuong ma minh moi biet hom qua Thay moi day, va theo minh no la mot ung dung rat hay va rat thuc tien.
VD: tat ca cac dich vu deu can thiet phai goi ten hoac STT cua mot khach hang. neu nhu co mot nguoi ngoi goi thi qua don gian, phai mat tien thue nhan cong va neu ung dung rong rai thi khong the thuc hien duoc. nhu vay chung ta phai dung VnVoice. ngoai ra no con duoc dung trong nhieu cai nua ma chung ta chua biet. Minh co the giai thich them cho ban xu huong phat trien trong tuong lai. Hien tai may tinh co the dieu khien bang giong noi. nhu vay chuong trinh Vnvoice se co the lam duoc tat ca. khi ban goi mot doan text de thuc hen mot van de gi do, VnVoice se chuyen thanh giong noi va giong noi do se duoc thuc thi tren may tinh. va nhu vay co phai la ban co the dieu khien may tinh bang cach chi can goi lenh. Ngoai ra ung dung thuc te ma minh co neu trong bai tren. Ung dung vnvoice de doc ten cac benh nhan da co ket qua, luc do khong can phai nguoi ngoi xem benh nhan nao co ket qua nua ma minh se cho doc tu dong. Tuy nhien theo bai tren minh noi chung la Thay day ve Vnvoice nhung con mot cai rat la hay va ung dung rong rai hon nua do la Lap Trinh Tuong Tac voi another Application. qua hay, qua tuyet, ban co the tuong tac voi tat ca chuong trinh ma ban muon. nhu Thay da VD. backup data la mot cong viec cuc ky quan trong. neu nhu ban la mot nguoi quan tri. ban phai backup moi ngay, tham chi la moi gio. nhu vay khi ban lam duoc mot chuong trinh tuong tac thi ban chang phai lam nua. ma nhu vay co phai la ban co them thoi gian de nghien cuu cai khac, trong khi ban thao tac nhu vay co khi quen hoac lam bieng khong lam, con tu dong thi luc nao cung duoc thuc thi. chao Nghia. tui moi uong milu nen tra loi khac tu tin, kaka...

Chào Nam .
Đầu tiên mình thấy ý bạn " Hien tai may tinh co the dieu khien bang giong noi. nhu vay chuong trinh Vnvoice se co the lam duoc tat ca. khi ban goi mot doan text de thuc hen mot van de gi do, VnVoice se chuyen thanh giong noi va giong noi do se duoc thuc thi tren may tinh. va nhu vay co phai la ban co the dieu khien may tinh bang cach chi can goi lenh" là chỉ đúng 1 phần nhưng chưa toàn diện , trong HDH Windows 7 có ứng dụng Speech Recognition cho phép mình ra lệnh cho Windows 7 bằng giọng nói, những tiến bộ trong công nghệ nhận dạng giọng nói đã âm thầm tạo nên những bước nhảy vọt ấn tượng trong vài năm gần đây, dù rằng chưa thực sự hoàn hảo, công nghệ nhận dạng giọng nói vẫn giành được những thành công bất ngờ, Windows 7 Speech Recognition có thể học cách nhận dạng chất giọng và cách dùng từ của mỗi người thông qua chương trình nhận dạng giọng nói. Nhưng muốn ra lệnh bằng giọng nói cho phép thao tác trên hệ điều hành Windows 7 thì cần đọc theo những từ mà Microsoft đã lập trình ra sẵn (tham khảo bảng đính kèm) chứ không phải muốn đọc cái gì là đọc rùi HDH sẽ thực hiện yêu cầu của bạn .[img]

Thực tế công nghệ VnVoice hay là các công nghệ tương tự tại thời điểm này chỉ áp dụng hạn chế như bạn Nam nói là : "Ung dung vnvoice de doc ten cac benh nhan da co ket qua, luc do khong can phai nguoi ngoi xem benh nhan nao co ket qua nua ma minh se cho doc tu dong" thì đó là một ý hay .
Cỏn tương lai như bạn Nam có đề cập " Lap Trinh Tuong Tac voi another Application " mà bạn nói là Backup thì thay gì thông qua thao tác bằng tay thì giờ ra lệnh bằng giọng nói, còn tự động backup mỗi chương trình backup đều có lập lịch backup daily, week, month và sẽ backup nội dung gì thì do mỗi người cấu hình thôi .


Được sửa bởi NGUYENDINHNGHIA-I11C ngày 1/10/2011, 12:47; sửa lần 2.

NGUYENDINHNGHIA-I11C

Tổng số bài gửi : 36
Join date : 25/08/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Chào Nghiã

Bài gửi  NguyenVanNam(I11C) on 30/9/2011, 12:56

Thật ra thì mình lấy một ví dụ hoành tráng tí cho các bạn hình dung thôi, chứ thật ra thì mình học để làm gì? Cũng như ý của Thầy dạy mình ngày hôm qua. Thầy có hỏi là chương trình bên ngoài giá chỉ có 3 triệu vậy thì cần lập trình viên như mình làm gì? Thật ra mình học là mình được chọn làm trên những đề tài có tính thực tiễn cao, để mình hiểu được cách thực hiện một chương trình là như thế nào và nếu có test chương trình thì mình có thể test được. Tuy nhiên chúng la học lả chúng ta có được kiến thức về lập trình, cái đó mới quan trọng. vì khi chúng ta làm cho bất kỳ công ty nào, đều có những yêu cầu riêng và kiên thức chuyên môn nhất định để có thể làm được chương trình phù hợp dễ sử dụng. Cũng như Thầy nói yêu cầu của khách hàng là vô tận. Vì vậy nếu chúng ta có kiến thức lập trình tốt và có điều kiện tiếp cận chuyên môn và làm việc trực tiếp với người sủ dụng thì chương trình của mình sẽ là số 1. Dễ sử dụng, giao diện trực quan, phù hợp yêu cầu của khách hàng. Vì vậy Vnvoice, hay bất cứ chương trình gì cũng vậy nếu bạn có ý tưởng hay để sử dụng thì nó la ok, còn để đọc truyện đêm khuya thôi thì mướn mình, mình đọc cho, kaka...

NguyenVanNam(I11C)

Tổng số bài gửi : 13
Join date : 27/08/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Các U àh, Thực tế chút đi

Bài gửi  PhamVanNgo(I11C) on 30/9/2011, 15:22

Các U nói thì hay lắm, nhưng mà hãy làm thử 1 cái ví dụ đơn giản như của Thày đó là chuyển thông tin vào cái Notepad và lấy thông tin từ đó ra đi đã rồi hãy bàn đến việc gì to lớn hơn.

PhamVanNgo(I11C)

Tổng số bài gửi : 23
Join date : 30/09/2011
Đến từ : HCTH11C

Xem lý lịch thành viên

Về Đầu Trang Go down

VnVoice - Chương trình quản lý điểm danh

Bài gửi  vohongcong(I111C) on 1/10/2011, 09:06

Tuy buổi vừa rồi thầy chưa có điểm danh lớp,nhưng mình đã nhìn sơ qua được chương trình quản lý điểm danh có ứng dụng vnvoice rất lợi hại.Ban đầu mình nghỉ sao thầy có thể đọc từng tên trong danh sách hết đc vì cả 200 sinh viên,thầy đọc mệt lun sao.và cái phần quản lý điểm danh,chuyên cần,điểm lý thuyết sao mà thầy rãnh tổng kết từng sinh viên này dc.Nhưng hôm buổi học vừa rồi mình đã mở rộng tầm mắt.Thầy rất lợi hại.
avatar
vohongcong(I111C)

Tổng số bài gửi : 32
Join date : 25/08/2011
Age : 28
Đến từ : Bến Tre

Xem lý lịch thành viên http://dmg.com.vn

Về Đầu Trang Go down

Re: Thực hành điều khiển VnVoice

Bài gửi  truongsi93(I11C) on 1/10/2011, 09:47

Cảm ơn thầy rất nhiều. đây là một giải pháp phần mềm rất hay và ứng dụng nhiều trong thực tế. chúng em sẽ cố gắng tỉm hiểu và phát triển thành một phần mềm hoàn thiện

truongsi93(I11C)

Tổng số bài gửi : 33
Join date : 30/08/2011
Age : 31
Đến từ : Quảng Nam

Xem lý lịch thành viên

Về Đầu Trang Go down

Chao ban Ngo.

Bài gửi  NguyenVanNam(I11C) on 1/10/2011, 12:42

Như ban nói thì đúng thật, nói gì cũng được nhưng làm là một chuyện khác, tuy nhiên. do đây là diễn đàn nếu không nói nhiều, không trao đổi thì đó không phải là diễn đàn. vì vậy ý tưởng là một chuyện mà làm là một chuyện khác. còn về chương trình Thầy dạy cho bạn mình, theo mình khởi đầu tự nghiên cứu thì rất khó còn ở đây Thầy hướng dẫn mình làm chi tiết như vậy thì chắc chắn là các bạn sẽ làm được. và mình cũng đang làm thử khi nào xong sẽ gởi code cho các bạn tham khảo. Chào bạn.

NguyenVanNam(I11C)

Tổng số bài gửi : 13
Join date : 27/08/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thực hành điều khiển VnVoice

Bài gửi  NGUYENDINHNGHIA-I11C on 1/10/2011, 12:58

NguyenVanNam(I11C) đã viết: Thật ra thì mình lấy một ví dụ hoành tráng tí cho các bạn hình dung thôi, chứ thật ra thì mình học để làm gì? Cũng như ý của Thầy dạy mình ngày hôm qua. Thầy có hỏi là chương trình bên ngoài giá chỉ có 3 triệu vậy thì cần lập trình viên như mình làm gì? Thật ra mình học là mình được chọn làm trên những đề tài có tính thực tiễn cao, để mình hiểu được cách thực hiện một chương trình là như thế nào và nếu có test chương trình thì mình có thể test được. Tuy nhiên chúng la học lả chúng ta có được kiến thức về lập trình, cái đó mới quan trọng. vì khi chúng ta làm cho bất kỳ công ty nào, đều có những yêu cầu riêng và kiên thức chuyên môn nhất định để có thể làm được chương trình phù hợp dễ sử dụng. Cũng như Thầy nói yêu cầu của khách hàng là vô tận. Vì vậy nếu chúng ta có kiến thức lập trình tốt và có điều kiện tiếp cận chuyên môn và làm việc trực tiếp với người sủ dụng thì chương trình của mình sẽ là số 1. Dễ sử dụng, giao diện trực quan, phù hợp yêu cầu của khách hàng. Vì vậy Vnvoice, hay bất cứ chương trình gì cũng vậy nếu bạn có ý tưởng hay để sử dụng thì nó la ok, còn để đọc truyện đêm khuya thôi thì mướn mình, mình đọc cho, kaka...

Ý kiến của Nam rất đúng " yêu cầu của khách hàng là vô tận " nên nói chúng la học là chúng ta có được kiến thức về lập trình, cái đó mới quan trọng. vì khi chúng ta làm cho bất kỳ công ty nào, đều có những yêu cầu riêng và kiên thức chuyên môn nhất định để có thể làm được chương trình phù hợp dễ sử dụng , còn Vnvoice hiện tại chì áp dụng trong phạm vị hẹp , nhưng nó nếu để áp dụng rộng rãi cho nhiều lĩnh vực thì sẽ là 1 chặng đường dài phía trước để phát triển nữa .

NGUYENDINHNGHIA-I11C

Tổng số bài gửi : 36
Join date : 25/08/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thực hành điều khiển VnVoice

Bài gửi  NGUYENDINHNGHIA-I11C on 1/10/2011, 13:09

NgoDucTuan (I11C) đã viết:
NguyenVanNam(I11C) đã viết: Chao Nghia.
Vnvoice la mot chuong ma minh moi biet hom qua Thay moi day, va theo minh no la mot ung dung rat hay va rat thuc tien.
VD: tat ca cac dich vu deu can thiet phai goi ten hoac STT cua mot khach hang. neu nhu co mot nguoi ngoi goi thi qua don gian, phai mat tien thue nhan cong va neu ung dung rong rai thi khong the thuc hien duoc. nhu vay chung ta phai dung VnVoice. ngoai ra no con duoc dung trong nhieu cai nua ma chung ta chua biet. Minh co the giai thich them cho ban xu huong phat trien trong tuong lai. Hien tai may tinh co the dieu khien bang giong noi. nhu vay chuong trinh Vnvoice se co the lam duoc tat ca. khi ban goi mot doan text de thuc hen mot van de gi do, VnVoice se chuyen thanh giong noi va giong noi do se duoc thuc thi tren may tinh. va nhu vay co phai la ban co the dieu khien may tinh bang cach chi can goi lenh. Ngoai ra ung dung thuc te ma minh co neu trong bai tren. Ung dung vnvoice de doc ten cac benh nhan da co ket qua, luc do khong can phai nguoi ngoi xem benh nhan nao co ket qua nua ma minh se cho doc tu dong. Tuy nhien theo bai tren minh noi chung la Thay day ve Vnvoice nhung con mot cai rat la hay va ung dung rong rai hon nua do la Lap Trinh Tuong Tac voi another Application. qua hay, qua tuyet, ban co the tuong tac voi tat ca chuong trinh ma ban muon. nhu Thay da VD. backup data la mot cong viec cuc ky quan trong. neu nhu ban la mot nguoi quan tri. ban phai backup moi ngay, tham chi la moi gio. nhu vay khi ban lam duoc mot chuong trinh tuong tac thi ban chang phai lam nua. ma nhu vay co phai la ban co them thoi gian de nghien cuu cai khac, trong khi ban thao tac nhu vay co khi quen hoac lam bieng khong lam, con tu dong thi luc nao cung duoc thuc thi. chao Nghia. tui moi uong milu nen tra loi khac tu tin, kaka...
Theo lời giải thích của bạn Nam là rất có lý và thực tiễn mình cũng gặp rất nhiều, nhưng theo mình nghĩ nếu biết cách phát triển nó theo chiều hướng tích cực và phù hợp với nhu cầu của công ty mình thì nó mang lại rất nhiều giá trị cho bản thân mình cũng như cho cả công ty hiện mình đang làm. Chắc các bạn cũng đồng tình với ý kiến của mình là môn HĐH ko đơn giản, có nhiều những kiến mới không đơn thuần là chỉ Hệ Điều Hành, trong bài giảng của Thầy có lý thuyết xen lẫn thực hành,áp dụng thực tiễn rất nhiều.

Chào Tuấn
Trích dẫn " Theo lời giải thích của bạn Nam là rất có lý và thực tiễn mình cũng gặp rất nhiều" bạn có thể cho mình biết nó áp dụng vào đâu và như thế nào .... do kiến thức mình còn hạn hẹp và còn rất nhiều khoảng trống nên mong bạn chỉ điểm để biết thêm .

NGUYENDINHNGHIA-I11C

Tổng số bài gửi : 36
Join date : 25/08/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thực hành điều khiển VnVoice

Bài gửi  HuynhTrungLoi-I11C on 1/10/2011, 13:52

Chào thầy,
- Qua buổi học hôm trước, em có thử lại phần tương tác với Notepad của Windows. Hiện tại em dùng hàm API SendMessageW đề gửi thông điệp từ ứng dụng đến Notepad thành công. Nhưng muốn lấy thông tin ngược trở lại từ Notepad về ứng dụng thì gặp vấn đề chưa thực hiện được.

Em có tìm kiếm và dùng thử một số hàm API khác :
- Với hàm GetWindowText thì chỉ lấy được phần Caption của cửa số Notepad, còn phần text box edit bên trong thì không lấy được.
[DllImport("user32.dll")]
public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);


- Đối với hàm GetMessage ứng dụng bị đứng khi gọi đến hàm này(có thể hàm này sai cú pháp).
[DllImport("user32.dll")]
public static extern bool GetMessage(out string lpMsg, IntPtr hWnd, uint wMsgFilterMin, uint sgFilterMax);


Mong thầy và các bạn có đọc qua xin vui lòng giúp đở hoặc nêu ra phương hướng để giải quyết vấn đề này.
Cảm ơn rất nhiều.

Admin
- Em đang đi đúng hướng. Vấn đề rất quan trọng và có ý nghĩa thực tế.
- Để lấy văn bản từ xa: Dùng SendMessageW với WM_GETTEXT
- Tìm 2 từ khoá này, chắc chắn sẽ thấy code và theo đó mà làm !
- Hàm GetMessage không phù hợp ở đây.
- Thành công, báo ngay thày !




HuynhTrungLoi-I11C

Tổng số bài gửi : 27
Join date : 05/09/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Vote cho a Ngọ và Bạn Nam

Bài gửi  ngocquynh2091(i11C) on 1/10/2011, 23:09

Mọi nguời rất mong các bạn post bài lên diễn đàn để mọi nguời được học hỏi. Chúc các bạn thành công.

ngocquynh2091(i11C)

Tổng số bài gửi : 27
Join date : 04/09/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thực hành điều khiển VnVoice

Bài gửi  HoiHoangHongVu I11C on 2/10/2011, 08:29

NguyenVanNam(I11C) đã viết: Chao Nghia.
Vnvoice la mot chuong ma minh moi biet hom qua Thay moi day, va theo minh no la mot ung dung rat hay va rat thuc tien.
VD: tat ca cac dich vu deu can thiet phai goi ten hoac STT cua mot khach hang. neu nhu co mot nguoi ngoi goi thi qua don gian, phai mat tien thue nhan cong va neu ung dung rong rai thi khong the thuc hien duoc. nhu vay chung ta phai dung VnVoice. ngoai ra no con duoc dung trong nhieu cai nua ma chung ta chua biet. Minh co the giai thich them cho ban xu huong phat trien trong tuong lai. Hien tai may tinh co the dieu khien bang giong noi. nhu vay chuong trinh Vnvoice se co the lam duoc tat ca. khi ban goi mot doan text de thuc hen mot van de gi do, VnVoice se chuyen thanh giong noi va giong noi do se duoc thuc thi tren may tinh. va nhu vay co phai la ban co the dieu khien may tinh bang cach chi can goi lenh. Ngoai ra ung dung thuc te ma minh co neu trong bai tren. Ung dung vnvoice de doc ten cac benh nhan da co ket qua, luc do khong can phai nguoi ngoi xem benh nhan nao co ket qua nua ma minh se cho doc tu dong. Tuy nhien theo bai tren minh noi chung la Thay day ve Vnvoice nhung con mot cai rat la hay va ung dung rong rai hon nua do la Lap Trinh Tuong Tac voi another Application. qua hay, qua tuyet, ban co the tuong tac voi tat ca chuong trinh ma ban muon. nhu Thay da VD. backup data la mot cong viec cuc ky quan trong. neu nhu ban la mot nguoi quan tri. ban phai backup moi ngay, tham chi la moi gio. nhu vay khi ban lam duoc mot chuong trinh tuong tac thi ban chang phai lam nua. ma nhu vay co phai la ban co them thoi gian de nghien cuu cai khac, trong khi ban thao tac nhu vay co khi quen hoac lam bieng khong lam, con tu dong thi luc nao cung duoc thuc thi. chao Nghia. tui moi uong milu nen tra loi khac tu tin, kaka...
Hay lắm mình thấy phần mềm tương tự hay vnvoice được sử dụng rất nhiều. Giống như mình vào bưu điện đóng tiền điện. người nhân viên sẽ phát mình 1 cái thẻ có mã số. rùi mình ngồi đợi đến lượt nó gọi. Cái này không phải nhân viên gọi mà là phần mềm

HoiHoangHongVu I11C

Tổng số bài gửi : 37
Join date : 26/08/2011
Đến từ : Biên Hòa - Đồng Nai

Xem lý lịch thành viên

Về Đầu Trang Go down

Tổng hợp hàm API của Windows dùng với C#

Bài gửi  TranHaDucHuy (I11c) on 2/10/2011, 15:12

FindWindow: Tìm kiếm cửa số chương trình trong windows
[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

FindWindowEx: Tìm kiếm cửa số con khi đã biết được Handle của cửa số cha.
[DllImport("user32.dll")]
public static extern IntPtr FindWindowEx(IntPtr hWnd1, IntPtr hWnd2, string lpsz1, string lpsz2);

SetForegroundWindow: Active một cửa sổ chương trình.
[DllImport("user32.dll")]
public static extern bool SetForegroundWindow(IntPtr hWnd);

SendMessageW: gửi thông điệp đến cửa số ứng dụng (thông điệp unicode)
[DllImport("user32.dll")]
public static extern IntPtr SendMessageW(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

GetWindowText: lấy caption của cửa số ứng dụng
[DllImport("user32.dll")]
public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);


Các hàm về menu
GetMenu: lấy menu của cửa sổ ứng dụng.
[DllImport("user32.dll")]
public static extern IntPtr GetMenu(IntPtr hwnd);

GetSubMenu: lấy submenu khi có giá trị của Menu
[DllImport("user32.dll")]
public static extern IntPtr GetSubMenu(IntPtr hMenu, int nPos);

GetMenuItemID: lấy Id của menu trong Submenu
[DllImport("user32.dll")]
public static extern IntPtr GetMenuItemID(IntPtr hMenu, int nPos);

EnableMenuItem: set Enable của menu(tham số wEnable có giá trị: 1 hoặc 0)
[DllImport("user32.dll")]
public static extern IntPtr EnableMenuItem(IntPtr hMenu, IntPtr wIDEnableItem, int wEnable);

TranHaDucHuy (I11c)

Tổng số bài gửi : 10
Join date : 02/09/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thực hành điều khiển VnVoice

Bài gửi  HuynhTrungLoi-I11C on 3/10/2011, 11:13

HuynhTrungLoi-I11C đã viết:Chào thầy,
- Qua buổi học hôm trước, em có thử lại phần tương tác với Notepad của Windows. Hiện tại em dùng hàm API SendMessageW đề gửi thông điệp từ ứng dụng đến Notepad thành công. Nhưng muốn lấy thông tin ngược trở lại từ Notepad về ứng dụng thì gặp vấn đề chưa thực hiện được.

Em có tìm kiếm và dùng thử một số hàm API khác :
- Với hàm GetWindowText thì chỉ lấy được phần Caption của cửa số Notepad, còn phần text box edit bên trong thì không lấy được.
[DllImport("user32.dll")]
public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);


- Đối với hàm GetMessage ứng dụng bị đứng khi gọi đến hàm này(có thể hàm này sai cú pháp).
[DllImport("user32.dll")]
public static extern bool GetMessage(out string lpMsg, IntPtr hWnd, uint wMsgFilterMin, uint sgFilterMax);


Mong thầy và các bạn có đọc qua xin vui lòng giúp đở hoặc nêu ra phương hướng để giải quyết vấn đề này.
Cảm ơn rất nhiều.

Admin
- Em đang đi đúng hướng. Vấn đề rất quan trọng và có ý nghĩa thực tế.
- Để lấy văn bản từ xa: Dùng SendMessageW với WM_GETTEXT
- Tìm 2 từ khoá này, chắc chắn sẽ thấy code và theo đó mà làm !
- Hàm GetMessage không phù hợp ở đây.
- Thành công, báo ngay thày !

Cảm ơn thầy, em làm được rồi. Đây là hàm em dùng:

Phần khai báo hàm API và hằng số:
const uint WM_GETTEXT = 0x000D;
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
public static extern IntPtr SendMessageW(IntPtr hWnd, uint Msg, IntPtr wParam, StringBuilder lParam);

Phần code viết trong function:
int m_capacity = 256;
StringBuilder sbOutText = new StringBuilder(m_capacity);
SendMessage(hWnd, WM_GETTEXT, (IntPtr)m_capacity , sbOutText);

Các tham số :
hWnd: Handle của tiến trình.
WM_GETTEXT: hằng số giá trị 0x000D.
m_capacity: độ dài văn bản tối đa lấy về.(theo em tự hiểu)
sbOutText: chuổi văn bản lấy được.

Thầy cho em hỏi thêm 2 vấn đề:
- Với hàm SendMessageW ở trên phải cung cấp tham số m_capacity(độ dài văn bản tối đa lấy về), vậy trong trường hợp em muốn lấy hết toàn bộ văn bản của tiến trình mà không ước lượng được độ dài tối da thì có cách nào không thầy.
- Đối với hàm GetMessage thường được dùng vào trường hợp nào vậy thầy(vì tìm mà không sài được nên cũng hơi bị buồn).

Em cảm ơn...

Admin
- Chúc mừng em đã tìm được cách lấy văn bản từ xa rồi đưa vào đối tượng StringBuilder để xử lý (cần cho biết cách xử lý). Chú ý thử với văn bản Unicode !
- Tham khảo cách khác:
http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/02a67f3a-4a26-4d9a-9c67-0fdff1428a66/
Chịu khó hiểu code trên viết bằng VB .NET, sau đó chuyển đổi sang VC# .NET !
- Để không phụ thuộc vào độ dài văn bản, hãy dùng SendMessage với WM_GETTEXTLENGTH để nhận độ dài của văn bản cần lấy. Chú ý khi lấy văn bản, tham số thứ 3 của SendMessgeW phải bằng độ dài này cộng thêm 1. Thành công, báo ngay !
- GetMessage (nhận) ngược với SendMessge (gửi), dùng để chủ động nhận thông điệp cho đến khi có (nhận "có chờ"), thường ít dùng. Để nhận thông điệp, tiện hơn cả là dùng kỹ thuật "Móc" (hook) một thủ tục WindowProc để bẫy bắt thông điệp gửi đến như trong ví dụ Source-Taget đã giới thiệu.

HuynhTrungLoi-I11C

Tổng số bài gửi : 27
Join date : 05/09/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Ung dung cua VnVoice 1.0

Bài gửi  TranTrungKien (I11C) on 3/10/2011, 16:15

VnVoice là tiện ích tích hợp tiếng nói trong các chương trình ứng dụng. Nó hỗ trợ rất tốt khả năng đọc các tệp văn bản từ Microsoft Word 9x, 2000, đọc tin trên các trang Web (bằng cả hai thứ tiếng Việt, Anh với các font chữ ABC, VNI, UNICODE). Là công cụ hữu hiệu tích hợp với các CSDL nhằm thực hiện hay đưa ra các thông báo tự động tới mọi người.

Môi trường
+ PC có cài hệ điều hành Windows 9x, 2000, ME, XP, NT.
chức năng chính

+Đọc văn bản từ các nguồn: trên màn hình thông qua clipboard, các khoản mục trên Menu của chương trình, văn bản từ bàn phím gõ vào, văn bản trên các Website, trong các ứng dụng Microsoft Word, Outlook Express…

Tổng hợp được 6 thanh tiếng Việt
+ Cho phép đọc các khuôn dạng phi từ: biểu thức số, ngày tháng, giờ điện tử, tiền Việt Nam, đo lường, chữ viễt tắt thông thường.

Đặc biệt: đọc tự động văn bản hỗn hợp Việt - Anh, hoặc thuần Anh rất hữu dụng cho các ứng dụng Web.


TranTrungKien (I11C)

Tổng số bài gửi : 8
Join date : 29/08/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thực hành điều khiển VnVoice

Bài gửi  Tranvancanh(I11C) on 3/10/2011, 20:48

HuynhTrungLoi-I11C đã viết:
HuynhTrungLoi-I11C đã viết:Chào thầy,
- Qua buổi học hôm trước, em có thử lại phần tương tác với Notepad của Windows. Hiện tại em dùng hàm API SendMessageW đề gửi thông điệp từ ứng dụng đến Notepad thành công. Nhưng muốn lấy thông tin ngược trở lại từ Notepad về ứng dụng thì gặp vấn đề chưa thực hiện được.

Em có tìm kiếm và dùng thử một số hàm API khác :
- Với hàm GetWindowText thì chỉ lấy được phần Caption của cửa số Notepad, còn phần text box edit bên trong thì không lấy được.
[DllImport("user32.dll")]
public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);


- Đối với hàm GetMessage ứng dụng bị đứng khi gọi đến hàm này(có thể hàm này sai cú pháp).
[DllImport("user32.dll")]
public static extern bool GetMessage(out string lpMsg, IntPtr hWnd, uint wMsgFilterMin, uint sgFilterMax);


Mong thầy và các bạn có đọc qua xin vui lòng giúp đở hoặc nêu ra phương hướng để giải quyết vấn đề này.
Cảm ơn rất nhiều.

Admin
- Em đang đi đúng hướng. Vấn đề rất quan trọng và có ý nghĩa thực tế.
- Để lấy văn bản từ xa: Dùng SendMessageW với WM_GETTEXT
- Tìm 2 từ khoá này, chắc chắn sẽ thấy code và theo đó mà làm !
- Hàm GetMessage không phù hợp ở đây.
- Thành công, báo ngay thày !

Cảm ơn thầy, em làm được rồi. Đây là hàm em dùng:

Phần khai báo hàm API và hằng số:
const uint WM_GETTEXT = 0x000D;
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
public static extern IntPtr SendMessageW(IntPtr hWnd, uint Msg, IntPtr wParam, StringBuilder lParam);

Phần code viết trong function:
int m_capacity = 256;
StringBuilder sbOutText = new StringBuilder(m_capacity);
SendMessage(hWnd, WM_GETTEXT, (IntPtr)m_capacity , sbOutText);

Các tham số :
hWnd: Handle của tiến trình.
WM_GETTEXT: hằng số giá trị 0x000D.
m_capacity: độ dài văn bản tối đa lấy về.(theo em tự hiểu)
sbOutText: chuổi văn bản lấy được.

Thầy cho em hỏi thêm 2 vấn đề:
- Với hàm SendMessageW ở trên phải cung cấp tham số m_capacity(độ dài văn bản tối đa lấy về), vậy trong trường hợp em muốn lấy hết toàn bộ văn bản của tiến trình mà không ước lượng được độ dài tối da thì có cách nào không thầy.
- Đối với hàm GetMessage thường được dùng vào trường hợp nào vậy thầy(vì tìm mà không sài được nên cũng hơi bị buồn).

Em cảm ơn...

Admin
- Chúc mừng em đã tìm được cách lấy văn bản từ xa rồi đưa vào đối tượng StringBuilder để xử lý (cần cho biết cách xử lý). Chú ý thử với văn bản Unicode !
- Tham khảo cách khác:
http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/02a67f3a-4a26-4d9a-9c67-0fdff1428a66/
Chịu khó hiểu code trên viết bằng VB .NET, sau đó chuyển đổi sang VC# .NET !
- Để không phụ thuộc vào độ dài văn bản, hãy dùng SendMessage với WM_GETTEXTLENGTH để nhận độ dài của văn bản cần lấy. Chú ý khi lấy văn bản, tham số thứ 3 của SendMessgeW phải bằng độ dài này cộng thêm 1. Thành công, báo ngay !
- GetMessage (nhận) ngược với SendMessge (gửi), dùng để chủ động nhận thông điệp cho đến khi có (nhận "có chờ"), thường ít dùng. Để nhận thông điệp, tiện hơn cả là dùng kỹ thuật "Móc" (hook) một thủ tục WindowProc để bẫy bắt thông điệp gửi đến như trong ví dụ Source-Taget đã giới thiệu.
Hii bạn tuyệt vời thật, mình cũng đang làm sẽ có kết quả sau, thanks Thầy và các bạn.

Tranvancanh(I11C)

Tổng số bài gửi : 39
Join date : 16/09/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thực hành điều khiển VnVoice

Bài gửi  HuynhTrungLoi-I11C on 4/10/2011, 09:48

HuynhTrungLoi-I11C đã viết:
HuynhTrungLoi-I11C đã viết:Chào thầy,
- Qua buổi học hôm trước, em có thử lại phần tương tác với Notepad của Windows. Hiện tại em dùng hàm API SendMessageW đề gửi thông điệp từ ứng dụng đến Notepad thành công. Nhưng muốn lấy thông tin ngược trở lại từ Notepad về ứng dụng thì gặp vấn đề chưa thực hiện được.

Em có tìm kiếm và dùng thử một số hàm API khác :
- Với hàm GetWindowText thì chỉ lấy được phần Caption của cửa số Notepad, còn phần text box edit bên trong thì không lấy được.
[DllImport("user32.dll")]
public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);


- Đối với hàm GetMessage ứng dụng bị đứng khi gọi đến hàm này(có thể hàm này sai cú pháp).
[DllImport("user32.dll")]
public static extern bool GetMessage(out string lpMsg, IntPtr hWnd, uint wMsgFilterMin, uint sgFilterMax);


Mong thầy và các bạn có đọc qua xin vui lòng giúp đở hoặc nêu ra phương hướng để giải quyết vấn đề này.
Cảm ơn rất nhiều.

Admin
- Em đang đi đúng hướng. Vấn đề rất quan trọng và có ý nghĩa thực tế.
- Để lấy văn bản từ xa: Dùng SendMessageW với WM_GETTEXT
- Tìm 2 từ khoá này, chắc chắn sẽ thấy code và theo đó mà làm !
- Hàm GetMessage không phù hợp ở đây.
- Thành công, báo ngay thày !

Cảm ơn thầy, em làm được rồi. Đây là hàm em dùng:

Phần khai báo hàm API và hằng số:
const uint WM_GETTEXT = 0x000D;
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
public static extern IntPtr SendMessageW(IntPtr hWnd, uint Msg, IntPtr wParam, StringBuilder lParam);

Phần code viết trong function:
int m_capacity = 256;
StringBuilder sbOutText = new StringBuilder(m_capacity);
SendMessage(hWnd, WM_GETTEXT, (IntPtr)m_capacity , sbOutText);

Các tham số :
hWnd: Handle của tiến trình.
WM_GETTEXT: hằng số giá trị 0x000D.
m_capacity: độ dài văn bản tối đa lấy về.(theo em tự hiểu)
sbOutText: chuổi văn bản lấy được.

Thầy cho em hỏi thêm 2 vấn đề:
- Với hàm SendMessageW ở trên phải cung cấp tham số m_capacity(độ dài văn bản tối đa lấy về), vậy trong trường hợp em muốn lấy hết toàn bộ văn bản của tiến trình mà không ước lượng được độ dài tối da thì có cách nào không thầy.
- Đối với hàm GetMessage thường được dùng vào trường hợp nào vậy thầy(vì tìm mà không sài được nên cũng hơi bị buồn).

Em cảm ơn...

Admin
- Chúc mừng em đã tìm được cách lấy văn bản từ xa rồi đưa vào đối tượng StringBuilder để xử lý (cần cho biết cách xử lý). Chú ý thử với văn bản Unicode !
- Tham khảo cách khác:
http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/02a67f3a-4a26-4d9a-9c67-0fdff1428a66/
Chịu khó hiểu code trên viết bằng VB .NET, sau đó chuyển đổi sang VC# .NET !
- Để không phụ thuộc vào độ dài văn bản, hãy dùng SendMessage với WM_GETTEXTLENGTH để nhận độ dài của văn bản cần lấy. Chú ý khi lấy văn bản, tham số thứ 3 của SendMessgeW phải bằng độ dài này cộng thêm 1. Thành công, báo ngay !
- GetMessage (nhận) ngược với SendMessge (gửi), dùng để chủ động nhận thông điệp cho đến khi có (nhận "có chờ"), thường ít dùng. Để nhận thông điệp, tiện hơn cả là dùng kỹ thuật "Móc" (hook) một thủ tục WindowProc để bẫy bắt thông điệp gửi đến như trong ví dụ Source-Taget đã giới thiệu.
Chào thầy, em làm được rồi. Đây là hàm lấy văn bản từ một tiến trình mà em sử dụng:

const uint WM_GETTEXTLENGTH = 0x000E;

public string GetMessageByHandle(IntPtr hWnd)
{
IntPtr message_length = SendMessage(hWnd, WM_GETTEXTLENGTH, IntPtr.Zero, IntPtr.Zero);

int m_Capacity = (int)message_length + 1;
StringBuilder sbOutText = new StringBuilder(m_Capacity);

SendMessageW(hWnd, WM_GETTEXT, (IntPtr)m_Capacity, sbOutText);

return sbOutText.ToString();
}

- Em đã thử và thấy ứng dụng tương tác tốt với văn bản Unicode trên Notepad (cả phần gửi và lấy văn bản).
- Về kỷ thuật Hook, trước đây em đã thao tác qua nhưng chỉ dừng lại ở mức cơ bản là bắt thông điệp của chuột và bàn phím gửi cho hệ điều hành. Không biết trong chương trình học của mình có mục nào đi sâu hơn về kỷ thuật này không ?

Xin cảm ơn thầy và các bạn...

Admin
- Đây mới là lời giải đẹp và hoàn chỉnh mà người lập trình phải hướng tới !
- Hook một thủ tục Window trong VC# .NET rất dễ. Em thử tìm cách thực thi bài tập sau: Bắt được thông điệp thay đổi Clipboard (khi người dùng đưa 1 văn bản vào Clipboard, chương trình của em "biết" được và lấy văn bản đó ra để xử lý).


HuynhTrungLoi-I11C

Tổng số bài gửi : 27
Join date : 05/09/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thực hành điều khiển VnVoice

Bài gửi  n.t.tuyet.trinh90 (I11C) on 4/10/2011, 15:30

HuynhTrungLoi-I11C đã viết:
HuynhTrungLoi-I11C đã viết:
HuynhTrungLoi-I11C đã viết:Chào thầy,
- Qua buổi học hôm trước, em có thử lại phần tương tác với Notepad của Windows. Hiện tại em dùng hàm API SendMessageW đề gửi thông điệp từ ứng dụng đến Notepad thành công. Nhưng muốn lấy thông tin ngược trở lại từ Notepad về ứng dụng thì gặp vấn đề chưa thực hiện được.

Em có tìm kiếm và dùng thử một số hàm API khác :
- Với hàm GetWindowText thì chỉ lấy được phần Caption của cửa số Notepad, còn phần text box edit bên trong thì không lấy được.
[DllImport("user32.dll")]
public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);


- Đối với hàm GetMessage ứng dụng bị đứng khi gọi đến hàm này(có thể hàm này sai cú pháp).
[DllImport("user32.dll")]
public static extern bool GetMessage(out string lpMsg, IntPtr hWnd, uint wMsgFilterMin, uint sgFilterMax);


Mong thầy và các bạn có đọc qua xin vui lòng giúp đở hoặc nêu ra phương hướng để giải quyết vấn đề này.
Cảm ơn rất nhiều.

Admin
- Em đang đi đúng hướng. Vấn đề rất quan trọng và có ý nghĩa thực tế.
- Để lấy văn bản từ xa: Dùng SendMessageW với WM_GETTEXT
- Tìm 2 từ khoá này, chắc chắn sẽ thấy code và theo đó mà làm !
- Hàm GetMessage không phù hợp ở đây.
- Thành công, báo ngay thày !

Cảm ơn thầy, em làm được rồi. Đây là hàm em dùng:

Phần khai báo hàm API và hằng số:
const uint WM_GETTEXT = 0x000D;
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
public static extern IntPtr SendMessageW(IntPtr hWnd, uint Msg, IntPtr wParam, StringBuilder lParam);

Phần code viết trong function:
int m_capacity = 256;
StringBuilder sbOutText = new StringBuilder(m_capacity);
SendMessage(hWnd, WM_GETTEXT, (IntPtr)m_capacity , sbOutText);

Các tham số :
hWnd: Handle của tiến trình.
WM_GETTEXT: hằng số giá trị 0x000D.
m_capacity: độ dài văn bản tối đa lấy về.(theo em tự hiểu)
sbOutText: chuổi văn bản lấy được.

Thầy cho em hỏi thêm 2 vấn đề:
- Với hàm SendMessageW ở trên phải cung cấp tham số m_capacity(độ dài văn bản tối đa lấy về), vậy trong trường hợp em muốn lấy hết toàn bộ văn bản của tiến trình mà không ước lượng được độ dài tối da thì có cách nào không thầy.
- Đối với hàm GetMessage thường được dùng vào trường hợp nào vậy thầy(vì tìm mà không sài được nên cũng hơi bị buồn).

Em cảm ơn...

Admin
- Chúc mừng em đã tìm được cách lấy văn bản từ xa rồi đưa vào đối tượng StringBuilder để xử lý (cần cho biết cách xử lý). Chú ý thử với văn bản Unicode !
- Tham khảo cách khác:
http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/02a67f3a-4a26-4d9a-9c67-0fdff1428a66/
Chịu khó hiểu code trên viết bằng VB .NET, sau đó chuyển đổi sang VC# .NET !
- Để không phụ thuộc vào độ dài văn bản, hãy dùng SendMessage với WM_GETTEXTLENGTH để nhận độ dài của văn bản cần lấy. Chú ý khi lấy văn bản, tham số thứ 3 của SendMessgeW phải bằng độ dài này cộng thêm 1. Thành công, báo ngay !
- GetMessage (nhận) ngược với SendMessge (gửi), dùng để chủ động nhận thông điệp cho đến khi có (nhận "có chờ"), thường ít dùng. Để nhận thông điệp, tiện hơn cả là dùng kỹ thuật "Móc" (hook) một thủ tục WindowProc để bẫy bắt thông điệp gửi đến như trong ví dụ Source-Taget đã giới thiệu.
Chào thầy, em làm được rồi. Đây là hàm lấy văn bản từ một tiến trình mà em sử dụng:

const uint WM_GETTEXTLENGTH = 0x000E;

public string GetMessageByHandle(IntPtr hWnd)
{
IntPtr message_length = SendMessage(hWnd, WM_GETTEXTLENGTH, IntPtr.Zero, IntPtr.Zero);

int m_Capacity = (int)message_length + 1;
StringBuilder sbOutText = new StringBuilder(m_Capacity);

SendMessageW(hWnd, WM_GETTEXT, (IntPtr)m_Capacity, sbOutText);

return sbOutText.ToString();
}

- Em đã thử và thấy ứng dụng tương tác tốt với văn bản Unicode trên Notepad (cả phần gửi và lấy văn bản).
- Về kỷ thuật Hook, trước đây em đã thao tác qua nhưng chỉ dừng lại ở mức cơ bản là bắt thông điệp của chuột và bàn phím gửi cho hệ điều hành. Không biết trong chương trình học của mình có mục nào đi sâu hơn về kỷ thuật này không ?

Xin cảm ơn thầy và các bạn...

Admin
- Đây mới là lời giải đẹp và hoàn chỉnh mà người lập trình phải hướng tới !
- Hook một thủ tục Window trong VC# .NET rất dễ. Em thử tìm cách thực thi bài tập sau: Bắt được thông điệp thay đổi Clipboard (khi người dùng đưa 1 văn bản vào Clipboard, chương trình của em "biết" được và lấy văn bản đó ra để xử lý).


Đúng là một bài hay cho tất cả chúng ta phải học hỏi, nhưng post các bài "chay" lên không thì khó mà xác thực để học ở nhau những kinh nghiệm đúng/sai. Cảm ơn bạn Lợi nhé. Tặng hoa bạn nè flower flower flower flower flower flower flower flower flower flower flower flower
avatar
n.t.tuyet.trinh90 (I11C)

Tổng số bài gửi : 24
Join date : 26/08/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thực hành điều khiển VnVoice

Bài gửi  HuynhTrungLoi-I11C on 5/10/2011, 08:41

n.t.tuyet.trinh90 (I11C) đã viết:
Đúng là một bài hay cho tất cả chúng ta phải học hỏi, nhưng post các bài "chay" lên không thì khó mà xác thực để học ở nhau những kinh nghiệm đúng/sai. Cảm ơn bạn Lợi nhé. Tặng hoa bạn nè flower flower flower flower flower flower flower flower flower flower flower flower
Cảm ơn bạn nhiều nhiều
- Đây là source chương trình cho bạn nào cần tham khảo.
Link Download: TuongTacNotepad.

- Phần code giống những gì đã học, mình có sử dụng thêm đối tượng Process của .net (thay cho hàm FindWindow) để tìm tất cả các tiến trình của Nodepad đang hoạt động.

Admin
- Chương trình viết tốt. Năng lực lập trình triển vọng. Cần tiếp tục nghiên cứu và ứng dụng theo hướng này !
- Thảo luận thêm về sử dụng đối tượng Process trong .NET và hàm FindWindow của Win32 API.
- Chỉ dùng FindWindow và FindWindowEx có tìm được tất cả các cửa sổ cùng tiêu đề (Title, Caption) hoặc cùng lớp (Class Name) ?




HuynhTrungLoi-I11C

Tổng số bài gửi : 27
Join date : 05/09/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thực hành điều khiển VnVoice

Bài gửi  Sponsored content


Sponsored content


Về Đầu Trang Go down

Trang 1 trong tổng số 2 trang 1, 2  Next

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết