Thứ Hai, 9 tháng 7, 2012

Hàm chuyển mã tiếng Việt, Msgbox tiếng Việt


Một trong những vấn đề được nhiều bạn quan tâm, đó là LÀM SAO ĐỂ HIỆN THÔNG BÁO TIẾNG VIỆT

Hàm chuyển mã từ TCVN 3 sang UNICODE

Tác giả: BinhOverAC Www.GiaiPhapExcel.com


Function TCVN3toUNICODE(vnstr As String) 
   Dim c As String, i As Integer 
   For i = 1 To Len(vnstr) 
      c = Mid(vnstr, i, 1) 
      Select Case c 
      Case "a": c = ChrW$(97) 
      Case "¸": c = ChrW$(225) 
      Case "µ": c = ChrW$(224) 
      Case "¶": c = ChrW$(7843) 
      Case "·": c = ChrW$(227) 
      Case "¹": c = ChrW$(7841) 
      Case "¨": c = ChrW$(259) 
      Case "¾": c = ChrW$(7855) 
      Case "»": c = ChrW$(7857) 
      Case "¼": c = ChrW$(7859) 
      Case "½": c = ChrW$(7861) 
      Case "Æ": c = ChrW$(7863) 
      Case "©": c = ChrW$(226) 
      Case "Ê": c = ChrW$(7845) 
      Case "Ç": c = ChrW$(7847) 
      Case "È": c = ChrW$(7849) 
      Case "É": c = ChrW$(7851) 
      Case "Ë": c = ChrW$(7853) 
      Case "e": c = ChrW$(101) 
      Case "Ð": c = ChrW$(233) 
      Case "Ì": c = ChrW$(232) 
      Case "Î": c = ChrW$(7867) 
      Case "Ï": c = ChrW$(7869) 
      Case "Ñ": c = ChrW$(7865) 
      Case "ª": c = ChrW$(234) 
      Case "Õ": c = ChrW$(7871) 
      Case "Ò": c = ChrW$(7873) 
      Case "Ó": c = ChrW$(7875) 
      Case "Ô": c = ChrW$(7877) 
      Case "Ö": c = ChrW$(7879) 
      Case "o": c = ChrW$(111) 
      Case "ã": c = ChrW$(243) 
      Case "ß": c = ChrW$(242) 
      Case "á": c = ChrW$(7887) 
      Case "â": c = ChrW$(245) 
      Case "ä": c = ChrW$(7885) 
      Case "«": c = ChrW$(244) 
      Case "è": c = ChrW$(7889) 
      Case "å": c = ChrW$(7891) 
      Case "æ": c = ChrW$(7893) 
      Case "ç": c = ChrW$(7895) 
      Case "é": c = ChrW$(7897) 
      Case "¬": c = ChrW$(417) 
      Case "í": c = ChrW$(7899) 
      Case "ê": c = ChrW$(7901) 
      Case "ë": c = ChrW$(7903) 
      Case "ì": c = ChrW$(7905) 
      Case "î": c = ChrW$(7907) 
      Case "i": c = ChrW$(105) 
      Case "Ý": c = ChrW$(237) 
      Case "×": c = ChrW$(236) 
      Case "Ø": c = ChrW$(7881) 
      Case "Ü": c = ChrW$(297) 
      Case "Þ": c = ChrW$(7883) 
      Case "u": c = ChrW$(117) 
      Case "ó": c = ChrW$(250) 
      Case "ï": c = ChrW$(249) 
      Case "ñ": c = ChrW$(7911) 
      Case "ò": c = ChrW$(361) 
      Case "ô": c = ChrW$(7909) 
      Case "­": c = ChrW$(432) 
      Case "ø": c = ChrW$(7913) 
      Case "õ": c = ChrW$(7915) 
      Case "ö": c = ChrW$(7917) 
      Case "÷": c = ChrW$(7919) 
      Case "ù": c = ChrW$(7921) 
      Case "y": c = ChrW$(121) 
      Case "ý": c = ChrW$(253) 
      Case "ú": c = ChrW$(7923) 
      Case "û": c = ChrW$(7927) 
      Case "ü": c = ChrW$(7929) 
      Case "þ": c = ChrW$(7925) 
      Case "®": c = ChrW$(273) 
      Case "A": c = ChrW$(65) 
      Case "¡": c = ChrW$(258) 
      Case "¢": c = ChrW$(194) 
      Case "E": c = ChrW$(69) 
      Case "£": c = ChrW$(202) 
      Case "O": c = ChrW$(79) 
      Case "¤": c = ChrW$(212) 
      Case "¥": c = ChrW$(416) 
      Case "I": c = ChrW$(73) 
      Case "U": c = ChrW$(85) 
      Case "¦": c = ChrW$(431) 
      Case "Y": c = ChrW$(89) 
      Case "§": c = ChrW$(272) 
      End Select 
      TCVN3toUNICODE = TCVN3toUNICODE + c 
   Next i 
End Function 


Hàm chuyển mã từ VNI sang UNICODE[/code]

Tác giả: BinhOverAC Www.GiaiPhapExcel.com


