您的位置:程序门 -> vb -> 基础类



vb程序在其他语言的windows里出现错误


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


[向提问]vb程序在其他语言的windows里出现错误[无满意答案结贴]
发表于:2008-01-30 21:11:37 楼主
我用vb6.0编写了一个简单的串口读写程序!里面用到以下几个api函数
1.private   declare   function   setwindowpos   lib   "user32"   (byval   hwnd   as   long,   byval   hwndinsertafter   as   long,   byval   x   as   long,   byval   y   as   long,   byval   cx   as   long,   byval   cy   as   long,   byval   wflags   as   long)   as   long
2.public   declare   function   findwindow   lib   "user32"   alias   "findwindowa"   (byval   lpclassname   as   string,   byval   lpwindowname   as   long)   as   long
3.public   declare   function   sendmessage   lib   "user32"   alias   "sendmessagea"   (byval   hwnd   as   long,   byval   wmsg   as   long,   byval   wparam   as   long,   lparam   as   any)   as   long

4.public   declare   function   readcpuid   lib   "rcpuid.dll"   ()   as   string
5.public   declare   function   regist   lib   "rcpuid.dll"   (byval   userid   as   string,   byval   registid   as   string)   as   long
6.public   declare   function   getprivateprofileint   lib   "kernel32"   alias   "getprivateprofileinta"   (byval   lpapplicationname   as   string,   byval   lpkeyname   as   string,   byval   ndefault   as   long,   byval   lpfilename   as   string)   as   long
7.public   declare   function   getprivateprofilestring   lib   "kernel32"   alias   "getprivateprofilestringa"   (byval   lpapplicationname   as   string,   byval   lpkeyname   as   any,   byval   lpdefault   as   string,   byval   lpreturnedstring   as   string,   byval   nsize   as   long,   byval   lpfilename   as   string)   as   long
8.public   declare   function   writeprivateprofilestring   lib   "kernel32"   alias   "writeprivateprofilestringa"   (byval   lpapplicationname   as   string,   byval   lpkeyname   as   any,   byval   lpstring   as   any,   byval   lpfilename   as   string)   as   long
9.public   declare   sub   sleep   lib   "kernel32"   (byval   dwmilliseconds   as   long)
其中rcpuid.dll为我自己编写的一个读cpu序列号的动态库(用delphi编写的),软件在中文windows2000/xp,office2000/2003/2007下测试通过!但是在土耳其语的windows上运行时出错“runtime   error   216   at   01631e70”起初我以为是他们的系统丢失文件,于是让他们拷贝了以下文件user32.dll,rcpuid.dll,kernel32.dll,mscomm32.ocx到他们的系统中并用regsvr32注册,结果问题依旧,请各位高手帮忙,因为这边我没有他们哪鸟语版的windows,软件通过tscale.xla启动,请各位帮帮忙了!分多多的给!
发表于:2008-01-30 22:15:111楼 得分:0
帮顶
发表于:2008-01-30 22:26:152楼 得分:0
程序源码在下面这个连接
http://d.download.csdn.net/down/276701/clark_m
谢谢大家,请各位帮忙了!
发表于:2008-01-31 01:21:533楼 得分:0
给你些提示,看看有没有帮助。

1、一些恶意程序可能引起这种问题,一些组件没有注册也可能引起这种问题,最好新安装操作系统来测试;
2、一些欧洲语言的操作系统中program   files及common   files目录的名称可能不是这样拼写,其中可能含有特殊字符;
3、如果程序中需要multibyte和unicode相互转换,代码页应使用cp_oemcp;
4、vb6和delphi我都不太熟,有几个地方不知道你写的是否正确。findwindow   lib   "user32"   alias   "findwindowa"这样的定义是调用findwindowa还是findwindoww?api中多数参数是dword形(4字节),vb6中的long是4字节还是8字节?vb6中的string和delphi能通用吗?不过你既然已经在中文环境下测试通过,这些部分看起来应该不会有问题。

此外,最好能够明确找出问题出在什么位置,这样才好分析。
发表于:2008-01-31 20:26:334楼 得分:0
谢谢楼上的关注!这个程序在几个国家的语言版本的windows使用都没有问题,就是在土耳其的有问题,因为我们公司是做电子称的,所以软件在许多国家有用,据土耳其的人讲在十几个电脑上使用都同样有这样的问题!现在就差叫上海的土国人过来了!郁闷中呀!


快速检索

最新资讯
热门点击