看你知道不知道之-限制软件在规定的本地设置中运行

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

一般发生这种错误主要是因为程序与控制面板中的本地设置关系太紧,例如日期格式、本地的金融符号等,但是我的程序是采用RC6的算法进行一些字符串的加密,如果加解密的两端,本地设置不一样,解出来的内容就不一致。

呵呵,我的解决办法是限制用户必须是在简体中文的环境中使用,反正都是中国人使用,这样我就偷懒了,采用的如下代码。

None.gif'读取本地的语言码
None.gif
Private Const LOCALE_USER_DEFAULT = &H400
None.gif
Private Const LOCALE_ILANGUAGE = &H1
None.gif
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
None.gif
None.gif
'获得本地语言码
None.gif
Private Function GetLocalLanguageCode() As String
None.gif    
Dim buffer As String * 100
None.gif    
Dim dl As Long
None.gif    
None.gif    #
If Win32 Then
None.gif        dl 
= GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_ILANGUAGE, buffer, 99)
None.gif        GetLocalLanguageCode 
= LPSTRToVBString(buffer)
None.gif    #
End If
None.gif
None.gif
End Function
None.gif
None.gif
'转换字符串
None.gif
Private Function LPSTRToVBString(ByVal s As StringAs String
None.gif    
Dim nullpos As Long
None.gif    nullpos 
= InStr(s, Chr(0))
None.gif    
If nullpos > 0 Then
None.gif        LPSTRToVBString 
= Left$(s$, nullpos - 1)
None.gif    
Else
None.gif        LPSTRToVBString 
= ""
None.gif    
End If
None.gif
End Function
None.gif
None.gif
'应用如下
None.gif
    If GetLocalLanguageCode <> "0804" Then
None.gif        
MsgBox "本地控制面板设置错误,必须将控制面板设置为中文简体.", vbCritical, "提示"
None.gif        
End
None.gif    
End If

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值