Function VNItoUNICODE(vnstr As String) 
   Dim c As String, i As Integer 
   Dim db As Boolean 
   For i = 1 To Len(vnstr) 
      db = False 
      If i < Len(vnstr) Then 
         c = Mid(vnstr, i + 1, 1) 
         If c = "ù" Or c = "ø" Or c = "û" Or c = "õ" Or c = "ï" Or c = "ê" Or c = "é" Or c = "è" Or c = "ú" Or c = "ü" Or c = "ë" Or c = "â" Or c = "á" Or c = "à" Or c = "å" Or c = "ã" Or c = "ä" Or c = "Ù" Or c = "Ø" Or c = "Û" Or c = "Õ" Or c = "Ï" Or c = "Ê" Or c = "É" Or c = "È" Or c = "Ú" Or c = "Ü" Or c = "Ë" Or c = "Â" 
      End If 
      If db Then 
         c = Mid(vnstr, i, 2) 
         Select Case c 
         Case "aù": c = ChrW$(225) 
         Case "aø": c = ChrW$(224) 
         Case "aû": c = ChrW$(7843) 
         Case "aõ": c = ChrW$(227) 
         Case "aï": c = ChrW$(7841) 
         Case "aê": c = ChrW$(259) 
         Case "aé": c = ChrW$(7855) 
         Case "aè": c = ChrW$(7857) 
         Case "aú": c = ChrW$(7859) 
         Case "aü": c = ChrW$(7861) 
         Case "aë": c = ChrW$(7863) 
         Case "aâ": c = ChrW$(226) 
         Case "aá": c = ChrW$(7845) 
         Case "aà": c = ChrW$(7847) 
         Case "aå": c = ChrW$(7849) 
         Case "aã": c = ChrW$(7851) 
         Case "aä": c = ChrW$(7853) 
         Case "eù": c = ChrW$(233) 
         Case "eø": c = ChrW$(232) 
         Case "eû": c = ChrW$(7867) 
         Case "eõ": c = ChrW$(7869) 
         Case "eï": c = ChrW$(7865) 
         Case "eâ": c = ChrW$(234) 
         Case "eá": c = ChrW$(7871) 
         Case "eà": c = ChrW$(7873) 
         Case "eå": c = ChrW$(7875) 
         Case "eã": c = ChrW$(7877) 
         Case "eä": c = ChrW$(7879) 
         Case "où": c = ChrW$(243) 
         Case "oø": c = ChrW$(242) 
         Case "oû": c = ChrW$(7887) 
         Case "oõ": c = ChrW$(245) 
         Case "oï": c = ChrW$(7885) 
         Case "oâ": c = ChrW$(244) 
         Case "oá": c = ChrW$(7889) 
         Case "oà": c = ChrW$(7891) 
         Case "oå": c = ChrW$(7893) 
         Case "oã": c = ChrW$(7895) 
         Case "oä": c = ChrW$(7897) 
         Case "ôù": c = ChrW$(7899) 
         Case "ôø": c = ChrW$(7901) 
         Case "ôû": c = ChrW$(7903) 
         Case "ôõ": c = ChrW$(7905) 
         Case "ôï": c = ChrW$(7907) 
         Case "uù": c = ChrW$(250) 
         Case "uø": c = ChrW$(249) 
         Case "uû": c = ChrW$(7911) 
         Case "uõ": c = ChrW$(361) 
         Case "uï": c = ChrW$(7909) 
         Case "öù": c = ChrW$(7913) 
         Case "öø": c = ChrW$(7915) 
         Case "öû": c = ChrW$(7917) 
         Case "öõ": c = ChrW$(7919) 
         Case "öï": c = ChrW$(7921) 
         Case "yù": c = ChrW$(253) 
         Case "yø": c = ChrW$(7923) 
         Case "yû": c = ChrW$(7927) 
         Case "yõ": c = ChrW$(7929) 
         Case "AÙ": c = ChrW$(193) 
         Case "AØ": c = ChrW$(192) 
         Case "AÛ": c = ChrW$(7842) 
         Case "AÕ": c = ChrW$(195) 
         Case "AÏ": c = ChrW$(7840) 
         Case "AÊ": c = ChrW$(258) 
         Case "AÉ": c = ChrW$(7854) 
         Case "AÈ": c = ChrW$(7856) 
         Case "AÚ": c = ChrW$(7858) 
         Case "AÜ": c = ChrW$(7860) 
         Case "AË": c = ChrW$(7862) 
         Case "AÂ": c = ChrW$(194) 
         Case "AÁ": c = ChrW$(7844) 
         Case "AÀ": c = ChrW$(7846) 
         Case "AÅ": c = ChrW$(7848) 
         Case "AÃ": c = ChrW$(7850) 
         Case "AÄ": c = ChrW$(7852) 
         Case "EÙ": c = ChrW$(201) 
         Case "EØ": c = ChrW$(200) 
         Case "EÛ": c = ChrW$(7866) 
         Case "EÕ": c = ChrW$(7868) 
         Case "EÏ": c = ChrW$(7864) 
         Case "EÂ": c = ChrW$(202) 
         Case "EÁ": c = ChrW$(7870) 
         Case "EÀ": c = ChrW$(7872) 
         Case "EÅ": c = ChrW$(7874) 
         Case "EÃ": c = ChrW$(7876) 
         Case "EÄ": c = ChrW$(7878) 
         Case "OÙ": c = ChrW$(211) 
         Case "OØ": c = ChrW$(210) 
         Case "OÛ": c = ChrW$(7886) 
         Case "OÕ": c = ChrW$(213) 
         Case "OÏ": c = ChrW$(7884) 
         Case "OÂ": c = ChrW$(212) 
         Case "OÁ": c = ChrW$(7888) 
         Case "OÀ": c = ChrW$(7890) 
         Case "OÅ": c = ChrW$(7892) 
         Case "OÃ": c = ChrW$(7894) 
         Case "OÄ": c = ChrW$(7896) 
         Case "ÔÙ": c = ChrW$(7898) 
         Case "ÔØ": c = ChrW$(7900) 
         Case "ÔÛ": c = ChrW$(7902) 
         Case "ÔÕ": c = ChrW$(7904) 
         Case "ÔÏ": c = ChrW$(7906) 
         Case "UÙ": c = ChrW$(218) 
         Case "UØ": c = ChrW$(217) 
         Case "UÛ": c = ChrW$(7910) 
         Case "UÕ": c = ChrW$(360) 
         Case "UÏ": c = ChrW$(7908) 
         Case "ÖÙ": c = ChrW$(7912) 
         Case "ÖØ": c = ChrW$(7914) 
         Case "ÖÛ": c = ChrW$(7916) 
         Case "ÖÕ": c = ChrW$(7918) 
         Case "ÖÏ": c = ChrW$(7920) 
         Case "YÙ": c = ChrW$(221) 
         Case "YØ": c = ChrW$(7922) 
         Case "YÛ": c = ChrW$(7926) 
         Case "YÕ": c = ChrW$(7928) 
         End Select 
      Else 
         c = Mid(vnstr, i, 1) 
         Select Case c 
         Case "ô": c = ChrW$(417) 
         Case "í": c = ChrW$(237) 
         Case "ì": c = ChrW$(236) 
         Case "æ": c = ChrW$(7881) 
         Case "ó": c = ChrW$(297) 
         Case "ò": c = ChrW$(7883) 
         Case "ö": c = ChrW$(432) 
         Case "î": c = ChrW$(7925) 
         Case "ñ": c = ChrW$(273) 
         Case "Ô": c = ChrW$(416) 
         Case "Í": c = ChrW$(205) 
         Case "Ì": c = ChrW$(204) 
         Case "Æ": c = ChrW$(7880) 
         Case "Ó": c = ChrW$(296) 
         Case "Ò": c = ChrW$(7882) 
         Case "Ö": c = ChrW$(431) 
         Case "Î": c = ChrW$(7924) 
         Case "Ñ": c = ChrW$(272) 
         End Select 
      End If 
      VNItoUNICODE = VNItoUNICODE + c 
      If db Then i = i + 1 
   Next i 
End Function 


Hàm chuyển từ UNICODE sang VNI



