Khắc phục [QR-Code] sai do bộ gõ tiếng Việt ?

Liên hệ QC

Hoàng Nhật Phương

Thành viên gắn bó
Tham gia
5/11/15
Bài viết
1,894
Được thích
1,214
Xin chào các bạn.
Có thể sử dụng code để điều khiển ứng dụng Unikey được không ạ?
Ví dụ: Unikey đang ở chế độ gõ tiếng Việt, sau khi chạy code chuyển sang chế độ gõ tiếng Anh. Hoặc Unikey đang mở thì đóng lại ạ.
**********************************
Bài viết của tôi đã được giải quyết,hiện tôi đã đưa vào áp dụng kết quả đã OK đối với tôi.

Trong chủ đề có nhiều hướng giải quyết, nhưng tôi xin phép được trích dẫn link các bài viết tiêu biểu trong chủ đề để các bạn tiện theo dõi:
1.https://www.giaiphapexcel.com/diendan/threads/khắc-phục-qr-code-sai-do-bộ-gõ-tiếng-việt.140358/#post-902152
2.https://www.giaiphapexcel.com/diendan/threads/khắc-phục-qr-code-sai-do-bộ-gõ-tiếng-việt.140358/page-3#post-902364
3.https://www.giaiphapexcel.com/diendan/threads/khắc-phục-qr-code-sai-do-bộ-gõ-tiếng-việt.140358/page-7#post-902900

Xin trân trọng cảm ơn tất cả mọi người đã nhiệt tình giúp đỡ và đóng góp ý kiến, đặc biệt với sự giúp đỡ tận tình của các thành viên: Bác @batman1 (@siwtom ) , Anh @huuthang_bd , Anh @Nguyễn Duy Tuân và Bạn @HeSanbi

Xin trân trọng cảm ơn BQT đã tạo ra và đã mang đến cho tôi và mọi người một nơi thật tuyệt vời, một nơi để mọi người cùng nhau có thể trao đổi/học hỏi và cùng nhau thành công trong sự nghiệp.
 
Lần chỉnh sửa cuối:
Upvote 0
Vừa đi làm về thì mọi người đã làm xong rồi.
Tuân đã làm thì tin tưởng là chuẩn rồi. Tôi cũng không có các phiên bản Windows khác để test. Nhưng Tuân nên làm thêm để sao không chỉ cho cô OT dùng mà cho cả những người về sau muốn thao tác với các icon khác, ứng dụng khác.

Tức đại loại thế này. Sửa Vietnamese thành Sub chẳng hạn, vd. ListIcons, không có AutoClickUnikey và những cái khác. ListIcons trong vòng lặp For k = 0 To nCount - 1 sẽ nhập các dữ liệu vào mảng TrayInfo(...) As TRAYITEM, mà
Mã:
Private Type TRAYITEM
    hwnd As ...
        uID As ...
        uCallbackMessage As ...
    filename As ...
    sTip As ...
End Type
hwnd, uID, uCallbackMessage thì sao chép từ TRAYDATA(XP) sang. Chỉ còn filename nữa thôi.

Tiếp đó là code để phục vụ cô OT. Vd.

Mã:
Function Vietnamese(Optional ByVal TurnOff As Boolean = True) As Boolean
Dim k As Long
    ListIcons
    For k = 1 To UBound(TrayInfo)
        If TrayInfo(k).filename = "UnikeyNT.exe" Then ' hoặc kiểm tra sTip
            ' làm các việc của cô OT
            Exit For
        End If
    Next k
End Function

Làm thế để nếu ai thích vọc những icon khác, ứng dụng khác thì người ta chỉ việc viết sub của người ta và thay
Mã:
If TrayInfo(k).filename = "UnikeyNT.exe" Then
bằng
Mã:
If TrayInfo(k).filename = "xyz.exe" Then ' hoặc kiểm tra sTip

