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

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

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

这样就限制用户在规定的本地设置中进行操作,这个并不是很好的办法,但是够用就行了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值