Function UNICODEtoVNI(ByVal vnstr As String) 
   Dim c As String, i As Integer 
   For i = 1 To Len(vnstr) 
      c = Mid(vnstr, i, 1) 
      Select Case c 
      Case ChrW$(97): c = "a" 
      Case ChrW$(225): c = "aù" 
      Case ChrW$(224): c = "aø" 
      Case ChrW$(7843): c = "aû" 
      Case ChrW$(227): c = "aõ" 
      Case ChrW$(7841): c = "aï" 
      Case ChrW$(259): c = "aê" 
      Case ChrW$(7855): c = "aé" 
      Case ChrW$(7857): c = "aè" 
      Case ChrW$(7859): c = "aú" 
      Case ChrW$(7861): c = "aü" 
      Case ChrW$(7863): c = "aë" 
      Case ChrW$(226): c = "aâ" 
      Case ChrW$(7845): c = "aá" 
      Case ChrW$(7847): c = "aà" 
      Case ChrW$(7849): c = "aå" 
      Case ChrW$(7851): c = "aã" 
      Case ChrW$(7853): c = "aä" 
      Case ChrW$(101): c = "e" 
      Case ChrW$(233): c = "eù" 
      Case ChrW$(232): c = "eø" 
      Case ChrW$(7867): c = "eû" 
      Case ChrW$(7869): c = "eõ" 
      Case ChrW$(7865): c = "eï" 
      Case ChrW$(234): c = "eâ" 
      Case ChrW$(7871): c = "eá" 
      Case ChrW$(7873): c = "eà" 
      Case ChrW$(7875): c = "eå" 
      Case ChrW$(7877): c = "eã" 
      Case ChrW$(7879): c = "eä" 
      Case ChrW$(111): c = "o" 
      Case ChrW$(243): c = "où" 
      Case ChrW$(242): c = "oø" 
      Case ChrW$(7887): c = "oû" 
      Case ChrW$(245): c = "oõ" 
      Case ChrW$(7885): c = "oï" 
      Case ChrW$(244): c = "oâ" 
      Case ChrW$(7889): c = "oá" 
      Case ChrW$(7891): c = "oà" 
      Case ChrW$(7893): c = "oå" 
      Case ChrW$(7895): c = "oã" 
      Case ChrW$(7897): c = "oä" 
      Case ChrW$(417): c = "ô" 
      Case ChrW$(7899): c = "ôù" 
      Case ChrW$(7901): c = "ôø" 
      Case ChrW$(7903): c = "ôû" 
      Case ChrW$(7905): c = "ôõ" 
      Case ChrW$(7907): c = "ôï" 
      Case ChrW$(105): c = "i" 
      Case ChrW$(237): c = "í" 
      Case ChrW$(236): c = "ì" 
      Case ChrW$(7881): c = "æ" 
      Case ChrW$(297): c = "ó" 
      Case ChrW$(7883): c = "ò" 
      Case ChrW$(117): c = "u" 
      Case ChrW$(250): c = "uù" 
      Case ChrW$(249): c = "uø" 
      Case ChrW$(7911): c = "uû" 
      Case ChrW$(361): c = "uõ" 
      Case ChrW$(7909): c = "uï" 
      Case ChrW$(432): c = "ö" 
      Case ChrW$(7913): c = "öù" 
      Case ChrW$(7915): c = "uø" 
      Case ChrW$(7917): c = "öû" 
      Case ChrW$(7919): c = "öõ" 
      Case ChrW$(7921): c = "öï" 
      Case ChrW$(121): c = "y" 
      Case ChrW$(253): c = "yù" 
      Case ChrW$(7923): c = "yø" 
      Case ChrW$(7927): c = "yû" 
      Case ChrW$(7929): c = "yõ" 
      Case ChrW$(7925): c = "î" 
      Case ChrW$(273): c = "ñ" 
      Case ChrW$(65): c = "A" 
      Case ChrW$(193): c = "AÙ" 
      Case ChrW$(192): c = "AØ" 
      Case ChrW$(7842): c = "AÛ" 
      Case ChrW$(195): c = "AÕ" 
      Case ChrW$(7840): c = "AÏ" 
      Case ChrW$(258): c = "AÊ" 
      Case ChrW$(7854): c = "AÉ" 
      Case ChrW$(7856): c = "AÈ" 
      Case ChrW$(7858): c = "AÚ" 
      Case ChrW$(7860): c = "AÜ" 
      Case ChrW$(7862): c = "AË" 
      Case ChrW$(194): c = "AÂ" 
      Case ChrW$(7844): c = "AÁ" 
      Case ChrW$(7846): c = "AÀ" 
      Case ChrW$(7848): c = "AÅ" 
      Case ChrW$(7850): c = "AÃ" 
      Case ChrW$(7852): c = "AÄ" 
      Case ChrW$(69): c = "E" 
      Case ChrW$(201): c = "EÙ" 
      Case ChrW$(200): c = "EØ" 
      Case ChrW$(7866): c = "EÛ" 
      Case ChrW$(7868): c = "EÕ" 
      Case ChrW$(7864): c = "EÏ" 
      Case ChrW$(202): c = "EÂ" 
      Case ChrW$(7870): c = "EÁ" 
      Case ChrW$(7872): c = "EÀ" 
      Case ChrW$(7874): c = "EÅ" 
      Case ChrW$(7876): c = "EÃ" 
      Case ChrW$(7878): c = "EÄ" 
      Case ChrW$(79): c = "O" 
      Case ChrW$(211): c = "OÙ" 
      Case ChrW$(210): c = "OØ" 
      Case ChrW$(7886): c = "OÛ" 
      Case ChrW$(213): c = "OÕ" 
      Case ChrW$(7884): c = "OÏ" 
      Case ChrW$(212): c = "OÂ" 
      Case ChrW$(7888): c = "OÁ" 
      Case ChrW$(7890): c = "OÀ" 
      Case ChrW$(7892): c = "OÅ" 
      Case ChrW$(7894): c = "OÃ" 
      Case ChrW$(7896): c = "OÄ" 
      Case ChrW$(416): c = "Ô" 
      Case ChrW$(7898): c = "ÔÙ" 
      Case ChrW$(7900): c = "ÔØ" 
      Case ChrW$(7902): c = "ÔÛ" 
      Case ChrW$(7904): c = "ÔÕ" 
      Case ChrW$(7906): c = "ÔÏ" 
      Case ChrW$(73): c = "I" 
      Case ChrW$(205): c = "Í" 
      Case ChrW$(204): c = "Ì" 
      Case ChrW$(7880): c = "Æ" 
      Case ChrW$(296): c = "Ó" 
      Case ChrW$(7882): c = "Ò" 
      Case ChrW$(85): c = "U" 
      Case ChrW$(218): c = "UÙ" 
      Case ChrW$(217): c = "UØ" 
      Case ChrW$(7910): c = "UÛ" 
      Case ChrW$(360): c = "UÕ" 
      Case ChrW$(7908): c = "UÏ" 
      Case ChrW$(431): c = "Ö" 
      Case ChrW$(7912): c = "ÖÙ" 
      Case ChrW$(7914): c = "ÖØ" 
      Case ChrW$(7916): c = "ÖÛ" 
      Case ChrW$(7918): c = "ÖÕ" 
      Case ChrW$(7920): c = "ÖÏ" 
      Case ChrW$(89): c = "Y" 
      Case ChrW$(221): c = "YÙ" 
      Case ChrW$(7922): c = "YØ" 
      Case ChrW$(7926): c = "YÛ" 
      Case ChrW$(7928): c = "YÕ" 
      Case ChrW$(7924): c = "Î" 
      Case ChrW$(272): c = "Ñ" 
      End Select 
      UNICODEtoVNI = UNICODEtoVNI + c 
   Next i 
End Function 


Để thông báo hiện được tiếng việt chúng ta dùng hai hàm API sau. Đầu tiên chúng ta phải khai báo trong module:

'Khai báo các hàm API trong thư viện User32.DLL


Private Declare Function GetActiveWindow Lib "user32" () As Long 
Private Declare Function MessageBoxW Lib "user32" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long 


Sau đó chúng ta viết lại hàm Msgbox để hiện thông báo với chuổi Unicode như sau:



Function MsgBoxUni(ByVal PromptUni As Variant, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal TitleUni As Variant = vbNullString) As VbMsgBoxResult 
   'Function MsgBoxUni(ByVal PromptUni As Variant, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal TitleUni As Variant, Optional HelpFile, Optional Context) As VbMsgBoxResult
   'BStrMsg,BStrTitle : La chuoi Unicode
   Dim BStrMsg, BStrTitle 
   'Hàm StrConv Chuyen chuoi ve ma Unicode
   BStrMsg = StrConv(PromptUni, vbUnicode) 
   BStrTitle = StrConv(TitleUni, vbUnicode) 
   MsgBoxUni = MessageBoxW(GetActiveWindow, BStrMsg, BStrTitle, Buttons) 
End Function 


Ở đây các bạn cần chú ý:

Trong màn hình sọan thảo code VBE (Visual Basic Editor) các bạn phải biết chỉnh bộ gõ, trước khi nhập nội dung cho hàm hiển thị.

Ví dụ: tôi muốn hàm hiển thỉ thông báo Bạn đã thành công (font VNI) tôi sẽ thực hiện như sau
Đầu tiên tôi chỉnh bộ gõ theo kiểu gõ là Telex, bảng mã là VNI Windows


Tôi sẽ sử dụng hàm MsgboxUni như sau:



Sub HienThongBaoTV() 
   'Tôi dùng hàm VNItoUnicode ?e^? chuye^?n mã VNI sang Unicode
   'Các ba.n chú ý khi ba('t ?a^`u nha^.p vào no^.i dung thì hãy ba^.t che^' ?o^. gõ tie^'ng vie^.t
   MsgBoxUni VNI("Coäng hoaø xaõ hoäi chuû nghóa Vieät Nam") 
End Sub 

Trong Visual Basic chúng ta có thể dùng hàm sau, để thay thế hàm Msgbox nhằm thể hiện chuổi Unicode


Function MsgBox(ByVal PromptUni As Variant, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal TitleUni As Variant = vbNullString) As VbMsgBoxResult 
   Dim BStrMsg, BStrTitle 
   BStrMsg = StrConv(PromptUni, vbUnicode) 
   BStrTitle = StrConv(TitleUni, vbUnicode) 
   MsgBox = MessageBoxW(GetActiveWindow, BStrMsg, BStrTitle, Buttons) 
End Function 

Các bạn có thể tham khảo tại đây:


Vovisoft

Các hàm cho Unicode chữ Việt


Dưới đây là danh sách của một Sub và 13 hàm (Functions) dùng để xử lý Unicode chữ Việt. Ðể hiểu thêm về Unicode và nhất là cách hoán chuyển giữa UTF-16 và UTF-8 xin đọc bài Căn bản Unicode cho VB6 Programers cũng trên trang Vovisoft.


Sub InitUnicode()Initialise String chứa các Unicode Vowels v đ, Ð
Function IsUniChar(Ch) As BooleanKết quả True nếu Ch l Unicode character
Function IsUpperUniChar(Ch) As BooleanKết quả True nếu Ch l Unicode character chữ Hoa
Function UpperUniChar(Ch) As StringBiến Unicode character Ch th nh chữ Hoa
Function LowerUniChar(Ch) As StringBiến Unicode character Ch th nh chữ Thường
Function UpperUniStr(IPString) As StringBiến cả Unicode String IPString th nh chữ Hoa
Function LowerUniStr(IPString) As StringBiến cả Unicode String IPString th nh chữ Thường
Function ToUTF8(ByVal UTF16 As Long) As Byte()Hoán chuyển UTF-16 ra 2 hay 3 bytes UTF-8
Function ToUTF16(BArray) As LongHoán chuyển 2 hay 3 bytes UTF-8 ra UTF-16
Function UniStrToUTF8(UniString) As Byte()Hoán chuyển Unicode String ra UTF-8 bytes
Function UTF8ToUniStr(BArray) As StringHoán chuyển UTF-8 bytes ra Unicode String
Function HexDisplayOfFile(TFileName) As StringHiển thị Text của một file trong dạng Hex
Function GetFileEncoding(TFileName) As coEncodingLấy loại Encoding của Text file: ANSI, Unicode hay UTF-8
Function ToUniDecimal(UniString As String) As StringXuất khẩu Unicode String ra dạng ✏ để dùng cho Web




Option Explicit 
Public UVowels As String 
' API to access VB6 String by pointer in order to copy memory
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long) 
Enum coEncoding 
   coANSI = 0 
   coUnicode = 1 
   coUTF8 = 2 
End Enum 
Sub InitUnicode() 
   Dim TStr As String 
   ' Initialise the list of Unicode Vowels, 67 lowerCase followed by 67 Uppercase
   ' Note that by using the Function chrW, the &HE1 Unicode character is stored internally
   ' as &HE100 for a String character
   TStr = TStr & ChrW(&HE1) & ChrW(&HE0) & ChrW(&H1EA3) & ChrW(&HE3) & ChrW(&H1EA1) & ChrW(&H103) & ChrW(&H1EAF) & ChrW(&H1EB1) & ChrW(&H1EB3) & ChrW(&H1EB5) & ChrW(&H1EB7) & ChrW(&HE2) & ChrW(&H1EA5) & ChrW(&H1EA7) & ChrW(&H1EA9) & ChrW(&H1EAB) & ChrW(&H1EAD) & ChrW(&HE9) & ChrW(&HE8) & ChrW(&H1EBB) 
   TStr = TStr & ChrW(&H1EBD) & ChrW(&H1EB9) & ChrW(&HEA) & ChrW(&H1EBF) & ChrW(&H1EC1) & ChrW(&H1EC3) & ChrW(&H1EC5) & ChrW(&H1EC7) & ChrW(&HED) & ChrW(&HEC) & ChrW(&H1EC9) & ChrW(&H129) & ChrW(&H1ECB) & ChrW(&HF3) & ChrW(&HF2) & ChrW(&H1ECF) & ChrW(&HF5) & ChrW(&H1ECD) & ChrW(&HF4) & ChrW(&H1ED1) 
   TStr = TStr & ChrW(&H1ED3) & ChrW(&H1ED5) & ChrW(&H1ED7) & ChrW(&H1ED9) & ChrW(&H1A1) & ChrW(&H1EDB) & ChrW(&H1EDD) & ChrW(&H1EDF) & ChrW(&H1EE1) & ChrW(&H1EE3) & ChrW(&HFA) & ChrW(&HF9) & ChrW(&H1EE7) & ChrW(&H169) & ChrW(&H1EE5) & ChrW(&H1B0) & ChrW(&H1EE9) & ChrW(&H1EEB) & ChrW(&H1EED) & ChrW(&H1EEF) 
   TStr = TStr & ChrW(&H1EF1) & ChrW(&HFD) & ChrW(&H1EF3) & ChrW(&H1EF7) & ChrW(&H1EF9) & ChrW(&H1EF5) & ChrW(&H111) & ChrW(&HC1) & ChrW(&HC0) & ChrW(&H1EA2) & ChrW(&HC3) & ChrW(&H1EA0) & ChrW(&H102) & ChrW(&H1EAE) & ChrW(&H1EB0) & ChrW(&H1EB2) & ChrW(&H1EB4) & ChrW(&H1EB6) & ChrW(&HC2) & ChrW(&H1EA4) 
   TStr = TStr & ChrW(&H1EA6) & ChrW(&H1EA8) & ChrW(&H1EAA) & ChrW(&H1EAC) & ChrW(&HC9) & ChrW(&HC8) & ChrW(&H1EBA) & ChrW(&H1EBC) & ChrW(&H1EB8) & ChrW(&HCA) & ChrW(&H1EBE) & ChrW(&H1EC0) & ChrW(&H1EC2) & ChrW(&H1EC4) & ChrW(&H1EC6) & ChrW(&HCD) & ChrW(&HCC) & ChrW(&H1EC8) & ChrW(&H128) & ChrW(&H1ECA) 
   TStr = TStr & ChrW(&HD3) & ChrW(&HD2) & ChrW(&H1ECE) & ChrW(&HD5) & ChrW(&H1ECC) & ChrW(&HD4) & ChrW(&H1ED0) & ChrW(&H1ED2) & ChrW(&H1ED4) & ChrW(&H1ED6) & ChrW(&H1ED8) & ChrW(&H1A0) & ChrW(&H1EDA) & ChrW(&H1EDC) & ChrW(&H1EDE) & ChrW(&H1EE0) & ChrW(&H1EE2) & ChrW(&HDA) & ChrW(&HD9) & ChrW(&H1EE6) 
   TStr = TStr & ChrW(&H168) & ChrW(&H1EE4) & ChrW(&H1AF) & ChrW(&H1EE8) & ChrW(&H1EEA) & ChrW(&H1EEC) & ChrW(&H1EEE) & ChrW(&H1EF0) & ChrW(&HDD) & ChrW(&H1EF2) & ChrW(&H1EF6) & ChrW(&H1EF8) & ChrW(&H1EF4) & ChrW(&H110) 
   UVowels = TStr  ' Assign to the Unicode Vowel list
End Sub 
Function IsUniChar(Ch) As Boolean 
   ' Return True if Ch is a Unicode Vowel or dd, DD
   IsUniChar = (InStr(UVowels, Ch) > 0) 
End Function 
Function IsUpperUniChar(Ch) As Boolean 
   ' Return True if Ch is an Uppercase Unicode Vowel or DD
   IsUpperUniChar = (InStr(UVowels, Ch) > 67) 
End Function 
Function UpperUniChar(Ch) As String 
   ' Return the Uppercase for a given vowel or dd
   Dim Pos  ' Position of character in Unicode vowel list
   ' Locate the character in list of Unicode vowels
   Pos = InStr(UVowels, Ch) 
   If (Pos > 67) Then 
      UpperUniChar = Ch  ' It's already uppercase - leave it alone
   ElseIf (Pos > 0) Then 
      ' It's a Lowercase Unicode Vowel - so get the corresponding Uppercase vowel in the list
      UpperUniChar = Mid(UVowels, Pos + 67, 1) 
   Else 
      ' It's just a normal ANSI character
      UpperUniChar = UCase(Ch) 
   End If 
End Function 
Function LowerUniChar(Ch) As String 
   ' Return the Lowercase for a given vowel or DD
   Dim Pos  ' Position of character in Unicode vowel list
   ' Locate the character in list of Unicode vowels
   Pos = InStr(UVowels, Ch) 
   If Pos > 67 Then 
      ' It's an Uppercase Unicode Vowel - so get the corresponding Lowercase vowel in the list
      LowerUniChar = Mid(UVowels, Pos - 67, 1) 
   ElseIf Pos > 0 Then 
      LowerUniChar = Ch  ' It's already Lowercase - leave it alone
   Else 
      ' It's just a normal ANSI character
      LowerUniChar = LCase(Ch) 
   End If 
End Function 
Function UpperUniStr(IPString) As String 
   ' Convert a Unicode string to UpperCase
   Dim i, TLen, TStr 
   TStr = ""  ' Initialise the resultant string
   TLen = Len(IPString)  ' get length of input Unicode string
   If TLen > 0 Then 
      ' Iterate through each character of the Unicode string
      For i = 1 To TLen 
         ' Convert each character to uppercase
         TStr = TStr & UpperUniChar(Mid(IPString, i, 1)) 
      Next 
   End If 
   UpperUniStr = TStr  ' Return the resultant string
End Function 
Function LowerUniStr(IPString) As String 
   ' Convert a Unicode string to LowerCase
   Dim i, TLen, TStr 
   TStr = ""  ' Initialise the resultant string
   TLen = Len(IPString)  ' get length of input Unicode string
   If TLen > 0 Then 
      ' Iterate through each character of the Unicode string
      For i = 1 To TLen 
         ' Convert each character to lowercase
         TStr = TStr & LowerUniChar(Mid(IPString, i, 1)) 
      Next 
   End If 
   LowerUniStr = TStr  ' Return the resultant string
End Function 
Function ToUTF8(ByVal UTF16 As Long) As Byte() 
   ' Convert a 16bit UTF-16BE to 2 or 3 UTF-8 bytes
   Dim BArray() As Byte 
   If UTF16 < &H80 Then 
      ReDim BArray(0)  ' one byte UTF-8
      BArray(0) = UTF16  ' Use number as is
   ElseIf UTF16 < &H800 Then 
      ReDim BArray(1)  ' two byte UTF-8
      BArray(1) = &H80 + (UTF16 And &H3F)  ' Least Significant 6 bits
      UTF16 = UTF16 \ &H40  ' Shift UTF16 number right 6 bits
      BArray(0) = &HC0 + (UTF16 And &H1F)  ' Use 5 remaining bits
   Else 
      ReDim BArray(2)  ' three byte UTF-8
      BArray(2) = &H80 + (UTF16 And &H3F)  ' Least Significant 6 bits
      UTF16 = UTF16 \ &H40  ' Shift UTF16 number right 6 bits
      BArray(1) = &H80 + (UTF16 And &H3F)  ' Use next 6 bits
      UTF16 = UTF16 \ &H40  ' Shift UTF16 number right 6 bits again
      BArray(0) = &HE0 + (UTF16 And &HF)  ' Use 4 remaining bits
   End If 
   ToUTF8 = BArray  ' Return UTF-8 bytes in an array
End Function 
Function ToUTF16(BArray) As Long 
   ' Convert 2 or 3 UTF-8 bytes to a 16bit UTF-16BE
   Dim IntUB 
   IntUB = UBound(BArray)  ' Find out how many bytes UTF-8 takes
   Select Case IntUB 
   Case 0  ' one byte UTF-8. Note that bArray starts with index=0
      ToUTF16 = BArray(0)  ' Use number as is
   Case 1  ' two byte UTF-8
      ToUTF16 = (BArray(0) And &H1F) * &H40 + (BArray(1) And &H3F) 
   Case 2  ' three byte UTF-8
      ToUTF16 = (BArray(0) And &HF) * &H1000 + (BArray(1) And &H3F) * &H40 + (BArray(2) And &H3F) 
   End Select 
End Function 
Function UniStrToUTF8(UniString) As Byte() 
   ' Convert a Unicode string to a byte stream of UTF-8
   Dim BArray() As Byte 
   Dim TempB() As Byte 
   Dim i As Long 
   Dim k As Long 
   Dim TLen As Long 
   Dim b1 As Byte 
   Dim b2 As Byte 
   Dim UTF16 As Long 
   Dim j 
   TLen = Len(UniString)  ' Obtain length of Unicode input string
   If TLen = 0 Then Exit Function  ' get out if there's nothing to convert
   k = 0 
   For i = 1 To TLen 
      ' Work out the UTF16 value of the Unicode character
      CopyMemory b1, ByVal StrPtr(UniString) + ((i - 1) * 2), 1 
      CopyMemory b2, ByVal StrPtr(UniString) + ((i - 1) * 2) + 1, 1 
      ' Combine the 2 bytes into the Unicode UTF-16
      UTF16 = b2  ' assign b2 to UTF16 before multiplying by 256 to avoid overflow
      UTF16 = UTF16 * 256 + b1 
      ' Convert UTF-16 to 2 or 3 bytes of UTF-8
      TempB = ToUTF8(UTF16) 
      ' Copy the resultant bytes to BArray
      For j = 0 To UBound(TempB) 
         ReDim Preserve BArray(k) 
         BArray(k) = TempB(j): k = k + 1 
      Next 
      ReDim TempB(0) 
   Next 
   UniStrToUTF8 = BArray  ' Return the resultant UTF-8 byte array
End Function 
Function UTF8ToUniStr(BArray) As String 
   ' Convert a byte stream of UTF-8 to Unicode String
   Dim i As Long 
   Dim TopIndex As Long 
   Dim TwoBytes(1) As Byte 
   Dim ThreeBytes(2) As Byte 
   Dim AByte As Byte 
   Dim TStr As String 
   TopIndex = UBound(BArray)  ' Number of bytes equal TopIndex+1
   If TopIndex = 0 Then Exit Function  ' get out if there's nothing to convert
   i = 0  ' Initialise pointer
   ' Iterate through the Byte Array
   Do While i <= TopIndex 
      AByte = BArray(i)  ' fetch a byte
      If AByte = &HE1 Then 
         ' Start of 3 byte UTF-8 group for a character
         ' Copy 3 byte to ThreeBytes
         ThreeBytes(0) = BArray(i): i = i + 1 
         ThreeBytes(1) = BArray(i): i = i + 1 
         ThreeBytes(2) = BArray(i): i = i + 1 
         ' Convert Byte array to UTF-16 then Unicode
         TStr = TStr & ChrW(ToUTF16(ThreeBytes)) 
      ElseIf (AByte >= &HC3) And (AByte <= &HC6) Then 
         ' Start of 2 byte UTF-8 group for a character
         TwoBytes(0) = BArray(i): i = i + 1 
         TwoBytes(1) = BArray(i): i = i + 1 
         ' Convert Byte array to UTF-16 then Unicode
         TStr = TStr & ChrW(ToUTF16(TwoBytes)) 
      Else 
         ' Normal ANSI character - use it as is
         TStr = TStr & Chr(AByte): i = i + 1  ' Increment byte array index
      End If 
   Loop 
   UTF8ToUniStr = TStr  ' Return the resultant string
End Function 
Function HexDisplayOfFile(TFileName) As String 
' Display the content of a text file in Hex format like:
   ' FF FE 54 00 B0 01 DB 1E 63 00
   Dim Text1, MyChar, FileNum 
   FileNum = FreeFile  ' Obtain a File handle from the OS
   Open TFileName For Binary As #FileNum  ' Open given Text file as binary
   ' Read all characters in the file.
   Do While Not EOF(FileNum) 
      MyChar = Input(1, #FileNum)  ' Read a character as raw binary
      If MyChar <> "" Then 
         ' Convert byte to Hex like 0A, 6B etc..
         Text1 = Text1 & HexOf(Asc(MyChar)) & " " 
      End If 
   Loop 
   Close #FileNum  ' Close file
   HexDisplayOfFile = Text1  ' Return the Hex display string
End Function 
Function GetFileEncoding(TFileName) As coEncoding 
   ' Return the type of Text file : UTF16LE, UTF-8 or ANSI
   Dim b1, FileNum 
   On Error Resume Next  ' Ignore error
   FileNum = FreeFile  ' Obtain a File handle from the OS
   Open TFileName For Binary As #FileNum  ' Open given Textfile as Binary
   ' Read all characters in the file.
   b1 = Input(1, #FileNum)  ' Read the first character.
   If Asc(b1) = &HFF Then 
      GetFileEncoding = coUnicode  ' UTF-16LE
   ElseIf Asc(b1) = &HEF Then 
      GetFileEncoding = coUTF8  ' UTF-8
   Else 
      GetFileEncoding = coANSI  ' Normal ANSI
   End If 
   Close #FileNum  ' Close the file
End Function 
Function ToUniDecimal(UniString As String) As String 
   ' Return the HTML equivalent string of a Unicode string
   Dim i As Integer  ' Must declare as integer for CopyMemory to work
   Dim TLen, TStr 
   Dim b1 As Byte 
   Dim b2 As Byte 
   Dim UTF16 As Long 
   TLen = Len(UniString)  ' Get Length of input Unicode string
   If TLen = 0 Then Exit Function  ' Get out if null string
   ' Iterate through each character in the string
   For i = 1 To TLen 
      If IsUniChar(Mid(UniString, i, 1)) Then 
         ' Cast the String character to 2 bytes
         CopyMemory b1, ByVal StrPtr(UniString) + ((i - 1) * 2), 1 
         CopyMemory b2, ByVal StrPtr(UniString) + ((i - 1) * 2) + 1, 1 
         ' Combine the 2 bytes into the Unicode UTF-16
         UTF16 = b2  ' assign b2 to UTF16 before multiplying by 256 to avoid overflow
         UTF16 = UTF16 * 256 + b1 
         ' Convert UTF-16 to format ? for HTML
         TStr = TStr & "&#" & Trim(CStr(UTF16)) & ";" 
      Else 
         ' Get here if it;s an ANSI character
         TStr = TStr & Mid(UniString, i, 1) 
      End If 
   Next 
   ToUniDecimal = TStr  ' Return the HTML string
End Function 
Private Function HexOf(ByVal AscNum As Integer) As String 
   ' Return the 2 character Hex string of AscNum, prefix extra "0" if necessary
   Dim TStr 
   If AscNum > 255 Then AscNum = AscNum Mod 256 
   TStr = Hex(AscNum)  ' Convert to Hex
   If Len(TStr) = 1 Then 
      ' Attach "0" on the left
      TStr = "0" & TStr 
   End If 
   HexOf = TStr  ' Return the 2 character Hex string
End Function 

Thứ Năm, 5 tháng 7, 2012

5 bí mật gia đình không đem ra 'tám'


Tình trạng tài chính, đời sống tình dục... luôn là chủ đề khiến nhóm bạn tò mò nhưng nếu nói ra, tổ ấm của bạn sẽ bị lung lay.


Bạn bè là những người quan trọng trong cuộc sống. Họ là nơi để bạn trút bầu tâm sự mỗi lúc chán nản, mệt mỏi. Tuy nhiên, có một số điều bạn cần tránh đem ra kể bởi nó ảnh hưởng trực tiếp đến đánh giá của bạn bè dành cho bạn và thậm chí là ảnh hưởng tới hạnh phúc gia đình bạn. Dưới đây là những điều bạn cần tránh kể lể:
1. Bạn nghĩ chồng/vợ của mình là một "tóc vàng hoe"
Trên thực tế, có thể chồng hoặc vợ của bạn là một người kém thông minh hơn bạn nhưng đừng vì thế mà đem ra phàn nàn với nhóm bạn. Sự thật này có thể làm hạ thấp thể diện của anh ấy/cô ấy. Hơn nữa, "xấu chàng thì hổ ai", có thể những người bạn sẽ không nói ra đâu nhưng họ sẽ chẳng đánh giá cao hành động chê bai của bạn.
2. Thu nhập của người ấy
Vấn đề tài chính của bạn và nửa kia là một trong những vấn đề khiến mọi người tò mò nhiều nhất. Tuy nhiên, không phải vì thế mà bạn cần công khai rạch ròi từng phần thu nhập của mỗi người. Điều đó sẽ ảnh hưởng trực tiếp tới sự đánh giá của những người xung quanh về bạn và vợ/chồng bạn. Hẳn chẳng ai muốn nghe câu: "Hóa ra nó sống nhờ chồng/vợ"? Việc ai có mức lương cao hơn, ai đóng nhiều tiền mua nhà hơn... nên là vấn đề của riêng vợ chồng bạn mà thôi. Những bạn bè của bạn đối tác của bạn Không thích
3. Đời sống tình dục của vợ chồng bạn
Tại sao các chuyên gia vẫn gọi tình dục là chuyện tế nhị? Có lẽ nguyên nhân chính là vì đây không phải là một chủ đề nên đem ra bàn luận ở chốn đông người. Chuyện kích thước, kỹ năng của đối tác nếu cần phải nói thì bạn chỉ nên kể cho các chuyên gia có chuyên môn. Họ mới có thể đưa cho bạn lời khuyên chính xác nhất. Còn nếu bạn đem ra hỏi những người bạn thì nó sẽ trở thành chủ đề để họ thì thầm thường xuyên sau lưng bạn.
4. Số tiền nợ của gia đình bạn
Gần như tất cả các cặp vợ chồng đều mắc phải công nợ, có thể ít hoặc nhiều. Tuy nhiên, đừng bao giờ đem chuyện này than vãn với bạn bè. Họ có thể sẽ không đối xử với gia đình bạn nồng nhiệt như trước nữa bởi họ sợ một ngày nào đó bạn sẽ đến vay tiền của họ.
5. Những người bạn mà vợ/chồng bạn không thích
Lý tưởng nhất là vợ/chồng bạn có thể kết thân với những người bạn của bạn. Nhưng trên thực tế thì điều này hiếm khi xảy ra hoàn toàn. Chồng/vợ bạn có thể không ưa một vài người bạn của bạn, bạn biết rất rõ nhưng không nhất thiết phải nói cho những người bạn kia sự thật này. Làm vậy càng khiến mọi chuyện trở nên phức tạp hơn và họ khó có thể đối diện với nhau trong những lần gặp sau.
Mộc Lan

Thứ Ba, 26 tháng 6, 2012

Heo Biết Giữ Nhà Và Ăn Chay


Heo Biết Giữ Nhà Và Ăn Chay
Đó là con heo của nhà Ông Nguyễn Văn Mạo – ấp 4 xã Mỹ Đông, huyện Tháp Mười, tỉnh Đồng Tháp. Con heo này được ông Mạo mua từ người bán heo dạo cách nay hơn 3 năm, người bán heo nói là heo Mọi (có người nói là heo Móng Cái), ông Mạo nói: “khi tôi mới mua nó khoảng 2kg con gái tôi nó thích nên ôm tối ngày, đặt tên cho nó là Mép và cho nó ngủ chung trong nhà, khi được 2-3 tháng nó đã quen, từ đó đến giờ nó ở chung trong nhà, mà hay cái là nó không đi bậy trong nhà, khi nào nó đi thì nó chạy ra ngoài sân.
Con heo mọi biết ăn chay, trông nhà
Một hôm nó đang ở trong nhà có anh hàng xóm qua chơi bỗng dưng nó chạy tới, hất anh ta không cho anh ta vô nhà tôi giật mình la nó thì nó dừng lại. Từ đó hễ có ai lạ vào nhà là nó rượt khi nào nhà tôi la nó mới thôi, nó khôn lắm tôi vỗ vỗ nó kêu nó nằm cửa nào là nó nằm cửa đó”.
Con heo Mọi bên cạnh ông Nguyễn Văn Mạo
Con heo này hiện tại đã hơn 100kg, ông Mạo còn cho biết thêm vào các ngày rằm thì cho nó ăn thịt cá là nó không chịu ăn, nó chỉ ăn cơm không, chị Nguyệt người hàng xóm cũng khẳng định là có thật, có người hỏi mua giá cao nhưng ông không bán, ông nói: “để nuôi khi nào nó chết tôi chôn chứ không bán”.

Thứ Sáu, 15 tháng 6, 2012

Các tiện ích mở rộng cần thiết nhất khi sử dụng Google Chrome

Google Chrome cung cấp lượng add-on khổng lồ (tuy vậy nhưng vẫn thua firefox) cho việc sử dụng tối đa hiệu suất và thao tác trên Chrome của bạn. Tuy nhiên, không phải ai cũng biết add-on nào là cần thiết hay cài đại vào sẻ làm trình duyệt Google Chrome thêm ì ạch. Do đó, mình xin chia sẻ vài add-on chắc chắn sẻ làm hài lòng các bạn có duyên với bài viết này.

1. AdBlock: 
https://chrome.google.com/webstore/detail/gighmmpiobklfepjocnamgkkbiglidom

Chắc chắn bạn đã gặp rất nhiều phiều toái khi vào các trang web phim, nhạc, tin tức rất rất nhiều quảng cáo và các bảng tùm lum khác hiện ra làm bạn mất công tắt đi. AdBlock sẻ giúp bạn tận hưởng tất cả những gì bạn muốn ở trang web đó mà không có bất kì một sự làm phiền nào. 

Đối với ai đang xài 3G hoặc modem tính dung lượng add-on này sẻ giúp bạn tiết kiệm được kha khá dung lượng đấy.

2. Flashblock:
https://chrome.google.com/webstore/detail/gofhjkjmkpinhpoiabjplobcaignabnl

Tương tự AdBlock nhưng FlashBlock dùng để chặn file flash dạng swf trên các trang web, ngăn không cho chúng tải về. Tuy nhiên, nếu bạn là người đam mê giải trí thì nên cài thôi rồi tắt nó đi, chỉ sử dụng nó khi xài 3G hoặc modem tính dung lượng thôi và nó sẻ giúp bạn tiết kiệm được kha khá dung lượng nữa đấy.

3. Stop Auto Youtube:
https://chrome.google.com/webstore/detail/lgdfnbpkmkkdhgidgcpdkgpdlfjcgnnh

Đối với những ai xài 3G hoặc modem tính dung lượng thì add-on này sẻ là công cụ giúp bạn tiết kiệm một mớ nữa đây.

Bạn có biết rằng khi bạn mở một video trên youtube, video sẻ được tự động tải không? nó tải ngầm để bạn xem không bị giật đấy, nhiều khi bạn vào nhiều video cùng lúc sẻ là 1 khoảng băng thông không nhỏ đấy.

4. FastestChrome - Browse Faster:
https://chrome.google.com/webstore/detail/mmffncokckfccddfenhkhnllmlobdahm

Công cụ này sẻ rất có ích cho người dùng khi tra cứu trên google nhé. Bình thường, sau khi tìm kiếm xong bạn sẻ duyệt qua các kết quả tìm được qua các trang số1, 2, 3, 4, ....... để tìm. Nhưng bạn có nghĩ là khi bạn lăn chuột xuống trang 1, 2, 3, 4, ..... sẻ tự động được bật ra dùm bạn không? (giống G+). Rất thuận tiện đấy.

Ngoài ra FastestChrome còn cung cấp 1 thông tin trên popup khi bạn chọn 1 đối tượng gì đó. Giả sử bạn chọn "Nguyễn Tấn Dũng", FastestChrome sẻ cung cấp thông tin ngắn gọn về Nguyễn Tấn Dũng qua wiki cho bạn biết (bằng tiếng Anh nha) và các cách tìm kiếm như Google, Youtube, Baidu, Google Maps,....

5. Hover Zoom: 
https://chrome.google.com/webstore/detail/nonjdcjchghhkdoolnlbekcfllmednbl

Khi rà chuột vào các bức ảnh trên trang web nó sẻ tìm kiếm 1 bức ảnh tối ưu lớn nhất có thể cho bạn. Thật tuyệt vời phải không? Và hơn thế nữa là bạn có thể nhấn Ctrl+S và save bức ảnh bự thiệt bự đó về.

6. Máy tính từ xa Chrome (Google Remote Desktop): 
https://chrome.google.com/webstore/detail/gbchcmhmhahfdphkhkmpfmihenigjmpp

Bạn đã sử dụng Teamview để nối 2 máy tính với nhau rất thuận lợi phải không? Nhưng bản Free thì giới hạn có 5phút thui. Tuy nhiên với Google Remote Desktop, bạn sẻ kết nối thoải mái nhé, với điều 2 máy điều xài Chrrome và cài đặt Google Remote Desktop.

Ứng dụng này cho phép người dùng kết nối đến một máy tính khác và điều khiển từ xa ngay trên trình duyệt Chrome.

Đối tượng cần sử dụng các phần mềm điều khiển từ xa (remote-access software) là bộ phận IT (công nghệ thông tin) trong các công ty lớn, để truy cập vào máy tính của một người dùng bất kỳ thuộc hệ thống mà không cần phải trực tiếp tiếp cận. Đây cũng là loại công cụ để giúp đỡ những ai không rành rẽ về máy tính, đặc biệt là khi cỗ máy của họ gặp nguy khi chủ nhân vô tình tải xuống các phần mềm độc hại.

7. PageArchiver: 
https://chrome.google.com/webstore/detail/ihkkeoeinpbomhnpkmmkpggkaefincbn

SingleFile Core:
https://chrome.google.com/webstore/detail/jemlklgaibiijojffihnhieihhagocma

Bạn đã từng yêu thích vài nội dung trang web, và bạn muốn copy nó để xem offline. Nhưng nó rắc rối và phức tạp khi nhiều lúc bạn không nhớ đã để quên đâu đó rùi. Giờ PageArchiver sẻ giúp bạn lưu nó lại trên Chrome và xem offline tùy thích.

Để sử dụng PageArchiver bạn phải cài thêm SingleFile Core cho đủ bộ đi kèm của nó nhé!

8. Search by Image: 
https://chrome.google.com/webstore/detail/dajedkncpodkggklbegccjpmnglmnflm

Google cung cấp công cụ này nhằm giúp bạn sử dụng Google Image để tìm một tấm ảnh khi nó nằm trên trang web bạn đang xem. Bạn chỉ cần click phải vào ảnh và chọn Seach Google with this image.

9. Auto-Translate: 
https://chrome.google.com/webstore/detail/obgoiaeapddkeekbocomnjlckbbfapmk

Bạn thường xuyên phải truy cập vào trang web tiếng Anh hay đơn giản vì trên trang đang xem có từ tiếng Anh khó hiểu. Chẳng lẻ vào Google dịch để dịch à? hay mở từ điển trực tuyến và copy chữ tiếng Anh vào.? Auto-Translate cung cấp cho bạn khả năng tự động dịch bằng phím tắt Ctrl + Click hoặc đơn giản hơn là chọn từ và nó sẻ dịch dùm bạn.

Để sử dụng tốt nhất bạn có thể vào tùy chọn và thay đổi theo ý muốn nhé.

10. Các add-on cho tín đồ Google + đây:

-  Google+ Notifications: 
https://chrome.google.com/webstore/detail/boemmnepglcoinjcdlfcpcbmhiecichi

Dùng báo Notifications trên G+ cho bạn.

- Nút Google +1: 
https://chrome.google.com/webstore/detail/jgoepmocgafhnchmokaimcmlojpnlkhp

+1 để chia sẻ cho tất cả các trang bạn muốn.

- Google Translate for Google +: 
https://chrome.google.com/webstore/detail/jfppgkomfopklagggkjiaddgndkgopgl

Dưới mỗi bài chia sẻ, mỗi câu trả lời đều có một nút Dịch để giúp bạn.

11. Drag and Go:
https://chrome.google.com/webstore/detail/jaikcnhlohebodlpkmjepipngegjbfpg

Sử dụng như đúng cái tên của nó. Chỉ cần drag từ và kéo 1 cái bạn sẻ thực thi tìm kiếm hay truy cập nội dung bạn vừa kéo. Sẻ hữu dụng khi bạn tìm kiếm một đoạn van bản hay thường nhất là truy cập nhanh một đường link chia sẻ từ các diễn đàn.

 12. Google Mail Checker:
https://chrome.google.com/webstore/detail/mihcahmgecmbnbcchbopgniflfhgnkff

Báo cho bạn biết bạn có mấy lá thư chưa đọc, Gmail nhé.

13. Turn Off the Lights: 
https://chrome.google.com/webstore/detail/bfbmjmiodbnnpllbbbfblcplfjjepjdn

Tắt đèn để bạn xem phim nè. có tác dụng khi bạn vào các trang để xem phim. Nếu bạn muốn sử dụng trên máy tính (nghĩa là bạn muốn xem phim trên máy tính, như dùng VLC chẳng hạn) bạn chỉ cần mở 1 trang phim Youtube chẳng hạn và Stop nó, sau đó vào cửa sổ trình xem phim trên máy đặt nó là On top, sau đó vào trình duyệt tắt đèn và thưởng thức.

14. The Weather:
https://chrome.google.com/webstore/detail/beapnbfmjmjhhfpaoajfhjbbfnnlfpnc

Xem thời tiết từng vùng. Tiện ích này hay ở chỗ, địa điểm xem có thể là huyện nơi bạn đang ở.

15. Stealthy:
https://chrome.google.com/webstore/detail/ieaebnkibonmpbhdaanjkmedikadnoje

Vào các trang web bị chặn với 1 cú lick chuột (nhưng khá chậm).

16. Mediafire Searcher:
https://chrome.google.com/webstore/detail/nlnfnaeljdjgokoiijcnjjipadkhoodm

Thêm tiền tố site:mediafire.com + trên nội dung tìm kiếm file trên trang mediafire.

17. IE Tab: 
https://chrome.google.com/webstore/detail/hehijbfgiekmjfkfjpbkbammjbdenadd

Dành cho các bạn muốn xem các trang web chỉ hỗ trợ IE hay đơn giản là dọc cho vui :)

18. Google Translate: 
https://chrome.google.com/webstore/detail/jfppgkomfopklagggkjiaddgndkgopgl

Dịch cả trang web với 1 cú lick chuột. Nếu bạn đặt ngôn ngữ mặc định của Chrome là Vietnam thì chương trình sẻ tự động dịch sang ngôn ngữ đó.

19. Gmail Attachments To Drive: 
https://chrome.google.com/webstore/detail/epoohehjbaenldfbahgcegdmlogakgin

Dành cho các bạn xài Google Drive. Nó giúp hiển thị nút To Drive trong file đính kèm Gmail của bạn. Giúp bạn lưu file đính kèm đó vào ổ Drive của mình nhanh chóng.

20. Basic Calculator:
https://chrome.google.com/webstore/detail/ofhhhkkogamlfnmgkbjdddclagcfhlfh

Hiển thị một cái máy tính nhỏ cho bạn trên Chrome.

21. Auto Replay for YouTube: 
https://chrome.google.com/webstore/detail/kanbnempkjnhadplbfgdaagijdbdbjeb

Hiển thị nút Replay tại vị trí nút Play trên Youtube.

22. Download Assistant:

Cái này bạn phải cài vào máy mới xài được nè, mặc dù nó là 1 add-on. Nó giúp hiển thị 1 menu click phải để bạn download link trực tiếp và đưa link đó vào IDM.

Sẻ rất thuận tiện cho việc download bằng IDM đó.

Chúc các bạn vui vẻ khi sử dụng các add-on này !!
Khi copy các bạn nhớ để nguồn là của vietcnttit nhé !
- Google Translate Google : https://chrome.google.com/webstore/detail/jfppgkomfopklagggkjiaddgndkgopglDưới each lesson chia sẻ , each command response are has a node Dịch to help you .

Sử dụng pin và sạc laptop hợp lý nhất


"Nếu thường xuyên ngồi một chỗ thì bạn có thể sạc pin thật đầy rồi tháopin ra luôn và chỉ sử dụng bộ sạc", lời khuyên của chuyên gia nhằm kéodài tuổi thọ cho pin của máy tính xách tay được không ít báo đăng tải. Đáng tiếc rằng lời khuyên này có thể làm chiếc máy tính xách tay "chết bất đắc kỳ tử".

Lời khuyên này đã lập tức nhận được sự hưởng ứng của số đông người dùng bởi xu hướng sử dụng máy tính xách tay thay máy để bàn đang ngày càng gia tăng. Khi làm việc trong môi trường ít di chuyển thì điều mà nhiều người sử dụng băn khoăn là liệu có cần thiết phải lắp pin trong khi máy tính đặt gần nguồn điện, rất dễ dàng cắm sạc? Và nếu có thể tháo pin cất đi thì cũng đồng nghĩa với việc pin không phải làm việc nhiều, sạc ít lần, tuổi thọ của pin được kéo dài hơn, thời gian sử dụng của pin được lâu hơn...


Quan điểm cất pin đi sẽ vô cùng tai hại bởi chỉ một lần không may mắn, do nguồn điện lưới trồi sụt đột ngột hoặc do bộ sạc (adapter) sử dụng liên tục lâu ngày bị đoản mạch thì các bo mạch, chíp của máy sẽ "gánh chịu" rủi ro với nguy cơ chập cháy rất cao. Rủi ro còn là mất dữ liệu, lỗi file, lỗi phần mềm hệ thống khi máy không được lắp pin. Bởi trong tình huống mất điện thì pin sẽ thực hiện chức năng như một bộ lưu điện tức thời (UPS on-line).

Còn về quan điểm "sạc liên tục trong khi sử dụng sẽ làm chai pin hoặc nhanh hư" cũng lại không chính xác. Phần lớn máy tính hiện nay đều được thiết kế bộ chuyển mạch, tự động lựa chọn nguồn cấp phù hợp, ổn định và pin thế hệ mới. Điều này đồng nghĩa với việc những máy này có khả năng dùng nguồn trực tiếp từ bộ sạc, không cần lắp pin và nếu có lắp pin thì cũng tự động lựa chọn nguồn cấp từ bộ sạc khi dòng điện ổn định.

Vậy phương pháp sử dụng đúng mực nhất đó là sử dụng pin bình thường: Sạc đầy, dùng bộ sạc khi làm việc ở nhà, dùng pin khi di chuyển, vừa an toàn cho máy lại không phải "vất vả" vì pin.

Chú ý: chỉ tháo lắp pin trong tình trạng máy đã tắt hoàn toàn và không cắm sạc. Khi sạc pin, nên cắm đầu nguồn vào ổ điện trước, cắm đầu sạc vào máy sau. Cuối cùng, nếu thấy hiện tượng pin bị suy kiệt quá nhanh, nóng bất thường, bạn cần nghĩ tới việc vệ sinh lại các điểm tiếp xúc điện trên pin.

Dùng Pin Laptop như thế nào ?

Không nên đặt laptop trên giường đệm hay dùng gối thay cho mặt bàn đặt laptop vì chúng sẽ che mất khe thoát nhiệt bên dưới lap.

Không nên dán nilon phủ kín máy bởi vỏ máy cũng là một thành phần thoát nhiệt khá hữu ích.

Khi dùng xong, tắt máy nên đợi một vài phút mới cho máy vào túi hay balo bởi chúng giữ nhiệt khá tốt, nhiệt lượng còn trong Lap chưa được tỏa hết sẽ có hại cho máy.

Hạn chế sử dụng laptop đến cạn kiệt pin vì pin Li-ion dùng cho laptop không có hiệu ứng nhớ nên xảy ra tình trạng chai pin. Chính các nhà sản xuất đã hạn chế điều này khi chỉ cho laptop hoạt động khi pin > 5-10% dưới mức đó, máy sẽ tự động tắt.

Nếu laptop của bạn không có phần mềm quản lý pin, để tránh tình trạng pin sạc xả nhiều lần không đáng (ví dụ laptop còn 98% pin, nó sẽ tự sạc như vậy sẽ lãng phí số lần sạc xả) hãy cắm sạc liên tục. Điều này sẽ không gây hại vì khi pin đầy, mạch điện của pin sẽ tự ngắt, không cho sạc nữa.

Khi sử dụng pin, hãy dùng cho đến khi nó còn đến 10-20% hãy sạc lại, bởi nếu chỉ dùng vài % mà đã sạc ngay nhiều lần, số cell của pin không được dùng đến cũng tự chai.

Nếu cắm sạc thường xuyên cũng cố gắng định kỳ 1-2 tuần 1 lần sạc xả. (dùng gần hết rồi sạc đầy)
Nên vệ sinh mạch tiếp xúc của pin, tránh tình trạng tiếp xúc kém gây hỏng pin.

Những điểm cần lưu ý khác

Không nên tháo pin và sử dụng nguồn điện trực tiếp bởi nguồn điện trực tiếp không được ổn định, khi xảy ra sự cố sẽ gây ảnh hưởng đến công việc bạn đang làm và laptop (hỏng nguồn, main…) .

Không nên thường xuyên sử dụng đến mức 0% dung lượng, hãy thiết lập máy của bạn tự đi vào chế độ “ngủ đông” (hibernate) khi pin còn khoảng 5%-10% dung lượng.

Cân chỉnh lại “đồng hồ đo dung lượng pin” (re-calibrate) sau mỗi 3 tháng bằng cách sử dụng pin tới khi máy tự tắt do hết pin, rồi sau đó sạc đầy lại trước khi tiếp tục sử dụng bình thường.

Thủ thuật (re-calibrate) là gì ?

Sau một thời gian sử dụng, sẽ có hiện tượng mạch quản lý lượng pin không nhận đúng dung lượng pin (giống như đồng hồ chạy sớm/trễ), hoặc pin bị chai. Do đó, Recalibrate (điều chỉnh lại) sẽ giúp cải thiện vấn đề này.

Cách Re pin:

Cắm sạc đầy pin, sau đó rút sạc và dùng bình thường cho tới khi gần cạn pin, lúc còn khoảng 7 – 10% thì bạn khởi động lại máy và vào chế độ Bios, để nguyên máy đó tới lúc 0% và máy tự tắt vì cạn pin.

Để pin ở tình trạng 0% đó trong khoảng 6 – 8 tiếng, sau đó cắm sạc lại và dùng bình thường.

3 tháng nên Re nhưng cẩn thận hơn bạn nên dùng phần mềm. "Battery care " được xem là một phần mềm tốt đáp ứng cho việc này.


Nguồn: blogktv