Ngoài ra người ta có thể không muốn nhấn chuột mà muốn làm các việc khác với icon thì người ta chỉ viết sub thích hợp thôi chứ code chính ListIcons không phải sửa. Vọc với icon thì thoải mái vì có hwnd, uID, uCallbackMessage trong TRAYITEM rồi. Thậm chí có thể gọi Shell_NotifyIcon(NIM_DELETE ... để xóa icon. Tất nhiên xóa icon trên tray thôi chứ ứng dụng vẫn chay.

Cảm ơn anh đã tín nhiệm. Để viết một class tổng thể như vậy cũng có thể được nhưng e chưa biết tính ứng dụng ở đâu trong phạm vi Excel ? Có thể lúc nào đó tạo chủ đề mới với ý tưởng ở topic khác rồi mấy thành viên tâm huyết cùng đóng góp sẽ tập trung hơn.
 
Upvote 0
Cảm ơn anh đã tín nhiệm. Để viết một class tổng thể như vậy cũng có thể được nhưng e chưa biết tính ứng dụng ở đâu trong phạm vi Excel ? Có thể lúc nào đó tạo chủ đề mới với ý tưởng ở topic khác rồi mấy thành viên tâm huyết cùng đóng góp sẽ tập trung hơn.
Hi anh, Cho em hỏi là nếu quét mã vạch như vậy thì có cách nào hiển thị tất cả các thông tin trên mã vạch đó không?
 
Upvote 0
Hi anh, Cho em hỏi là nếu quét mã vạch như vậy thì có cách nào hiển thị tất cả các thông tin trên mã vạch đó không?

Hiển thị hết mà. Cấu tạo của mã vạch do bộ phận thiết kế và đặc thù sản phẩm bào người ta bao gồn nhiều thông tin như mã hàng, trọng lượng, chiều cao, chiều rộng,.... nó được trộn thành bộ mã. CÓ nơi người ta dùng dấu "-" để phân biệt nhóm mã có nơi quy ước số ký tự trong dải ký tự. Vậy nên nếu bạn muốn bóc tách thông tin từ mã vạch thì phải đọc hiểu được nhà phân phối họ đang cấu tạo gì, từ đó dùng thuật toán tách chuỗi để nhặt ra các loại thông tin. Bạn có thể xem một phần bài giảng lập trình VBA của mình về giải thuật tách chuỗi tại đây

 
Upvote 0
Thôi tôi đành lưu file về định dạng XLSM để các phần mềm diệt virus nó có khả năng kiểm tra đc kỹ nội dung trong file để nó có kết luận không ngu ngơ :D . File trước tôi lưu dạng "XLS" để các bạn có thể mở đc cả trên Excel 2003.

Xin chào Anh @Nguyễn Duy Tuân,
Hôm nay OT tải tập tin xlsm về thì không thấy thông báo có virut nữa , OT đã test thử kết quả đã xử lý được vấn đề Unikey.
Nhưng trường hợp bật CapsLock thì QR_Code lấy thông tin sai ạ, anh Tuân bổ sung thêm trường hợp xử lý vấn đề CapsLock giống anh Hữu Thắng nữa sẽ an toàn hơn ạ.
Cảm ơn anh đã cho OT thêm một cách để tham khảo ạ.
 
Upvote 0
Xin góp vui với các cụ một cách tiếp cận hơi củ chuối nhưng tôi nghĩ cũng có thể làm được.
Sử dụng Registry của Unikey để thiết lập chế độ gõ Việt hay Anh.
Unkey nhớ trạng thái ở registry
[HKEY_CURRENT_USER\Software\PkLong\UniKey]
Với Key là Vietnamese theo 2 trạng thái
"Vietnamese"=dword:00000001 ==> tiếng Việt và "Vietnamese"=dword:00000000 ==> tiếng Anh.
Vậy để muốn thiết lập unikey ở chế độ gõ nào ta có thể tiếp cận như sau:
1. Giết chương trình Unikey đang chạy - không hay lắm nhưng cũng đành
2. Sửa cái Registry Vietnamese thành 0 >> đó về tiếng anh
3. Khởi động lại Unikey với Shell hoặc một file bat!
Cách này hơi củ chuối nhưng cũng có thể áp dụng được.
Code VBA cho tiếp cận này cũng không hoàn toàn quá khó với đa số các cụ ở đây!
Xin chia sẻ với các cụ!
 
Lần chỉnh sửa cuối:
Upvote 0
Xin góp vui với các cụ một cách tiếp cận hơi củ chuối nhưng tôi nghĩ cũng có thể làm được.
Sử dụng Registry của Unikey để thiết lập chế độ gõ Việt hay Anh.
Unkey nhớ trạng thái ở registry
[HKEY_CURRENT_USER\Software\PkLong\UniKey]
Với Key là Vietnamese theo 2 trạng thái
"Vietnamese"=dword:00000001 ==> tiếng Việt và "Vietnamese"=dword:00000000 ==> tiếng Anh.
Vậy để thiết lập unikey ở chế độ nào thì:
1. Kill Unikey task
2.Sửa cái registry đó về tiếng anh
3. khởi động lại Unikey với Shell hoặc một file bat!
Cách này hơi củ chuối nhưng cũng có thể áp dụng được.
Xin chia sẻ với các cụ!

Cháu cảm ơn Bác @paulsteigel đã tham gia ạ.
Xin chia sẻ với các cụ!
:D
 
Upvote 0
Xin chia sẻ một cách tiếp cận hơi củ chuối nhưng tôi nghĩ cũng có thể làm được.
Sử dụng Registry của Unikey để thiết lập chế độ gõ Việt hay Anh.
Unkey nhớ trạng thái ở registry
[HKEY_CURRENT_USER\Software\PkLong\UniKey]
Với Key là Vietnamese theo 2 trạng thái
"Vietnamese"=dword:00000001 ==> tiếng Việt và "Vietnamese"=dword:00000000 ==> tiếng Anh.
Vậy để thiết lập unikey ở chế độ nào thì:
1. Kill Unikey task
2.Sửa cái registry đó về tiếng anh
3. khởi động lại Unikey với Shell hoặc một file bat!
Cách này hơi củ chuối nhưng cũng có thể áp dụng được.
Xin chia sẻ với các cụ!
Bác đã nhầm to rồi . Đó là giao diện Việt - Anh của Unikey chứ không phải bật tắt chế độ gõ. Bác nên kiểm tra độ chính xác trước khi đăng
 
Upvote 0
Bác đã nhầm to rồi . Đó là giao diện Việt - Anh của Unikey chứ không phải bật tắt chế độ gõ. Bác nên kiểm tra độ chính xác trước khi đăng
Bạn thử kiểm tra chút đi nào. Bật tiếng Việt của Unikey, thoát Unkey và vào key này kiểm tra
[HKEY_CURRENT_USER\Software\PkLong\UniKey] và kiểm tra "Vietnamese"=dword:00000001
bạn sẽ thấy nó là 1 và sửa nó thành 0 rồi bật unikey lên bạn sẽ thấy nó là E
"VietGUI"=dword:00000001 sẽ là giao diện đấy

Toàn bộ registry của Unkey quản lý là đây ạ
Windows Registry Editor Version 5.00

"ShowDlg"=dword:00000000
"Vietnamese"=dword:00000001
"CodeTable"=dword:00000000
"SwitchKey"=dword:00000001
"InputMethod"=dword:00000000
"FreeMarking"=dword:00000001
"ModernStyle"=dword:00000000
"VietGUI"=dword:00000001
"InConvCharset"=dword:0000000b
"OutConvCharset"=dword:00000000
"ClipboardConvert"=dword:00000001
"MacroEnabled"=dword:00000000
"AutoNonVnRestore"=dword:00000001
"UseUnicodeClipboard"=dword:00000000
"AlwaysMacro"=dword:00000000
"UseIME"=dword:00000000
"SpellCheckEnabled"=dword:00000001
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn thử kiểm tra chút đi nào. Bật tiếng Việt của Unikey rồi thoát nó vào key này
[HKEY_CURRENT_USER\Software\PkLong\UniKey] và kiểm tra "Vietnamese"=dword:00000001
bạn sẽ thấy nó là 1 và sửa nó thành 0 rồi bật unikey lên bạn sẽ thấy nó là E
"VietGUI"=dword:00000001 sẽ là giao diện đấy
À ý bác nói thoát khỏi rồi sửa Registry khởi động lại Unikey. Vậy cũng sẽ rối
 
Upvote 0
À ý bác nói thoát khỏi rồi sửa Registry khởi động lại Unikey. Vậy cũng sẽ rối
Mình chỉ muốn chia sẻ một cách tiếp cận nhỏ - củ chuối thôi - góp chung vào giải pháp lớn mà anh Tuân, anh Batman, các anh/ chị khác đã chia sẻ!
Hy vọng sẽ giúp các bạn gặp vấn đề có thể xử lý được bài toán của mình.
 
Upvote 0
Xin chào Anh @Nguyễn Duy Tuân,
Hôm nay OT tải tập tin xlsm về thì không thấy thông báo có virut nữa , OT đã test thử kết quả đã xử lý được vấn đề Unikey.
Nhưng trường hợp bật CapsLock thì QR_Code lấy thông tin sai ạ, anh Tuân bổ sung thêm trường hợp xử lý vấn đề CapsLock giống anh Hữu Thắng nữa sẽ an toàn hơn ạ.
Cảm ơn anh đã cho OT thêm một cách để tham khảo ạ.

Vấn đề Caplock không phải khó. Về góc độ chuyên môn tôi khuyên Userform và nay đã có API kiểm soát đc Unikey là tuyệt vời. Việc bẫy và chặn ký tự chưa bao giờ tôi đánh giá là hoàn thiện, chưa kể đến vấn đề tốc độ.
Có lẽ mình dừng tham gia dự án này, coi đó là ví dụ tham khảo với nhiều người cùng học hỏi. Nếu có dự án khác thì hoàn thiện hơn vài điểm nữa.
File tôi gửi lên GPE này là Excel mà mấy pm các bạn nghi virus thì đúng là ngu có ngẫu hứng :) . Không hiểu cơ chế virus của Excel là như thế nào.
 
