zoukankan      html  css  js  c++  java
  • 看你知道不知道之-限制软件在规定的本地设置中运行

    今天在处理一段程序的时候发现了一些异常情况,就是如果控制面板中的设置采用的是简体中文,程序运行正常,但是如果采用了英文或者其它国家的设置系统就报错误。

    一般发生这种错误主要是因为程序与控制面板中的本地设置关系太紧,例如日期格式、本地的金融符号等,但是我的程序是采用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 LongAs 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 StringAs 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

    这样就限制用户在规定的本地设置中进行操作,这个并不是很好的办法,但是够用就行了。
  • 相关阅读:
    C++11多线程
    C++单例模式
    从五大结构体,带你掌握鸿蒙轻内核动态内存Dynamic Memory
    云小课 | 云硬盘不用了如何处理?
    Kafka 源码解析:Server 端的运行过程
    带你掌握4种Python 排序算法
    面试官问我:如何减少客户对交付成果的质疑
    如何基于MindSpore实现万亿级参数模型算法?
    Go 接口类型
    Go 结构体
  • 原文地址:https://www.cnblogs.com/Duiker/p/368463.html
Copyright © 2011-2022 走看看