Option Explicit Private Const IS_TEXT_UNICODE_ASCII16 = &H1 Private Const IS_TEXT_UNICODE_CONTROLS = &H4 Private Const IS_TEXT_UNICODE_DBCS_LEADBYTE = &H400 Private Const IS_TEXT_UNICODE_ILLEGAL_CHARS = &H100 Private Const IS_TEXT_UNICODE_NOT_ASCII_MASK = &HF000 Private Const IS_TEXT_UNICODE_NOT_UNICODE_MASK = &HF00 Private Const IS_TEXT_UNICODE_NULL_BYTES = &H1000 Private Const IS_TEXT_UNICODE_ODD_LENGTH = &H200 Private Const IS_TEXT_UNICODE_REVERSE_ASCII16 = &H10 Private Const IS_TEXT_UNICODE_REVERSE_CONTROLS = &H40 Private Const IS_TEXT_UNICODE_REVERSE_MASK = &HF0 Private Const IS_TEXT_UNICODE_REVERSE_SIGNATURE = &H80 Private Const IS_TEXT_UNICODE_REVERSE_STATISTICS = &H20 Private Const IS_TEXT_UNICODE_SIGNATURE = &H8 Private Const IS_TEXT_UNICODE_STATISTICS = &H2 Private Const IS_TEXT_UNICODE_UNICODE_MASK = &HF Private Declare Function IsTextUnicode Lib "advapi32" (ByVal lpBuffer As String, ByVal cb As Long, lpi As Long) As Long Private Declare Function IsTextPointerUnicode Lib "advapi32" Alias "IsTextUnicode" (ByVal lpBuffer As Long, ByVal cb As Long, lpi As Long) As Long Private Sub Form_Load() 'KPD-Team 2001 'URL: http://www.allapi.net/ 'E-Mail: KPDTeam@Allapi.net Dim MyString As String MyString = "Hello" 'This example shows the difference between passing a string as 'String' to an API function 'or passing a string as 'Long'. 'If you pass a string as 'String', VB will convert the unicode string to ANSI first. Debug.Print "Is the parameter (passed as String) unicode? " & CBool(IsTextUnicode(MyString, Len(MyString), IS_TEXT_UNICODE_STATISTICS)) Debug.Print "Is the parameter (passed as Long) unicode? " & CBool(IsTextPointerUnicode(StrPtr(MyString), Len(MyString), IS_TEXT_UNICODE_STATISTICS)) End Sub |