看你知道不知道之-限制軟體在規定的本地設定中運行

來源:互聯網
上載者:User
今天在處理一段程式的時候發現了一些異常情況,就是如果控制台中的設定採用的是簡體中文,程式運行正常,但是如果採用了英文或者其它國家的設定系統就報錯誤。

一般發生這種錯誤主要是因為程式與控制台中的本地設定關係太緊,例如日期格式、本地的金融符號等,但是我的程式是採用RC6的演算法進行一些字串的加密,如果加解密的兩端,本地設定不一樣,解出來的內容就不一致。

呵呵,我的解決辦法是限制使用者必須是在簡體中文的環境中使用,反正都是中國人使用,這樣我就偷懶了,採用的如下代碼。

'讀取本地的語言碼
Private Const LOCALE_USER_DEFAULT = &H400
Private Const LOCALE_ILANGUAGE = &H1
Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long

'獲得本地語言碼
Private Function GetLocalLanguageCode() As String
    Dim buffer As String * 100
    Dim dl As Long
    
    #If Win32 Then
        dl = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_ILANGUAGE, buffer, 99)
        GetLocalLanguageCode = LPSTRToVBString(buffer)
    #End If

End Function

'轉換字串
Private Function LPSTRToVBString(ByVal s As String) As String
    Dim nullpos As Long
    nullpos = InStr(s, Chr(0))
    If nullpos > 0 Then
        LPSTRToVBString = Left$(s$, nullpos - 1)
    Else
        LPSTRToVBString = ""
    End If
End Function

'應用如下
    If GetLocalLanguageCode <> "0804" Then
        MsgBox "本地控制台設定錯誤,必須將控制台設定為中文簡體.", vbCritical, "提示"
        End
    End If

這樣就限制使用者在規定的本地設定中進行操作,這個並不是很好的辦法,但是夠用就行了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.