Upvote 0
Vấn đề Caplock không phải khó. Về góc độ chuyên môn tôi khuyên Userform và nay đã có API kiểm soát đc Unikey là tuyệt vời. Việc bẫy và chặn ký tự chưa bao giờ tôi đánh giá là hoàn thiện, chưa kể đến vấn đề tốc độ.
Có lẽ mình dừng tham gia dự án này, coi đó là ví dụ tham khảo với nhiều người cùng học hỏi. Nếu có dự án khác thì hoàn thiện hơn vài điểm nữa.
File tôi gửi lên GPE này là Excel mà mấy pm các bạn nghi virus thì đúng là ngu có ngẫu hứng :) . Không hiểu cơ chế virus của Excel là như thế nào.
Em thấy WinDefender nó bảo vệ Win theo chế độ nghiêm ngặc. Chuyện dùng Win API vào System thì nó phát hiện và cảnh báo là đúng.
Anh phải thông cảm cho các bạn thôi.
Thời đại này các bạn còn sợ Virus là vì do không chuyên. Đang sử dụng có khi thấy CPU, RAM tăng đột ngột muốn tắt máy tính.
Thì Virus là phải sợ hơn nhiều chứ. Càng sợ càng phụ thuộc phần mềm phát hiện Virus, Trojan. Phát hiện cái là quất đi ngay. Lại yên tâm sử dụng.
Cho nên máy tính các bạn cao lắm cũng chỉ 10 phần mềm. Nếu là máy ở công ty chắc không dám rục rịch cài gì luôn chứ phải. Nhở có gì xảy ra cái là alô mấy anh IT vô. Mấy ảnh nghe bài nhạc Opera xong, lại yên tâm "Chắc mấy ảnh vừa duyệt con Virus lấy tiền chuột đây".

Gặp file Excel của anh đăng mà các bạn cũng sợ. Cái này liên quan đến Tim và Gan, Nên cũng phải cần "phần mềm quét" Tim và Gan luôn.
 
Upvote 0
Thử sử dụng bộ gõ EV key làm rất nhanh. Khi ta sử dụng ứng dụng nào cần quét mã vạch thì cho nó tự sang tiếng Anh E. Còn qua phần mềm khác thì nó tự chuyển sang tiếng Việt V. Để làm vậy ta chỉ cần tích vào ô loại trừ ứng dụng tự động trong phần cài đặt EV key. Mở phần mêm cần gõ tiếng anh rồi bấm cho EV key nó chuyển sang E. Làm vậy tự động lần sau nó tự chuyển qua E cho mình luôn rất sướng...
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom