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

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

这样就限制用户在规定的本地设置中进行操作,这个并不是很好的办法,但是够用就行了。

相关文章:

  • 2022-12-23
  • 2021-08-26
  • 2021-04-19
  • 2022-12-23
  • 2021-09-08
  • 2022-12-23
  • 2022-12-23
  • 2021-12-02
猜你喜欢
  • 2021-11-29
  • 2021-05-19
  • 2021-12-08
  • 2021-07-24
  • 2022-12-23
  • 2021-09-27
  • 2021-12-04
相关资源
相似解决方案