Đ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

Điều khiển VnVoice

Bài gửi  Admin on 28/3/2014, 15:50

Tham khảo các bài của I12A
Đọc thêm: Lập trình tương tác bằng VB6
Lấy về: VnVoice 1.0

VC# .NET:





Được sửa bởi Admin ngày 31/3/2014, 08:17; sửa lần 2.

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

Lớp MsgBox

Bài gửi  Admin on 30/3/2014, 09:50

Sử dụng MsgBox:

Lớp MsgBox:





Được sửa bởi Admin ngày 31/3/2014, 08:18; sửa lần 1.

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

Re: Điều khiển VnVoice

Bài gửi  NguyenChiKien(HLT3) on 30/3/2014, 22:22

Em rất thích đề tài này... rất hữu ích... bắt đầu nghiên cứu nào cả nhà.... Smile
P/S: Gõ 1 đóng code này hơi bị fê hén cả nhà.... Smile

Admin: Tốt ! Chịu khó gõ một chút thì sẽ Giỏi !
avatar
NguyenChiKien(HLT3)

Tổng số bài gửi : 44
Join date : 23/03/2014
Age : 34

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

Về Đầu Trang Go down

Re: Điều khiển VnVoice

Bài gửi  NguyenChiKien(HLT3) on 30/3/2014, 22:58

Báo cáo là WIN8, VNVoice k0 hỗ trợ nha cả nhà... :)Bắt tay cài máy Ảo thôi.... Smile

Admin: Đã có mục về Máy ảo rồi ! Làm ngay !
avatar
NguyenChiKien(HLT3)

Tổng số bài gửi : 44
Join date : 23/03/2014
Age : 34

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

Về Đầu Trang Go down

Giải thích code tìm ID của Menu

Bài gửi  NguyenChiKien(HLT3) on 30/3/2014, 23:52

private void cmdGetMenuItemID_Click(object sender, EventArgs e)
       {
           IntPtr hMainMenu, hSubMenu; //khai báo 2 biến hMainMenu và hSubMenu kiểu handle(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

MessageBox.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  
       }

Admin: Hiểu tốt !
avatar
NguyenChiKien(HLT3)

Tổng số bài gửi : 44
Join date : 23/03/2014
Age : 34

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

Về Đầu Trang Go down

vnVoice cho mobile

Bài gửi  VoThanhTrung41 (HLT3) on 31/3/2014, 09:27

Em thấy hứng thú với vnVoice, hiện e đang làm lập trình mobile và bên cty cũng có giao task là tìm hiểu về công nghệ này để phát triển trên mobile, không biết Thầy và các bạn có ai đã từng làm ý tưởng này cho mobile chưa, Android, Window phone 8, IOS

Admin:
- Thày mới chỉ làm chủ được vấn đề TTS cho Desktop.
- Giải pháp cho Mobile đã có. Tìm thêm trên Mạng !

VoThanhTrung41 (HLT3)

Tổng số bài gửi : 34
Join date : 23/03/2014

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

Về Đầu Trang Go down

Re: Điều khiển VnVoice

Bài gửi  NguyễnMinhHoàng45(HLT3) on 31/3/2014, 14:50

Code:

Class MsgBox
{
        /* Khai báo các hàm DLL */
        static Timer tmr = new Timer(); //Khai báo 1 đối tượng timer, thực hiện công việc sau 1 khoảng thời gian
        static MessageboxButtons mbButton; // Khai báo đối tượng enum về loại button
        public statis DialogReult Show(string text, string caption, MessageboxButtons button, MessageboxIcon icon, MessageboxDefaultButton defaultbutton)
        {
                 tmr.Interval = 1; // thời gian thực hiện sau 1 giây, đủ thời gian để messagebox hệ thống hiện lên
                 tmr.Tick += EventHandler(tmr_Tick);// Khai báo nhận sự kiện Tick của tmr
                 tmr.Enable = true;
                 // Hình như thiếu hàm tmr.Start(); hả thầy?
                 mbButton = button;
                 return Messagebox.Show(text,caption,button,icon,defaultbutton); // gọi lên messagebox của hệ thống
        }
        private void tmr_Tick(object sender, EventArgs e)
        {
                 tmr.Enable = false;
                 //hình như ở đây thiếu tmr.Stop();
                 IntPtr hMessageBox = GetActiveWindow(); //gọi hàm API hệ thống lấy cửa sổ hiện hành, là messagebox
                 IntPtr bButton;
                 switch(mbButton)
                 {
                        case MessageboxButtons.YesNo : // trong trường hợp messagebox button là dạng YES NO
                               hButton = FindWindowEx(hMessageBox, IntPtr.Zero, "Button", "&Yes"); //Tìm ra "window" nút bấm Yes
                               SendMessageW(hButton, WM_SETTEXT, 0, "Có"); //Set Caption cho nút Yes thành có
                               hButton = FindWindowEx(hMessageBox, IntPtr.Zero, "Button", "&No"); //Tìm ra "window" nút bấm No
                               SendMessageW(hButton, WM_SETTEXT, 0, "Không"); //Set Caption cho nút Yes thành không
                               break;
                        case MessageboxButtons.OK :
                               hButton = FindWindowEx(hMessageBox, IntPtr.Zero, "Button", "&Ok");
                               SendMessageW(hButton, WM_SETTEXT, 0, "Được"); //Set Caption cho nút OK thành được
                               break;
                 }
         }
}
Về vấn đề hiện chữ tiếng việt trên TitleBar không được là do font hệ thống không hỗ trợ, điều này phụ thuộc vào máy người dùng, rất khó để care vấn đề này

Admin:
- Nếu không có tmr.Start() mà vẫn đúng, nghĩa là không cần đến nó !
- Máy người dùng sử dụng font gì cho các thành phần của Desktop thì từ chương trình vẫn có thể "Đổi" theo ý mình để hiển thị đúng chữ cần (ví dụ chữ Việt có dấu), sau đó khôi phục lại font ban đầu trước khi thoát ! (đây là vấn đề Hay và Thiết thực, nhưng đáng tiếc là nhiều người Không biết và cho đây là Chuyện nhỏ). Thày đã làm chủ vấn đề này một cách trọn vẹn !
- Hiểu rất đúng mã trên ! Cần thử ngay trên máy (có bổ sung thêm những trường hợp khác như OK-Cancel,...) !
avatar
NguyễnMinhHoàng45(HLT3)

Tổng số bài gửi : 44
Join date : 17/02/2012
Age : 32
Đến từ : Viet Nam

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

Về Đầu Trang Go down

Re: Điều khiển VnVoice

Bài gửi  NguyễnMinhHoàng45(HLT3) on 1/4/2014, 12:10

Code:

private static void tmr_Tick(object sender, EventArgs e)
   {
       tmr.Enabled = false;

       IntPtr hMessageBox = GetActiveWindow(); //gọi hàm API hệ thống lấy cửa sổ hiện hành, là messagebox
       IntPtr bButton;
       switch (mbButton)
       {
           case MessageBoxButtons.YesNo: // trong trường hợp messagebox button là dạng YES NO
               bButton = FindWindowEx(hMessageBox, IntPtr.Zero, "Button", "&Yes"); //Tìm ra "window" nút bấm Yes
               SendMessageW(bButton, WM_SETTEXT, 0, "Có"); //Set Caption cho nút Yes thành có
               bButton = FindWindowEx(hMessageBox, IntPtr.Zero, "Button", "&No"); //Tìm ra "window" nút bấm No
               SendMessageW(bButton, WM_SETTEXT, 0, "Không"); //Set Caption cho nút No thành không
               break;

           case MessageBoxButtons.OK:
               bButton = FindWindowEx(hMessageBox, IntPtr.Zero, "Button", "Ok");
               SendMessageW(bButton, WM_SETTEXT, 0, "Được"); //Set Caption cho nút OK thành được
               break;
           case MessageBoxButtons.YesNoCancel:
               bButton = FindWindowEx(hMessageBox, IntPtr.Zero, "Button", "&Yes");
               SendMessageW(bButton, WM_SETTEXT, 0, "Có");
               bButton = FindWindowEx(hMessageBox, IntPtr.Zero, "Button", "&No");
               SendMessageW(bButton, WM_SETTEXT, 0, "Không");
               bButton = FindWindowEx(hMessageBox, IntPtr.Zero, "Button", "Cancel");
               SendMessageW(bButton, WM_SETTEXT, 0, "Thôi");
               break;
           case MessageBoxButtons.OKCancel:
               bButton = FindWindowEx(hMessageBox, IntPtr.Zero, "Button", "OK");
               SendMessageW(bButton, WM_SETTEXT, 0, "Được");
               bButton = FindWindowEx(hMessageBox, IntPtr.Zero, "Button", "Cancel");
               SendMessageW(bButton, WM_SETTEXT, 0, "Thôi");
               break;
           case MessageBoxButtons.RetryCancel:
               bButton = FindWindowEx(hMessageBox, IntPtr.Zero, "Button", "&Retry");
               SendMessageW(bButton, WM_SETTEXT, 0, "Thử lại");
               bButton = FindWindowEx(hMessageBox, IntPtr.Zero, "Button", "Cancel");
               SendMessageW(bButton, WM_SETTEXT, 0, "Thôi");
               break;
           case MessageBoxButtons.AbortRetryIgnore:
               bButton = FindWindowEx(hMessageBox, IntPtr.Zero, "Button", "&Abort");
               SendMessageW(bButton, WM_SETTEXT, 0, "Hủy");
               bButton = FindWindowEx(hMessageBox, IntPtr.Zero, "Button", "&Retry");
               SendMessageW(bButton, WM_SETTEXT, 0, "Thử lại");
               bButton = FindWindowEx(hMessageBox, IntPtr.Zero, "Button", "&Ignore");
               SendMessageW(bButton, WM_SETTEXT, 0, "Bỏ qua lỗi");
               break;
       }
Code hoàn thiện các trường hợp MessageBoxButtons
Lưu ý phải đánh đúng caption các nút thì mới chạy được, caption phải đúng kể cả các ký tự gạch dưới (thường dùng alt + phím gạch dưới để chọn nhanh) muốn xem gạch dưới chữ nào thì nhấn alt

Admin:
- Rất tốt !
- Nên phát huy tiếp với các Common Dialogbox khác như Open, Save As,... !
avatar
NguyễnMinhHoàng45(HLT3)

Tổng số bài gửi : 44
Join date : 17/02/2012
Age : 32
Đến từ : Viet Nam

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

Về Đầu Trang Go down

Hộp thoại OpenFileDialog

Bài gửi  NguyễnMinhHoàng45(HLT3) on 2/4/2014, 14:52

Code:

public class OpenDlg
   {
       [DllImport("user32.dll", CharSet = CharSet.Auto)]
       static extern IntPtr SendMessageW(IntPtr hWnd, int Msg, int wParam, string lParam);

       [DllImport("user32.dll", CharSet = CharSet.Auto)]
       static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);

       [DllImport("user32.dll", CharSet = CharSet.Auto)]
       static extern IntPtr GetActiveWindow();

       static Timer tmr = new Timer();
       const int WM_SETTEXT = 0xC;

       public string Title { get; set; }
       public string Filter { get; set; }
       public string FileName { get; set; }
       public string[] FileNames { get; set; }
       public string InitialDirectory { get; set; }
       public string DefaultExt { get; set; }
       public bool Multiselect { get; set; }
       public string SafeFileName { get; set; }
       public string[] SafeFileNames { get; set; }
       public DialogResult Show()
       {            
           OpenFileDialog dlg = new OpenFileDialog();

           if (this.Title != "")
               dlg.Title = this.Title;
           else
               dlg.Title = "Mở file";
           dlg.Filter = this.Filter;
           dlg.DefaultExt = this.DefaultExt;
           dlg.InitialDirectory = this.InitialDirectory;
           dlg.Multiselect = this.Multiselect;
           //Bổ sung thêm 1 số property cho cửa sổ nếu cần
           tmr.Interval = 1;
           tmr.Tick += new EventHandler(tmr_Tick);
           tmr.Enabled = true;
           DialogResult rslt = dlg.ShowDialog();
           if (rslt == DialogResult.OK)
           {
               this.FileName = dlg.FileName;
               this.FileNames = dlg.FileNames;
               this.SafeFileName = dlg.SafeFileName;
               this.SafeFileNames = dlg.SafeFileNames;
           }            
           return rslt;
       }
       private  void tmr_Tick(object sender, EventArgs e)
       {
           tmr.Enabled = false;

           IntPtr hMessageBox = GetActiveWindow();

           IntPtr hButton;

           hButton = FindWindowEx(hMessageBox, IntPtr.Zero, "Button", "&Open");
           SendMessageW(hButton, WM_SETTEXT, 0, "Mở");
           hButton = FindWindowEx(hMessageBox, IntPtr.Zero, "Button", "Cancel");
           SendMessageW(hButton, WM_SETTEXT, 0, "Hủy");
       }
   }
SaveFileDialog cũng tương tự

Admin:
- Bạn này phải mất 2 ngày để hoàn thành bài tập trên ! Rất đúng hướng !
- Nên cho biết dáng vẻ của DialogBox trên ! (hãy luôn đặt mình bên phía Khách hàng và Người sử dụng)
- Ngoài ra, nên Việt hoá thêm vài chỗ nữa (gần hết được thì tốt) !
avatar
NguyễnMinhHoàng45(HLT3)

Tổng số bài gửi : 44
Join date : 17/02/2012
Age : 32
Đến từ : Viet Nam

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

Về Đầu Trang Go down

Thắc mắc wParam

Bài gửi  NguyễnMinhHoàng45(HLT3) on 2/4/2014, 15:25

Thầy ơi cho em hỏi, thầy có thể chỉ cho tụi em danh sách các tham số ở wParam đó thấy. cái thầy thường dùng WM_SETTEXT đó

Admin: Trên Mạng có hết !
avatar
NguyễnMinhHoàng45(HLT3)

Tổng số bài gửi : 44
Join date : 17/02/2012
Age : 32
Đến từ : Viet Nam

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

Về Đầu Trang Go down

BTVN: Xác định ID của thực đơn "Stop"?

Bài gửi  NguyenChiKien(HLT3) on 2/4/2014, 19:10

ID của Menu Stop: 32792 phải không thầy.... Smile

Admin: Cho biết cách xác định thì hiệu quả hơn !
avatar
NguyenChiKien(HLT3)

Tổng số bài gửi : 44
Join date : 23/03/2014
Age : 34

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

Về Đầu Trang Go down

Thao tác với Menu (phát triển thêm)

Bài gửi  NguyễnMinhHoàng45(HLT3) on 3/4/2014, 12:23

Em xây dựng class này có thể tìm được MenuID theo vị trí và cả theo text
theo vị trí cần lưu ý đếm cả gạch và bắt đầu từ 0
theo text cần chính xác ký tự gạch dưới
có xử lý click vào menu theo text

Code:

public class XL_Menu
   {
       [DllImport("user32.dll", CharSet = CharSet.Auto)]
       static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

       [DllImport("user32.dll", CharSet = CharSet.Auto)]
       static extern IntPtr SendMessageW(IntPtr hWnd, int Msg, int wParam, int lParam);

       [DllImport("user32.dll", CharSet = CharSet.Auto)]
       static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
       
       [DllImport("user32.dll", CharSet = CharSet.Auto)]
       static extern IntPtr GetMenu(IntPtr hWnd);

       [DllImport("user32.dll", CharSet = CharSet.Auto)]
       static extern IntPtr GetSubMenu(IntPtr hMenu,int nPos);

       [DllImport("user32.dll", CharSet = CharSet.Auto)]
       static extern uint GetMenuItemID(IntPtr hMenu, int nPos);

       [DllImport("user32.dll", CharSet = CharSet.Auto)]
       static extern int GetMenuString(IntPtr hMenu, int nIDItem, char[] rString, int maxCount, int nFlags);

       [DllImport("user32.dll", CharSet = CharSet.Auto)]
       static extern int GetMenuItemCount(IntPtr hMenu);

       public static int GetMenuIDApp(string TitleApp, int nPosMenu, int nPosSubMenu)
       {
           IntPtr hMainMenu, hSubMenu;
           int iMenuItemID;
           char[] szTemp;
           szTemp = new char[32];
           IntPtr hApp = FindWindow(null, TitleApp);
           hMainMenu = GetMenu(hApp);
           hSubMenu = GetSubMenu(hMainMenu, nPosMenu);
           iMenuItemID = (int) GetMenuItemID(hSubMenu, nPosSubMenu);
           return iMenuItemID;
       }
       const int WM_COMMAND = 0x0111;
       const int MF_BYCOMMAND = 0x0000;
       const int MF_BYPOSITION = 0x0400;
       const int MAX_SIZE = 100;
       private static string ArrayCharToString(char[] a)
       {
           string kq = "";
           for (int i = 0; i < a.Count(); i++)
           {
               if (a[i] != '\0')
                   kq += a[i];
               else
                   break;
           }
           return kq;
       }
       public static int GetMenuIDApp(string TitleApp, string MenuText, string SubMenuText)
       {
           IntPtr hMainMenu, hSubMenu;
           int iMenuItemID;

           IntPtr hApp = FindWindow(null, TitleApp);
           hMainMenu = GetMenu(hApp);
           int MenuCount = GetMenuItemCount(hMainMenu);
           char[] szTemp;
           string text = "";
           szTemp = new char[32];
           int nPos = -1;
           for (nPos = 0; nPos < MenuCount; nPos++)
           {
               text = "";
               GetMenuString(hMainMenu, nPos, szTemp, MAX_SIZE, MF_BYPOSITION);
               text = ArrayCharToString(szTemp);
               if (text == MenuText)
               {
                   break;
               }                
           }

           hSubMenu = GetSubMenu(hMainMenu, nPos);
           nPos = -1;
           MenuCount = GetMenuItemCount(hSubMenu);

           for (nPos = 0; nPos < MenuCount; nPos++)
           {
               text = "";
               GetMenuString(hSubMenu, nPos, szTemp, MAX_SIZE, MF_BYPOSITION);
               text = ArrayCharToString(szTemp);

               if (text == SubMenuText)
               {
                   break;
               }
           }

           iMenuItemID = (int)GetMenuItemID(hSubMenu, nPos);
           return iMenuItemID;
       }
       public static void ClickMenu(string TitleApp, string MenuText, string SubMenuText)
       {
           int MenuID = GetMenuIDApp(TitleApp, MenuText, SubMenuText);
           IntPtr hApp = FindWindow(null, TitleApp);
           SendMessage(hApp, WM_COMMAND, MenuID, 0);
       }

   }

Admin:
- Em đang đi Đúng hướng và Đúng cách ! (không phải ai cũng hiểu được cách đi này đâu)
- Vấn đề IPC rất Quan trọng và Thực tiễn.
- Cần Sâu và Rộng hơn nữa !
avatar
NguyễnMinhHoàng45(HLT3)

Tổng số bài gửi : 44
Join date : 17/02/2012
Age : 32
Đến từ : Viet Nam

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

Về Đầu Trang Go down

Re: Điều khiển VnVoice

Bài gửi  NguyenChiKien(HLT3) on 3/4/2014, 17:30

NguyenChiKien(HLT3) đã viết:ID của Menu Stop: 32792 phải không thầy.... Smile

Admin: Cho biết cách xác định thì hiệu quả hơn !

Code xác định ID của Menu STOP:

private void bt_layidmenu_Click(object sender, EventArgs e)
       {
           IntPtr hMainMenu, hSubMenu;
           int iSubMenuIndex, iSbMenuItem, iMenuItemID;
           iSubMenuIndex = 0;
           iSbMenuItem = 1;// vị trí của menu STOP
           IntPtr hApp = FindWindow(null, "Speaking VN");
           hMainMenu = GetMenu(hApp);
           hSubMenu = GetSubMenu(hMainMenu, iSubMenuIndex);
           iMenuItemID = (int)GetMenuItemID(hSubMenu, iSbMenuItem);
           MessageBox.Show(iMenuItemID.ToString());
       }

Admin: Đúng !


Được sửa bởi NguyenChiKien(HLT3) ngày 3/4/2014, 17:39; sửa lần 1.
avatar
NguyenChiKien(HLT3)

Tổng số bài gửi : 44
Join date : 23/03/2014
Age : 34

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

Về Đầu Trang Go down

Hàm convert từ UNICODE sang TCVN3

Bài gửi  NguyenChiKien(HLT3) on 3/4/2014, 17:35

Đầu tiên ta có 2 mảng ký tự có dấu unicode và TCVN3,sau đó ánh xạ 2 mảng đó lại với nhau thành mảng trung gian.Tiếp đó chỉ việc đọc từng ký tự trong chuỗi Unicode dưới dạng byte  và ánh xạ sang TCVN3 thông qua cái mảng trung gian đó:

       char[] tcvnchars = {
           'µ', '¸', '¶', '•', '¹',
           '¨', '»', '¾', '¼', '½', 'Æ',
           '©', 'Ç', 'Ê', 'È', 'É', 'Ë',
           '®', 'Ì', 'Ð', 'Î', 'Ï', 'Ñ',
           'ª', 'Ò', 'Õ', 'Ó', 'Ô', 'Ö',
           '×', 'Ý', 'Ø', 'Ü', 'Þ',
           'ß', 'ã', 'á', 'â', 'ä',
           '«', 'å', 'è', 'æ', 'ç', 'é',
           '¬', 'ê', 'í', 'ë', 'ì', 'î',
           'ï', 'ó', 'ñ', 'ò', 'ô',
           '¬', 'õ', 'ø', 'ö', '÷', 'ù',
           'ú', 'ý', 'û', 'ü', 'þ',
           '¡', '¢', '§', '£', '¤', '¥', '¦'
       };
       char[] unichars ={
           'à', 'á', 'ả', 'ã', 'ạ',
           'ă', 'ằ', 'ắ', 'ẳ', 'ẵ', 'ặ',
           'â', 'ầ', 'ấ', 'ẩ', 'ẫ', 'ậ',
           'đ', 'è', 'é', 'ẻ', 'ẽ', 'ẹ',
           'ê', 'ề', 'ế', 'ể', 'ễ', 'ệ',
           'ì', 'í', 'ỉ', 'ĩ', 'ị',
           'ò', 'ó', 'ỏ', 'õ', 'ọ',
           'ô', 'ồ', 'ố', 'ổ', 'ỗ', 'ộ',
           'ơ', 'ờ', 'ớ', 'ở', 'ỡ', 'ợ',
           'ù', 'ú', 'ủ', 'ũ', 'ụ',
           'ư', 'ừ', 'ứ', 'ử', 'ữ', 'ự',
           'ỳ', 'ý', 'ỷ', 'ỹ', 'ỵ',
           'Ă', 'Â', 'Đ', 'Ê', 'Ô', 'Ơ', 'Ư'
       };
       Chuyển đổi từ UNICODE sang TCVN3:

       char[] convertTable;
       public MsgBox()
       {
           convertTable = new char[8000];
           for (int i = 0; i < 8000; i++)
               convertTable[i] = (char)i;
           for (int i = 0; i < unichars.Length; i++)
               convertTable[unichars[i]] = tcvnchars[i];
       }
       public string UnicodeToTCVN3(string strUnicode)
       {
           char[] chars = strUnicode.ToCharArray();
           for (int i = 0; i < chars.Length; i++)
               if (chars[i] < (char)8000)
                   chars[i] = convertTable[chars[i]];
           return new string(chars);
       }

Admin: Đúng hướng !
avatar
NguyenChiKien(HLT3)

Tổng số bài gửi : 44
Join date : 23/03/2014
Age : 34

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

Về Đầu Trang Go down

vấn đề khi sử dụng điều khiển menu bằng IPC

Bài gửi  NguyễnMinhHoàng45(HLT3) on 4/4/2014, 08:49

thưa thầy, hôm qua em có test bằng cách tạo 1 project khác, form trắng chỉ có mỗi menustrip. nhưng dùng hàm GetMenu không lấy được mục quản của menustrip. xin thầy giúp em ý kiến.
nếu như thao tác nào đó không được xây dựng trên menu mà làm trong nút bấm thì mình có cách nào click nút bấm được không? xin thầy chỉ em hướng xử lý với

Admin:
- Nên thiết thực bằng cách gửi Project trên cho mọi người tham khảo !
- Với nút bấm (nút lệnh) cũng làm như vậy, nhưng gửi thông điệp Left Click cho nó, ví dụ:

Code:
const int BM_CLICK = 0xF5;
SendMessage(hCommandButton, BM_CLICK, 0, 0);

- Chúc em thành công !
avatar
NguyễnMinhHoàng45(HLT3)

Tổng số bài gửi : 44
Join date : 17/02/2012
Age : 32
Đến từ : Viet Nam

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

Về Đầu Trang Go down

Hàm xử lý gửi văn bản dài...

Bài gửi  NguyenChiKien(HLT3) on 4/4/2014, 18:24

Chào cả nhà... đây là hàm xử lý gửi VB dài... như thầy nói, ứng dụng VnVoice bản Demo chỉ đọc được VB ngắn, vấn đề được đặt ra là làm thế nào đọc đc VB dài trong khi ta vẫn sử dụng bản Demo? Đúng như thầy nói, ta cắt đoạn VB dài đó thành những đoạn ngắn với chiều dài chuỗi là 500 giới hạn những đoạn ngắt đó là khoảng trắng... sau đó dùng hàm gửi VB ngắn(đoạn code thầy gửi ở đầu trang 1) gửi liên tiếp (SendMessegeW) tới VnVoice, dưới đây là đoạn code xử lý theo hướng đó:

void PhatAmVBDai(string strToSplit)
       {
           MsgBox msg = new MsgBox();
           string temp = "";
           if (strToSplit.Length > 500)
           {
               int curIndex = 500;
               while (strToSplit[curIndex] != ' ')
               {
                   curIndex--;
                   if (curIndex < 0)
                   {
                       curIndex = 500;
                       break;
                   }
               }
               temp = strToSplit.Substring(0, curIndex);
               strToSplit = strToSplit.Remove(0, curIndex);
               PhatAm(msg.UnicodeToTCVN3(temp));// đây là hàm gửi VB ở nút phát âm đoạn VB ngắn
           }
           else if (strToSplit.Length > 0)
               PhatAm(strToSplit);
       }
private void bt_phatamdai_Click(object sender, EventArgs e)
       {
           MsgBox msg = new MsgBox();
           PhatAmVBDai(msg.UnicodeToTCVN3(txtUnicode.Text));
       }  

Admin: Có cố gắng !
avatar
NguyenChiKien(HLT3)

Tổng số bài gửi : 44
Join date : 23/03/2014
Age : 34

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

Về Đầu Trang Go down

Ứng dụng tương tác VnVoice bằng VS 2005

Bài gửi  NguyenChiKien(HLT3) on 4/4/2014, 18:50

Gửi cả nhà ứng dụng tương tác với VnVoice, mọi người tham khảo và góp ý nhé thanks!!!!
Link download: https://app.box.com/s/6wrdyciwmon3ax0rfvjh
avatar
NguyenChiKien(HLT3)

Tổng số bài gửi : 44
Join date : 23/03/2014
Age : 34

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

Về Đầu Trang Go down

Set và get status bar

Bài gửi  NguyễnMinhHoàng45(HLT3) on 7/4/2014, 11:29

Code:

        const int WM_SETTEXT = 0xC;
        const int WM_GETTEXT = 0xD;
        const int WM_GETTEXTLENGTH = 0xE;
        public static void SetStatusBarText(string TitleApp, string text)
        {
            IntPtr hApp = FindWindow(null, TitleApp);
            IntPtr hStatusBar = FindWindowEx(hApp, IntPtr.Zero, "msctls_statusbar32", "");
            SendMessage(hStatusBar, WM_SETTEXT, 0, text);
        }
        public static string GetStatusBarText(string TitleApp)
        {
            StringBuilder title = new StringBuilder();
            IntPtr hApp = FindWindow(null, TitleApp);
            IntPtr hStatusBar = FindWindowEx(hApp, IntPtr.Zero, "msctls_statusbar32", "");
            Int32 size = SendMessage(hStatusBar, WM_GETTEXTLENGTH, 0, 0).ToInt32();
            if (size > 0)
            {
                title = new StringBuilder(size + 1);

                SendMessage(hStatusBar, WM_GETTEXT, title.Capacity, title);
            }
            return title.ToString();
        }
avatar
NguyễnMinhHoàng45(HLT3)

Tổng số bài gửi : 44
Join date : 17/02/2012
Age : 32
Đến từ : Viet Nam

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

Về Đầu Trang Go down

List of Window Message

Bài gửi  NguyễnMinhHoàng45(HLT3) on 7/4/2014, 11:46

Hex Decimal Symbolic
0000 0 WM_NULL
0001 1 WM_CREATE
0002 2 WM_DESTROY
0003 3 WM_MOVE
0005 5 WM_SIZE
0006 6 WM_ACTIVATE
0007 7 WM_SETFOCUS
0008 8 WM_KILLFOCUS
000a 10 WM_ENABLE
000b 11 WM_SETREDRAW
000c 12 WM_SETTEXT
000d 13 WM_GETTEXT
000e 14 WM_GETTEXTLENGTH
000f 15 WM_PAINT
0010 16 WM_CLOSE
0011 17 WM_QUERYENDSESSION
0012 18 WM_QUIT
0013 19 WM_QUERYOPEN
0014 20 WM_ERASEBKGND
0015 21 WM_SYSCOLORCHANGE
0016 22 WM_ENDSESSION
0018 24 WM_SHOWWINDOW
0019 25 WM_CTLCOLOR
001a 26 WM_WININICHANGE
001b 27 WM_DEVMODECHANGE
001c 28 WM_ACTIVATEAPP
001d 29 WM_FONTCHANGE
001e 30 WM_TIMECHANGE
001f 31 WM_CANCELMODE
0020 32 WM_SETCURSOR
0021 33 WM_MOUSEACTIVATE
0022 34 WM_CHILDACTIVATE
0023 35 WM_QUEUESYNC
0024 36 WM_GETMINMAXINFO
0026 38 WM_PAINTICON
0027 39 WM_ICONERASEBKGND
0028 40 WM_NEXTDLGCTL
002a 42 WM_SPOOLERSTATUS
002b 43 WM_DRAWITEM
002c 44 WM_MEASUREITEM
002d 45 WM_DELETEITEM
002e 46 WM_VKEYTOITEM
002f 47 WM_CHARTOITEM
0030 48 WM_SETFONT
0031 49 WM_GETFONT
0032 50 WM_SETHOTKEY
0033 51 WM_GETHOTKEY
0037 55 WM_QUERYDRAGICON
0039 57 WM_COMPAREITEM
003d 61 WM_GETOBJECT
0041 65 WM_COMPACTING
0044 68 WM_COMMNOTIFY
0046 70 WM_WINDOWPOSCHANGING
0047 71 WM_WINDOWPOSCHANGED
0048 72 WM_POWER
0049 73 WM_COPYGLOBALDATA
004a 74 WM_COPYDATA
004b 75 WM_CANCELJOURNAL
004e 78 WM_NOTIFY
0050 80 WM_INPUTLANGCHANGEREQUEST
0051 81 WM_INPUTLANGCHANGE
0052 82 WM_TCARD
0053 83 WM_HELP
0054 84 WM_USERCHANGED
0055 85 WM_NOTIFYFORMAT
007b 123 WM_CONTEXTMENU
007c 124 WM_STYLECHANGING
007d 125 WM_STYLECHANGED
007e 126 WM_DISPLAYCHANGE
007f 127 WM_GETICON
0080 128 WM_SETICON
0081 129 WM_NCCREATE
0082 130 WM_NCDESTROY
0083 131 WM_NCCALCSIZE
0084 132 WM_NCHITTEST
0085 133 WM_NCPAINT
0086 134 WM_NCACTIVATE
0087 135 WM_GETDLGCODE
0088 136 WM_SYNCPAINT
00a0 160 WM_NCMOUSEMOVE
00a1 161 WM_NCLBUTTONDOWN
00a2 162 WM_NCLBUTTONUP
00a3 163 WM_NCLBUTTONDBLCLK
00a4 164 WM_NCRBUTTONDOWN
00a5 165 WM_NCRBUTTONUP
00a6 166 WM_NCRBUTTONDBLCLK
00a7 167 WM_NCMBUTTONDOWN
00a8 168 WM_NCMBUTTONUP
00a9 169 WM_NCMBUTTONDBLCLK
00ab 171 WM_NCXBUTTONDOWN
00ac 172 WM_NCXBUTTONUP
00ad 173 WM_NCXBUTTONDBLCLK
00e0 224 SBM_SETPOS
00e1 225 SBM_GETPOS
00e2 226 SBM_SETRANGE
00e3 227 SBM_GETRANGE
00e4 228 SBM_ENABLE_ARROWS
00e6 230 SBM_SETRANGEREDRAW
00e9 233 SBM_SETSCROLLINFO
00ea 234 SBM_GETSCROLLINFO
00eb 235 SBM_GETSCROLLBARINFO
00ff 255 WM_INPUT
0100 256 WM_KEYDOWN
0100 256 WM_KEYFIRST
0101 257 WM_KEYUP
0102 258 WM_CHAR
0103 259 WM_DEADCHAR
0104 260 WM_SYSKEYDOWN
0105 261 WM_SYSKEYUP
0106 262 WM_SYSCHAR
0107 263 WM_SYSDEADCHAR
0108 264 WM_KEYLAST
0109 265 WM_WNT_CONVERTREQUESTEX
010a 266 WM_CONVERTREQUEST
010b 267 WM_CONVERTRESULT
010c 268 WM_INTERIM
010d 269 WM_IME_STARTCOMPOSITION
010e 270 WM_IME_ENDCOMPOSITION
010f 271 WM_IME_COMPOSITION
010f 271 WM_IME_KEYLAST
0110 272 WM_INITDIALOG
0111 273 WM_COMMAND
0112 274 WM_SYSCOMMAND
0113 275 WM_TIMER
0114 276 WM_HSCROLL
0115 277 WM_VSCROLL
0116 278 WM_INITMENU
0117 279 WM_INITMENUPOPUP
0118 280 WM_SYSTIMER
011f 287 WM_MENUSELECT
0120 288 WM_MENUCHAR
0121 289 WM_ENTERIDLE
0122 290 WM_MENURBUTTONUP
0123 291 WM_MENUDRAG
0124 292 WM_MENUGETOBJECT
0125 293 WM_UNINITMENUPOPUP
0126 294 WM_MENUCOMMAND
0127 295 WM_CHANGEUISTATE
0128 296 WM_UPDATEUISTATE
0129 297 WM_QUERYUISTATE
avatar
NguyễnMinhHoàng45(HLT3)

Tổng số bài gửi : 44
Join date : 17/02/2012
Age : 32
Đến từ : Viet Nam

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

Về Đầu Trang Go down

List of Window Message (tt)

Bài gửi  NguyễnMinhHoàng45(HLT3) on 7/4/2014, 11:49

Hex Decimal Symbolic
0132 306 WM_CTLCOLORMSGBOX
0133 307 WM_CTLCOLOREDIT
0134 308 WM_CTLCOLORLISTBOX
0135 309 WM_CTLCOLORBTN
0136 310 WM_CTLCOLORDLG
0137 311 WM_CTLCOLORSCROLLBAR
0138 312 WM_CTLCOLORSTATIC
0200 512 WM_MOUSEFIRST
0200 512 WM_MOUSEMOVE
0201 513 WM_LBUTTONDOWN
0202 514 WM_LBUTTONUP
0203 515 WM_LBUTTONDBLCLK
0204 516 WM_RBUTTONDOWN
0205 517 WM_RBUTTONUP
0206 518 WM_RBUTTONDBLCLK
0207 519 WM_MBUTTONDOWN
0208 520 WM_MBUTTONUP
0209 521 WM_MBUTTONDBLCLK
0209 521 WM_MOUSELAST
020a 522 WM_MOUSEWHEEL
020b 523 WM_XBUTTONDOWN
020c 524 WM_XBUTTONUP
020d 525 WM_XBUTTONDBLCLK
0210 528 WM_PARENTNOTIFY
0211 529 WM_ENTERMENULOOP
0212 530 WM_EXITMENULOOP
0213 531 WM_NEXTMENU
0214 532 WM_SIZING
0215 533 WM_CAPTURECHANGED
0216 534 WM_MOVING
0218 536 WM_POWERBROADCAST
0219 537 WM_DEVICECHANGE
0220 544 WM_MDICREATE
0221 545 WM_MDIDESTROY
0222 546 WM_MDIACTIVATE
0223 547 WM_MDIRESTORE
0224 548 WM_MDINEXT
0225 549 WM_MDIMAXIMIZE
0226 550 WM_MDITILE
0227 551 WM_MDICASCADE
0228 552 WM_MDIICONARRANGE
0229 553 WM_MDIGETACTIVE
0230 560 WM_MDISETMENU
0231 561 WM_ENTERSIZEMOVE
0232 562 WM_EXITSIZEMOVE
0233 563 WM_DROPFILES
0234 564 WM_MDIREFRESHMENU
0280 640 WM_IME_REPORT
0281 641 WM_IME_SETCONTEXT
0282 642 WM_IME_NOTIFY
0283 643 WM_IME_CONTROL
0284 644 WM_IME_COMPOSITIONFULL
0285 645 WM_IME_SELECT
0286 646 WM_IME_CHAR
0288 648 WM_IME_REQUEST
0290 656 WM_IMEKEYDOWN
0290 656 WM_IME_KEYDOWN
0291 657 WM_IMEKEYUP
0291 657 WM_IME_KEYUP
02a0 672 WM_NCMOUSEHOVER
02a1 673 WM_MOUSEHOVER
02a2 674 WM_NCMOUSELEAVE
02a3 675 WM_MOUSELEAVE
0300 768 WM_CUT
0301 769 WM_COPY
0302 770 WM_PASTE
0303 771 WM_CLEAR
0304 772 WM_UNDO
0305 773 WM_RENDERFORMAT
0306 774 WM_RENDERALLFORMATS
0307 775 WM_DESTROYCLIPBOARD
0308 776 WM_DRAWCLIPBOARD
0309 777 WM_PAINTCLIPBOARD
030a 778 WM_VSCROLLCLIPBOARD
030b 779 WM_SIZECLIPBOARD
030c 780 WM_ASKCBFORMATNAME
030d 781 WM_CHANGECBCHAIN
030e 782 WM_HSCROLLCLIPBOARD
030f 783 WM_QUERYNEWPALETTE
0310 784 WM_PALETTEISCHANGING
0311 785 WM_PALETTECHANGED
0312 786 WM_HOTKEY
0317 791 WM_PRINT
0318 792 WM_PRINTCLIENT
0319 793 WM_APPCOMMAND
0358 856 WM_HANDHELDFIRST
035f 863 WM_HANDHELDLAST
0360 864 WM_AFXFIRST
037f 895 WM_AFXLAST
0380 896 WM_PENWINFIRST
0381 897 WM_RCRESULT
0382 898 WM_HOOKRCRESULT
0383 899 WM_GLOBALRCCHANGE
0383 899 WM_PENMISCINFO
0384 900 WM_SKB
0385 901 WM_HEDITCTL
0385 901 WM_PENCTL
0386 902 WM_PENMISC
0387 903 WM_CTLINIT
0388 904 WM_PENEVENT
038f 911 WM_PENWINLAST
0400 1024 DDM_SETFMT
0400 1024 DM_GETDEFID
0400 1024 NIN_SELECT
0400 1024 TBM_GETPOS
0400 1024 WM_PSD_PAGESETUPDLG
0400 1024 WM_USER
0401 1025 CBEM_INSERTITEMA
0401 1025 DDM_DRAW
0401 1025 DM_SETDEFID
0401 1025 HKM_SETHOTKEY
0401 1025 PBM_SETRANGE
0401 1025 RB_INSERTBANDA
0401 1025 SB_SETTEXTA
0401 1025 TB_ENABLEBUTTON
0401 1025 TBM_GETRANGEMIN
0401 1025 TTM_ACTIVATE
0401 1025 WM_CHOOSEFONT_GETLOGFONT
0401 1025 WM_PSD_FULLPAGERECT
0402 1026 CBEM_SETIMAGELIST
0402 1026 DDM_CLOSE
0402 1026 DM_REPOSITION
0402 1026 HKM_GETHOTKEY
0402 1026 PBM_SETPOS
0402 1026 RB_DELETEBAND
0402 1026 SB_GETTEXTA
0402 1026 TB_CHECKBUTTON
0402 1026 TBM_GETRANGEMAX
0402 1026 WM_PSD_MINMARGINRECT
0403 1027 CBEM_GETIMAGELIST
0403 1027 DDM_BEGIN
0403 1027 HKM_SETRULES
0403 1027 PBM_DELTAPOS
0403 1027 RB_GETBARINFO
0403 1027 SB_GETTEXTLENGTHA
0403 1027 TBM_GETTIC
0403 1027 TB_PRESSBUTTON
0403 1027 TTM_SETDELAYTIME
0403 1027 WM_PSD_MARGINRECT
0404 1028 CBEM_GETITEMA
0404 1028 DDM_END
0404 1028 PBM_SETSTEP
0404 1028 RB_SETBARINFO
0404 1028 SB_SETPARTS
0404 1028 TB_HIDEBUTTON
0404 1028 TBM_SETTIC
0404 1028 TTM_ADDTOOLA
0404 1028 WM_PSD_GREEKTEXTRECT
0405 1029 CBEM_SETITEMA
0405 1029 PBM_STEPIT
0405 1029 TB_INDETERMINATE
0405 1029 TBM_SETPOS
0405 1029 TTM_DELTOOLA
0405 1029 WM_PSD_ENVSTAMPRECT
0406 1030 CBEM_GETCOMBOCONTROL
0406 1030 PBM_SETRANGE32
0406 1030 RB_SETBANDINFOA
0406 1030 SB_GETPARTS
0406 1030 TB_MARKBUTTON
0406 1030 TBM_SETRANGE
0406 1030 TTM_NEWTOOLRECTA
0406 1030 WM_PSD_YAFULLPAGERECT
0407 1031 CBEM_GETEDITCONTROL
0407 1031 PBM_GETRANGE
0407 1031 RB_SETPARENT
0407 1031 SB_GETBORDERS
0407 1031 TBM_SETRANGEMIN
0407 1031 TTM_RELAYEVENT
0408 1032 CBEM_SETEXSTYLE
0408 1032 PBM_GETPOS
0408 1032 RB_HITTEST
0408 1032 SB_SETMINHEIGHT
0408 1032 TBM_SETRANGEMAX
0408 1032 TTM_GETTOOLINFOA
0409 1033 CBEM_GETEXSTYLE
0409 1033 CBEM_GETEXTENDEDSTYLE
0409 1033 PBM_SETBARCOLOR
0409 1033 RB_GETRECT
0409 1033 SB_SIMPLE
0409 1033 TB_ISBUTTONENABLED
0409 1033 TBM_CLEARTICS
0409 1033 TTM_SETTOOLINFOA
040a 1034 CBEM_HASEDITCHANGED
040a 1034 RB_INSERTBANDW
040a 1034 SB_GETRECT
040a 1034 TB_ISBUTTONCHECKED
040a 1034 TBM_SETSEL
040a 1034 TTM_HITTESTA
040a 1034 WIZ_QUERYNUMPAGES
040b 1035 CBEM_INSERTITEMW
040b 1035 RB_SETBANDINFOW
040b 1035 SB_SETTEXTW
040b 1035 TB_ISBUTTONPRESSED
040b 1035 TBM_SETSELSTART
040b 1035 TTM_GETTEXTA
040b 1035 WIZ_NEXT
040c 1036 CBEM_SETITEMW
040c 1036 RB_GETBANDCOUNT
040c 1036 SB_GETTEXTLENGTHW
040c 1036 TB_ISBUTTONHIDDEN
040c 1036 TBM_SETSELEND
040c 1036 TTM_UPDATETIPTEXTA
040c 1036 WIZ_PREV
040d 1037 CBEM_GETITEMW
040d 1037 RB_GETROWCOUNT
040d 1037 SB_GETTEXTW
040d 1037 TB_ISBUTTONINDETERMINATE
040d 1037 TTM_GETTOOLCOUNT
040e 1038 CBEM_SETEXTENDEDSTYLE
040e 1038 RB_GETROWHEIGHT
040e 1038 SB_ISSIMPLE
040e 1038 TB_ISBUTTONHIGHLIGHTED
040e 1038 TBM_GETPTICS
040e 1038 TTM_ENUMTOOLSA
040f 1039 SB_SETICON
040f 1039 TBM_GETTICPOS
040f 1039 TTM_GETCURRENTTOOLA
0410 1040 RB_IDTOINDEX
0410 1040 SB_SETTIPTEXTA
0410 1040 TBM_GETNUMTICS
0410 1040 TTM_WINDOWFROMPOINT
0411 1041 RB_GETTOOLTIPS
0411 1041 SB_SETTIPTEXTW
0411 1041 TBM_GETSELSTART
0411 1041 TB_SETSTATE
0411 1041 TTM_TRACKACTIVATE
0412 1042 RB_SETTOOLTIPS
0412 1042 SB_GETTIPTEXTA
0412 1042 TB_GETSTATE
0412 1042 TBM_GETSELEND
0412 1042 TTM_TRACKPOSITION
0413 1043 RB_SETBKCOLOR
0413 1043 SB_GETTIPTEXTW
0413 1043 TB_ADDBITMAP
0413 1043 TBM_CLEARSEL
0413 1043 TTM_SETTIPBKCOLOR
0414 1044 RB_GETBKCOLOR
0414 1044 SB_GETICON
0414 1044 TB_ADDBUTTONSA
0414 1044 TBM_SETTICFREQ
0414 1044 TTM_SETTIPTEXTCOLOR
0415 1045 RB_SETTEXTCOLOR
0415 1045 TB_INSERTBUTTONA
0415 1045 TBM_SETPAGESIZE
avatar
NguyễnMinhHoàng45(HLT3)

Tổng số bài gửi : 44
Join date : 17/02/2012
Age : 32
Đến từ : Viet Nam

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

Về Đầu Trang Go down

List of Window Message (tt)

Bài gửi  NguyễnMinhHoàng45(HLT3) on 7/4/2014, 11:50

Hex Decimal Symbolic
0415 1045 TTM_GETDELAYTIME
0416 1046 RB_GETTEXTCOLOR
0416 1046 TB_DELETEBUTTON
0416 1046 TBM_GETPAGESIZE
0416 1046 TTM_GETTIPBKCOLOR
0417 1047 RB_SIZETORECT
0417 1047 TB_GETBUTTON
0417 1047 TBM_SETLINESIZE
0417 1047 TTM_GETTIPTEXTCOLOR
0418 1048 RB_BEGINDRAG
0418 1048 TB_BUTTONCOUNT
0418 1048 TBM_GETLINESIZE
0418 1048 TTM_SETMAXTIPWIDTH
0419 1049 RB_ENDDRAG
0419 1049 TB_COMMANDTOINDEX
0419 1049 TBM_GETTHUMBRECT
0419 1049 TTM_GETMAXTIPWIDTH
041a 1050 RB_DRAGMOVE
041a 1050 TBM_GETCHANNELRECT
041a 1050 TB_SAVERESTOREA
041a 1050 TTM_SETMARGIN
041b 1051 RB_GETBARHEIGHT
041b 1051 TB_CUSTOMIZE
041b 1051 TBM_SETTHUMBLENGTH
041b 1051 TTM_GETMARGIN
041c 1052 RB_GETBANDINFOW
041c 1052 TB_ADDSTRINGA
041c 1052 TBM_GETTHUMBLENGTH
041c 1052 TTM_POP
041d 1053 RB_GETBANDINFOA
041d 1053 TB_GETITEMRECT
041d 1053 TBM_SETTOOLTIPS
041d 1053 TTM_UPDATE
041e 1054 RB_MINIMIZEBAND
041e 1054 TB_BUTTONSTRUCTSIZE
041e 1054 TBM_GETTOOLTIPS
041e 1054 TTM_GETBUBBLESIZE
041f 1055 RB_MAXIMIZEBAND
041f 1055 TBM_SETTIPSIDE
041f 1055 TB_SETBUTTONSIZE
041f 1055 TTM_ADJUSTRECT
0420 1056 TBM_SETBUDDY
0420 1056 TB_SETBITMAPSIZE
0420 1056 TTM_SETTITLEA
0421 1057 MSG_FTS_JUMP_VA
0421 1057 TB_AUTOSIZE
0421 1057 TBM_GETBUDDY
0421 1057 TTM_SETTITLEW
0422 1058 RB_GETBANDBORDERS
0423 1059 MSG_FTS_JUMP_QWORD
0423 1059 RB_SHOWBAND
0423 1059 TB_GETTOOLTIPS
0424 1060 MSG_REINDEX_REQUEST
0424 1060 TB_SETTOOLTIPS
0425 1061 MSG_FTS_WHERE_IS_IT
0425 1061 RB_SETPALETTE
0425 1061 TB_SETPARENT
0426 1062 RB_GETPALETTE
0427 1063 RB_MOVEBAND
0427 1063 TB_SETROWS
0428 1064 TB_GETROWS
0429 1065 TB_GETBITMAPFLAGS
042a 1066 TB_SETCMDID
042b 1067 RB_PUSHCHEVRON
042b 1067 TB_CHANGEBITMAP
042c 1068 TB_GETBITMAP
042d 1069 MSG_GET_DEFFONT
042d 1069 TB_GETBUTTONTEXTA
042e 1070 TB_REPLACEBITMAP
042f 1071 TB_SETINDENT
0430 1072 TB_SETIMAGELIST
0431 1073 TB_GETIMAGELIST
0432 1074 TB_LOADIMAGES
0432 1074 TTM_ADDTOOLW
0433 1075 TB_GETRECT
0433 1075 TTM_DELTOOLW
0434 1076 TB_SETHOTIMAGELIST
0434 1076 TTM_NEWTOOLRECTW
0435 1077 TB_GETHOTIMAGELIST
0435 1077 TTM_GETTOOLINFOW
0436 1078 TB_SETDISABLEDIMAGELIST
0436 1078 TTM_SETTOOLINFOW
0437 1079 TB_GETDISABLEDIMAGELIST
0437 1079 TTM_HITTESTW
0438 1080 TB_SETSTYLE
0438 1080 TTM_GETTEXTW
0439 1081 TB_GETSTYLE
0439 1081 TTM_UPDATETIPTEXTW
043a 1082 TB_GETBUTTONSIZE
043a 1082 TTM_ENUMTOOLSW
043b 1083 TB_SETBUTTONWIDTH
043b 1083 TTM_GETCURRENTTOOLW
043c 1084 TB_SETMAXTEXTROWS
043d 1085 TB_GETTEXTROWS
043e 1086 TB_GETOBJECT
043f 1087 TB_GETBUTTONINFOW
0440 1088 TB_SETBUTTONINFOW
0441 1089 TB_GETBUTTONINFOA
0442 1090 TB_SETBUTTONINFOA
0443 1091 TB_INSERTBUTTONW
0444 1092 TB_ADDBUTTONSW
0445 1093 TB_HITTEST
0446 1094 TB_SETDRAWTEXTFLAGS
0447 1095 TB_GETHOTITEM
0448 1096 TB_SETHOTITEM
0449 1097 TB_SETANCHORHIGHLIGHT
044a 1098 TB_GETANCHORHIGHLIGHT
044b 1099 TB_GETBUTTONTEXTW
044c 1100 TB_SAVERESTOREW
044d 1101 TB_ADDSTRINGW
044e 1102 TB_MAPACCELERATORA
044f 1103 TB_GETINSERTMARK
0450 1104 TB_SETINSERTMARK
0451 1105 TB_INSERTMARKHITTEST
0452 1106 TB_MOVEBUTTON
0453 1107 TB_GETMAXSIZE
0454 1108 TB_SETEXTENDEDSTYLE
0455 1109 TB_GETEXTENDEDSTYLE
0456 1110 TB_GETPADDING
0457 1111 TB_SETPADDING
0458 1112 TB_SETINSERTMARKCOLOR
0459 1113 TB_GETINSERTMARKCOLOR
045a 1114 TB_MAPACCELERATORW
045b 1115 TB_GETSTRINGW
045c 1116 TB_GETSTRINGA
0463 1123 TAPI_REPLY
0464 1124 ACM_OPENA
0464 1124 BFFM_SETSTATUSTEXTA
0464 1124 CDM_FIRST
0464 1124 CDM_GETSPEC
0464 1124 IPM_CLEARADDRESS
0464 1124 WM_CAP_UNICODE_START
0465 1125 ACM_PLAY
0465 1125 BFFM_ENABLEOK
0465 1125 CDM_GETFILEPATH
0465 1125 IPM_SETADDRESS
0465 1125 PSM_SETCURSEL
0465 1125 UDM_SETRANGE
0465 1125 WM_CHOOSEFONT_SETLOGFONT
0466 1126 ACM_STOP
0466 1126 BFFM_SETSELECTIONA
0466 1126 CDM_GETFOLDERPATH
0466 1126 IPM_GETADDRESS
0466 1126 PSM_REMOVEPAGE
0466 1126 UDM_GETRANGE
0466 1126 WM_CAP_SET_CALLBACK_ERRORW
0466 1126 WM_CHOOSEFONT_SETFLAGS
0467 1127 ACM_OPENW
0467 1127 BFFM_SETSELECTIONW
0467 1127 CDM_GETFOLDERIDLIST
0467 1127 IPM_SETRANGE
0467 1127 PSM_ADDPAGE
0467 1127 UDM_SETPOS
0467 1127 WM_CAP_SET_CALLBACK_STATUSW
0468 1128 BFFM_SETSTATUSTEXTW
0468 1128 CDM_SETCONTROLTEXT
0468 1128 IPM_SETFOCUS
0468 1128 PSM_CHANGED
0468 1128 UDM_GETPOS
0469 1129 CDM_HIDECONTROL
0469 1129 IPM_ISBLANK
0469 1129 PSM_RESTARTWINDOWS
0469 1129 UDM_SETBUDDY
046a 1130 CDM_SETDEFEXT
046a 1130 PSM_REBOOTSYSTEM
046a 1130 UDM_GETBUDDY
046b 1131 PSM_CANCELTOCLOSE
046b 1131 UDM_SETACCEL
046c 1132 EM_CONVPOSITION
046c 1132 PSM_QUERYSIBLINGS
046c 1132 UDM_GETACCEL
046d 1133 MCIWNDM_GETZOOM
046d 1133 PSM_UNCHANGED
046d 1133 UDM_SETBASE
046e 1134 PSM_APPLY
046e 1134 UDM_GETBASE
046f 1135 PSM_SETTITLEA
046f 1135 UDM_SETRANGE32
0470 1136 PSM_SETWIZBUTTONS
0470 1136 UDM_GETRANGE32
0470 1136 WM_CAP_DRIVER_GET_NAMEW
0471 1137 PSM_PRESSBUTTON
0471 1137 UDM_SETPOS32
0471 1137 WM_CAP_DRIVER_GET_VERSIONW
0472 1138 PSM_SETCURSELID
0472 1138 UDM_GETPOS32
0473 1139 PSM_SETFINISHTEXTA
0474 1140 PSM_GETTABCONTROL


Được sửa bởi NguyễnMinhHoàng45(HLT3) ngày 7/4/2014, 11:51; sửa lần 1.
avatar
NguyễnMinhHoàng45(HLT3)

Tổng số bài gửi : 44
Join date : 17/02/2012
Age : 32
Đến từ : Viet Nam

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

Về Đầu Trang Go down

List of Window Message (tt)

Bài gửi  NguyễnMinhHoàng45(HLT3) on 7/4/2014, 11:51

Hex Decimal Symbolic
0475 1141 PSM_ISDIALOGMESSAGE
0476 1142 MCIWNDM_REALIZE
0476 1142 PSM_GETCURRENTPAGEHWND
0477 1143 MCIWNDM_SETTIMEFORMATA
0477 1143 PSM_INSERTPAGE
0478 1144 MCIWNDM_GETTIMEFORMATA
0478 1144 PSM_SETTITLEW
0478 1144 WM_CAP_FILE_SET_CAPTURE_FILEW
0479 1145 MCIWNDM_VALIDATEMEDIA
0479 1145 PSM_SETFINISHTEXTW
0479 1145 WM_CAP_FILE_GET_CAPTURE_FILEW
047b 1147 MCIWNDM_PLAYTO
047b 1147 WM_CAP_FILE_SAVEASW
047c 1148 MCIWNDM_GETFILENAMEA
047d 1149 MCIWNDM_GETDEVICEA
047d 1149 PSM_SETHEADERTITLEA
047d 1149 WM_CAP_FILE_SAVEDIBW
047e 1150 MCIWNDM_GETPALETTE
047e 1150 PSM_SETHEADERTITLEW
047f 1151 MCIWNDM_SETPALETTE
047f 1151 PSM_SETHEADERSUBTITLEA
0480 1152 MCIWNDM_GETERRORA
0480 1152 PSM_SETHEADERSUBTITLEW
0481 1153 PSM_HWNDTOINDEX
0482 1154 PSM_INDEXTOHWND
0483 1155 MCIWNDM_SETINACTIVETIMER
0483 1155 PSM_PAGETOINDEX
0484 1156 PSM_INDEXTOPAGE
0485 1157 DL_BEGINDRAG
0485 1157 MCIWNDM_GETINACTIVETIMER
0485 1157 PSM_IDTOINDEX
0486 1158 DL_DRAGGING
0486 1158 PSM_INDEXTOID
0487 1159 DL_DROPPED
0487 1159 PSM_GETRESULT
0488 1160 DL_CANCELDRAG
0488 1160 PSM_RECALCPAGESIZES
048c 1164 MCIWNDM_GET_SOURCE
048d 1165 MCIWNDM_PUT_SOURCE
048e 1166 MCIWNDM_GET_DEST
048f 1167 MCIWNDM_PUT_DEST
0490 1168 MCIWNDM_CAN_PLAY
0491 1169 MCIWNDM_CAN_WINDOW
0492 1170 MCIWNDM_CAN_RECORD
0493 1171 MCIWNDM_CAN_SAVE
0494 1172 MCIWNDM_CAN_EJECT
0495 1173 MCIWNDM_CAN_CONFIG
0496 1174 IE_GETINK
0496 1174 IE_MSGFIRST
0496 1174 MCIWNDM_PALETTEKICK
0497 1175 IE_SETINK
0498 1176 IE_GETPENTIP
0499 1177 IE_SETPENTIP
049a 1178 IE_GETERASERTIP
049b 1179 IE_SETERASERTIP
049c 1180 IE_GETBKGND
049d 1181 IE_SETBKGND
049e 1182 IE_GETGRIDORIGIN
049f 1183 IE_SETGRIDORIGIN
04a0 1184 IE_GETGRIDPEN
04a1 1185 IE_SETGRIDPEN
04a2 1186 IE_GETGRIDSIZE
04a3 1187 IE_SETGRIDSIZE
04a4 1188 IE_GETMODE
04a5 1189 IE_SETMODE
04a6 1190 IE_GETINKRECT
04a6 1190 WM_CAP_SET_MCI_DEVICEW
04a7 1191 WM_CAP_GET_MCI_DEVICEW
04b4 1204 WM_CAP_PAL_OPENW
04b5 1205 WM_CAP_PAL_SAVEW
04b8 1208 IE_GETAPPDATA
04b9 1209 IE_SETAPPDATA
04ba 1210 IE_GETDRAWOPTS
04bb 1211 IE_SETDRAWOPTS
04bc 1212 IE_GETFORMAT
04bd 1213 IE_SETFORMAT
04be 1214 IE_GETINKINPUT
04bf 1215 IE_SETINKINPUT
04c0 1216 IE_GETNOTIFY
04c1 1217 IE_SETNOTIFY
04c2 1218 IE_GETRECOG
04c3 1219 IE_SETRECOG
04c4 1220 IE_GETSECURITY
04c5 1221 IE_SETSECURITY
04c6 1222 IE_GETSEL
04c7 1223 IE_SETSEL
04c8 1224 CDM_LAST
04c8 1224 IE_DOCOMMAND
04c8 1224 MCIWNDM_NOTIFYMODE
04c9 1225 IE_GETCOMMAND
04ca 1226 IE_GETCOUNT
04cb 1227 IE_GETGESTURE
04cb 1227 MCIWNDM_NOTIFYMEDIA
04cc 1228 IE_GETMENU
04cd 1229 IE_GETPAINTDC
04cd 1229 MCIWNDM_NOTIFYERROR
04ce 1230 IE_GETPDEVENT
04cf 1231 IE_GETSELCOUNT
04d0 1232 IE_GETSELITEMS
04d1 1233 IE_GETSTYLE
04db 1243 MCIWNDM_SETTIMEFORMATW
04dc 1244 EM_OUTLINE
04dc 1244 MCIWNDM_GETTIMEFORMATW
04dd 1245 EM_GETSCROLLPOS
04de 1246 EM_SETSCROLLPOS
04df 1247 EM_SETFONTSIZE
04e0 1248 MCIWNDM_GETFILENAMEW
04e1 1249 MCIWNDM_GETDEVICEW
04e4 1252 MCIWNDM_GETERRORW
0600 1536 FM_GETFOCUS
0601 1537 FM_GETDRIVEINFOA
0602 1538 FM_GETSELCOUNT
0603 1539 FM_GETSELCOUNTLFN
0604 1540 FM_GETFILESELA
0605 1541 FM_GETFILESELLFNA
0606 1542 FM_REFRESH_WINDOWS
0607 1543 FM_RELOAD_EXTENSIONS
0611 1553 FM_GETDRIVEINFOW
0614 1556 FM_GETFILESELW
0615 1557 FM_GETFILESELLFNW
0659 1625 WLX_WM_SAS
07e8 2024 SM_GETSELCOUNT
07e8 2024 UM_GETSELCOUNT
07e8 2024 WM_CPL_LAUNCH
07e9 2025 SM_GETSERVERSELA
07e9 2025 UM_GETUSERSELA
07e9 2025 WM_CPL_LAUNCHED
07ea 2026 SM_GETSERVERSELW
07ea 2026 UM_GETUSERSELW
07eb 2027 SM_GETCURFOCUSA
07eb 2027 UM_GETGROUPSELA
07ec 2028 SM_GETCURFOCUSW
07ec 2028 UM_GETGROUPSELW
07ed 2029 SM_GETOPTIONS
07ed 2029 UM_GETCURFOCUSA
07ee 2030 UM_GETCURFOCUSW
07ef 2031 UM_GETOPTIONS
07f0 2032 UM_GETOPTIONS2
2000 8192 OCMBASE
2019 8217 OCM_CTLCOLOR
202b 8235 OCM_DRAWITEM
202c 8236 OCM_MEASUREITEM
202d 8237 OCM_DELETEITEM
202e 8238 OCM_VKEYTOITEM
202f 8239 OCM_CHARTOITEM
2039 8249 OCM_COMPAREITEM
204e 8270 OCM_NOTIFY
2111 8465 OCM_COMMAND
2114 8468 OCM_HSCROLL
2115 8469 OCM_VSCROLL
2132 8498 OCM_CTLCOLORMSGBOX
2133 8499 OCM_CTLCOLOREDIT
2134 8500 OCM_CTLCOLORLISTBOX
2135 8501 OCM_CTLCOLORBTN
2136 8502 OCM_CTLCOLORDLG
2137 8503 OCM_CTLCOLORSCROLLBAR
2138 8504 OCM_CTLCOLORSTATIC
2210 8720 OCM_PARENTNOTIFY
8000 32768 WM_APP
cccd 52429 WM_RASDIALEVENT
avatar
NguyễnMinhHoàng45(HLT3)

Tổng số bài gửi : 44
Join date : 17/02/2012
Age : 32
Đến từ : Viet Nam

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

Về Đầu Trang Go down

Re: Điều khiển VnVoice

Bài gửi  NguyenVietThong(HLT3) on 9/4/2014, 12:10

Thầy ơi có phải Vn Voice này cũng được ứng dụng trên Google Translate đúng không Thầy, nhưng trên Google Translate giọng đọc không hay bằng lúc Thầy demo

Admin:
- Google Translate dùng công nghệ khác ! Không liên quan gì tới VnVoice !
- Nó phát âm kém hơn, nhưng Qua web và Khá nhanh, tuy chỉ được văn bản ngắn thôi !

NguyenVietThong(HLT3)

Tổng số bài gửi : 6
Join date : 09/03/2014

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

Về Đầu Trang Go down

Ngoài VNVoice còn có những phần mềm nào trên thị trường?Nêu ưu và khuyết điểm?

Bài gửi  NguyenVietLong08(HLT3) on 12/4/2014, 12:38

Trả Lời:

Vspeech: phần mềm nhận dạng giọng nói tiếng Việt trên máy tính: do nhóm BK02 của Đại học Bách khoa TP.HCM chế tạo thành công vào cuối năm 2004.
Ưu điểm:
Ngoài việc diều khiển máy tính bằng tiếng Việt, phần mềm này cũng là công cụ nhận dạng và điều khiển máy tính bằng tiếng Anh rất tốt.
Một trong những độc đáo và tiện dụng nhất là VSpeech được tích hợp với Internet Explorer.
Nhược điểm:
Vspeech chưa đủ khả năng điều khiển hoàn toàn một máy tính nhưng ít ra đây cũng là một công cụ giải trí tuyệt hảo, tránh sự nhàm chán cho những người phải làm việc với máy tính thường xuyên. Qua thử nghiệm dường như VSpeech “xung khắc” với các chương trình English Study (4.0, 4.1) nên nó tự động báo lỗi và thoát ra khi kích hoạt English Study hoạt động.
VNSpeech phần mềm giúp máy tính nói tiếng Việt
Ưu điểm:
Ưu điểm của phương pháp là dễ triển khai, tiếng nói tạo ra chính là tiếng người .
Tổng hợp được tiếng Việt bằng các luật từ các thành phần đặc trưng của ngữ âm tiếng Việt, tự động đọc không hạn chế văn bản tiếng Việt.
Là một công cụ mới để nghiên cứu ngữ âm tiếng Việt - Phân tích bằng Tổng hợp. Vnspeech thực hiện phân tích và chuẩn hóa văn bản tiếng Việt, đọc khá rõ tất cả các âm tiết tiếng Việt, thể hiện hợp lý ngữ điệu khi đọc các loại câu khác nhau, có thể điều khiển không hạn chế tốc độ đọc, cao độ của giọng nói để thành các giọng nói khác nhau.
Kích thước toàn bộ của Vnspeech rất nhỏ, không cần file dữ liệu riêng, toàn bộ đều nằm trên file thực thi (chương trình minh hoạ chỉ 350KB), thuận tiện để tích hợp vào mọi loại ứng dụng trên các hệ điều hành, phần cứng khác nhau, hoặc các thiết bị có tài nguyên hạn chế (như thiết bị cầm tay, di động,...).
Vnspeech xử lý văn bản tiếng Việt đầu vào thuộc bảng mã TCVN 5712 và Unicode dựng sẵn, tạo dãy tín hiệu tiếng nói đầu ra mã hóa theo chuẩn PCM (16 bit, mono, có thể thay đổi tần số lấy mẫu tùy ý), có thể ghi lên đĩa thành các file theo định dạng WAV hoặc phát trực tiếp ra loa.
Nhược điểm:
Thêm giọng nói là công việc tốn kém và các tham số đặc trưng chỉ có thể điều khiển hạn chế, điều này dễ dẫn đến méo tiếng và sẽ rất không tự nhiên khi ghép thành đoạn dài ứng với cả câu.
DovisocoTextAloRec phần mềm đọc tiếng Việt, chuyển sang mp3...
Ưu điểm:
Đây là phần mềm được phát triển từ dovisocoTextAloud với độ tuỳ biến cao.

Tự động nhận diện mã tiếng Việt (Unicode, VNI, TCVN-3 ABC) để chọn giọng nói cho thích hợp.

Hỗ trợ từ điển riêng cho mỗi giọng đọc
Khắc phục được lỗi ngắt dấu câu cho gói giọng nói SaoMai.

Chức năng Text to mp3 cho phép chuyển sang định dạng mp3 với nhiều tuỳ chọn.

Chức năng After reading cho phép tắt, ngủ máy tính sau khi vừa đọc xong văn bản trong bộ nhớ.

Tăng giảm tốc độ, âm lượng cho giọng đọc...

NguyenVietLong08(HLT3)

Tổng số bài gửi : 20
Join date : 30/03/2014

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

Về Đầu Trang Go down

Giải thích Code của Vnvoice.

Bài gửi  KhanhChan on 23/4/2014, 12:03

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)
}

KhanhChan

Tổng số bài gửi : 12
Join date : 20/03/2014

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

Về Đầu Trang Go down

Re: Đ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