Thực hành điều khiển VnVoice
+13
TRANTHUYOANH_10H1010066
hoanggiangI12C
tranvanthien27(I12C)
dangmonghai(I12A)
TranHoangNhanI12C
LacChiHao(I12A)
dangvannhan_11h1010085
huynhvanhung(I12A)
trinhvanminh_11h1010077
LeQuocKhanh-11H1010059
LePhucHiep(102C)
NguyenNgocDuy(I12A)
Admin
17 posters
Trang 2 trong tổng số 2 trang
Trang 2 trong tổng số 2 trang • 1, 2
giải thích code vnvoice
Code vnvoice :
private void cmdGetMenuItemID_Click(object sender, EventArgs e)
{
IntPtr hMainMenu, hSubMenu; //khai báo 2 biến hMainMenu và hSubMenu kiểu handel(mục quản)
int iSubMenuIndex, iSubMenuItem, iMenuItemID;
iSubMenuIndex = 0;
iSubMenuItem = 0;
IntPtr hApp = FindWindow(null, "Speaking VN"); // tìm trong những cửa sổ đang chạy hiện tại có cửa sổ nào có tiêu đề là Speaking VN ko , nếu có trả về handle và lưu vào biến hApp nếu ko thì trả về null
hMainMenu = GetMenu(hApp) ; // hàm GetMenu lấy handle(mục quản ) của cả hệ thống menu gán với cửa sổ có mục quản lưu trong biến hApp
hSubMenu = GetSubMenu(hMainMenu , iSubMenuIndex); // hàm GetSubMenu dùng để nhận mục quản của nhánh thực đơn thứ tự npos(iSubMenuIndex) thuộc hệ thực đơn hMainMenu
iMenuItemID = (int) GetMenuItemID(hSubMenu , iSubMenuItem);//hàm GetMenuItemID dung để lấy mã định danh ID của mục thứ iSubMenuIndex trong nhánh hSubMenu , sau đó ép kiểu sang kiểu int và lưu vào biến iMenuItemID
Message.Show(iMenuItemID.ToString()); // chuyển mã định danh đang lưu trong biến iMenuItemID sang kiểu chuỗi và hiện thị lên
}
///////////////////////////////////////////////////////////////////////////
private void PronounceByVnVoice(string strTCVN3)
{
IntPtr hApp = FindWindow(null, "Speaking VN"); // tìm xem những cửa sổ đang chạy có cửa sổ nào tiêu đề là “Speaking VN” , tên class là null và trả về handle(mục quản) của cửa đó rồi lưu vào biến hApp
if (hApp == IntPtr.Zero) // nếu ko tìm thấy handle , do chưa khởi động vnvoice thì thoát ra khỏi hàm này luôn
{
return;
}
IntPtr hFrame = FindWindowEx(hApp, IntPtr.Zero, "AfxFrameOrView42s", ""); // tìm handle của cửa sổ con của hApp có tên class là AfxFrameOrView42s và lưu vào biến hFrame
IntPtr hRichEditBox = FindWindowEx(hFrame, IntPtr.Zero, "RICHEDIT", ""); //với frame vừa tìm được thì tiếp tục lại tìm (tìm kiếm mở rộng) trong đó có đối tượng nào có tên lớp là “RICHEDIT” hay không ? Nếu có thì trả mục quản (handle) của nó về cho biến hFrame còn nếu không thì trả về NULL
Clipboard.Clear(); //Xoá sạch clipboard để chứa đoạn văn bản được giữ ở biến strTCVN3
SendMessageW(hRichEditBox, WM_SETTEXT, 0, (int)Marshal.StringToHGlobalUni(strTCVN3)); // Gửi đoạn văn bản chứa bởi strTCVN3 tới đối tượng RICHEDIT của chương trình "Speaking VN"
SendMessage(hApp, WM_COMMAND, 104, 0); // sau khi gửi đoạn văn bản tới RICHEDIT của tiến trình "Speaking VN" thì tiếp tục gọi lệnh gửi thông điệp thực hiện tới đối tượng có ID=104 (là button đọc của chương trình VnVoice)
}
private void cmdGetMenuItemID_Click(object sender, EventArgs e)
{
IntPtr hMainMenu, hSubMenu; //khai báo 2 biến hMainMenu và hSubMenu kiểu handel(mục quản)
int iSubMenuIndex, iSubMenuItem, iMenuItemID;
iSubMenuIndex = 0;
iSubMenuItem = 0;
IntPtr hApp = FindWindow(null, "Speaking VN"); // tìm trong những cửa sổ đang chạy hiện tại có cửa sổ nào có tiêu đề là Speaking VN ko , nếu có trả về handle và lưu vào biến hApp nếu ko thì trả về null
hMainMenu = GetMenu(hApp) ; // hàm GetMenu lấy handle(mục quản ) của cả hệ thống menu gán với cửa sổ có mục quản lưu trong biến hApp
hSubMenu = GetSubMenu(hMainMenu , iSubMenuIndex); // hàm GetSubMenu dùng để nhận mục quản của nhánh thực đơn thứ tự npos(iSubMenuIndex) thuộc hệ thực đơn hMainMenu
iMenuItemID = (int) GetMenuItemID(hSubMenu , iSubMenuItem);//hàm GetMenuItemID dung để lấy mã định danh ID của mục thứ iSubMenuIndex trong nhánh hSubMenu , sau đó ép kiểu sang kiểu int và lưu vào biến iMenuItemID
Message.Show(iMenuItemID.ToString()); // chuyển mã định danh đang lưu trong biến iMenuItemID sang kiểu chuỗi và hiện thị lên
}
///////////////////////////////////////////////////////////////////////////
private void PronounceByVnVoice(string strTCVN3)
{
IntPtr hApp = FindWindow(null, "Speaking VN"); // tìm xem những cửa sổ đang chạy có cửa sổ nào tiêu đề là “Speaking VN” , tên class là null và trả về handle(mục quản) của cửa đó rồi lưu vào biến hApp
if (hApp == IntPtr.Zero) // nếu ko tìm thấy handle , do chưa khởi động vnvoice thì thoát ra khỏi hàm này luôn
{
return;
}
IntPtr hFrame = FindWindowEx(hApp, IntPtr.Zero, "AfxFrameOrView42s", ""); // tìm handle của cửa sổ con của hApp có tên class là AfxFrameOrView42s và lưu vào biến hFrame
IntPtr hRichEditBox = FindWindowEx(hFrame, IntPtr.Zero, "RICHEDIT", ""); //với frame vừa tìm được thì tiếp tục lại tìm (tìm kiếm mở rộng) trong đó có đối tượng nào có tên lớp là “RICHEDIT” hay không ? Nếu có thì trả mục quản (handle) của nó về cho biến hFrame còn nếu không thì trả về NULL
Clipboard.Clear(); //Xoá sạch clipboard để chứa đoạn văn bản được giữ ở biến strTCVN3
SendMessageW(hRichEditBox, WM_SETTEXT, 0, (int)Marshal.StringToHGlobalUni(strTCVN3)); // Gửi đoạn văn bản chứa bởi strTCVN3 tới đối tượng RICHEDIT của chương trình "Speaking VN"
SendMessage(hApp, WM_COMMAND, 104, 0); // sau khi gửi đoạn văn bản tới RICHEDIT của tiến trình "Speaking VN" thì tiếp tục gọi lệnh gửi thông điệp thực hiện tới đối tượng có ID=104 (là button đọc của chương trình VnVoice)
}
phanngocthinh(i12a)- Tổng số bài gửi : 47
Join date : 17/02/2012
Trang 2 trong tổng số 2 trang • 1, 2
Similar topics
» Thực hành điều khiển VnVoice
» Thực hành điều khiển VnVoice
» Thực hành điều khiển VnVoice
» Điều khiển VnVoice
» Điều khiển VnVoice
» Thực hành điều khiển VnVoice
» Thực hành điều khiển VnVoice
» Điều khiển VnVoice
» Điều khiển VnVoice
Trang 2 trong tổng số 2 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết