首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

关于使用winsock的疑惑,为何表单中加入控件可以,可是用代码创建就不行呢?该如何处理

2012-02-21 
关于使用winsock的疑惑,为何表单中加入控件可以,可是用代码创建就不行呢?关于使用winsock的疑惑,为何表单

关于使用winsock的疑惑,为何表单中加入控件可以,可是用代码创建就不行呢?
关于使用winsock的疑惑,为何表单中加入控件可以,可是用代码创建就不行呢?
我用以下代码创建winsock对象,在开发的机器上一切正常,但是将程序放在没有安装vfp的机器上,运行时失败
ox=Createobject("MSwinsock.Winsock")
失败的提示是授权原因,具体的提示我记不清了,反正是未授权的意思。
我怀疑是控件注册的问题,将winsock重新注册,也不行,看来不是注册的问题了。
我再次回到装有vfp的机器上,将代码创建winsock对象的方法去除,在表单上放上一个winsock控件,编译成exe再放到另一台机器上(就是刚才报错的机器上)运行,却成功执行了。这也证明,那台机器上的winsock控件的注册是一点问题也没有的。
我不明白这是为什么?
我又想到另一种测试办法,我测试vbs文件能否正常执行,发现,那台机器上,无法正常执行下面的代码,就是vbs文件中的代码:

VBScript code
Dim WSSet WS=CreateObject("MSWinsock.Winsock")IPAddress=WS.LocalIPMsgBox "Local IP=" & IPAddressMsgBox "Local IP=" & ws.localhostname




[解决办法]
MS 很多控件都有这种设计/运行时授权的限制,要动态创建这些对象,运行的机器上必须有授权许可,而拖入表单中的控件已携带了授权许可,所以不需要。把下列内容保存到一个 vbctrls.reg 文件中,然后双击它导入注册表,即可拥有动态创建时的授权许可:

Windows Registry Editor Version 5.00 

[HKEY_CLASSES_ROOT\Licenses] 
@="Licensing: Copying the keys may be a violation of established copyrights." 

[HKEY_CLASSES_ROOT\Licenses\12B142A4-BD51-11d1-8C08-0000F8754DA1] 
@="aadhgafabafajhchnbchehfambfbbachmfmb" 

[HKEY_CLASSES_ROOT\Licenses\190B7910-992A-11cf-8AFA-00AA00C00905] 
@="gclclcejjcmjdcccoikjlcecoioijjcjnhng" 

[HKEY_CLASSES_ROOT\Licenses\1F3D5522-3F42-11d1-B2FA-00A0C908FB55] 
@="gcfjdjecpchcncdjpdejijgcrdoijjfcieod" 

[HKEY_CLASSES_ROOT\Licenses\2c49f800-c2dd-11cf-9ad6-0080c7e7b78d] 
@="mlrljgrlhltlngjlthrligklpkrhllglqlrk" 

[HKEY_CLASSES_ROOT\Licenses\4250E830-6AC2-11cf-8ADB-00AA00C00905] 
@="kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun" 

[HKEY_CLASSES_ROOT\Licenses\4D553650-6ABE-11cf-8ADB-00AA00C00905] 
@="gfjmrfkfifkmkfffrlmmgmhmnlulkmfmqkqj" 

[HKEY_CLASSES_ROOT\Licenses\4F86BADF-9F77-11d1-B1B7-0000F8753F5D] 
@="iplpwpnippopupiivjrioppisjsjlpiiokuj" 

[HKEY_CLASSES_ROOT\Licenses\57CBF9E0-6AA7-11cf-8ADB-00AA00C00905] 
@="aahakhchghkhfhaamghhbhbhkbpgfhahlfle" 

[HKEY_CLASSES_ROOT\Licenses\6FB38640-6AC7-11cf-8ADB-00AA00C00905] 
@="gdjkokgdldikhdddpjkkekgknesjikdkoioh" 

[HKEY_CLASSES_ROOT\Licenses\72E67120-5959-11cf-91F6-C2863C385E30] 
@="ibcbbbebqbdbciebmcobmbhifcmciibblgmf" 

[HKEY_CLASSES_ROOT\Licenses\73A4C9C1-D68D-11d0-98BF-00A0C90DC8D9] 

[HKEY_CLASSES_ROOT\Licenses\73A4C9C1-D68D-11d0-98BF-00A0C90DC8D9\11.0] 

[HKEY_CLASSES_ROOT\Licenses\73A4C9C1-D68D-11d0-98BF-00A0C90DC8D9\11.0\Retail] 
@="sbbcdcprktpjtapmmfdacmupasbhscddncgp" 

[HKEY_CLASSES_ROOT\Licenses\78E1BDD1-9941-11cf-9756-00AA00C00908] 
@="yjrjvqkjlqqjnqkjvprqsjnjvkuknjpjtoun" 

[HKEY_CLASSES_ROOT\Licenses\7C35CA30-D112-11cf-8E72-00A0C90F26F8] 
@="whmhmhohmhiorhkouimhihihwiwinhlosmsl" 

[HKEY_CLASSES_ROOT\Licenses\80E80EF0-DBBE-11D0-BCE2-00A0C90DCA10] 
@="qijimitpmpnpxplpvjnikpkpqoxjmpkpoivj" 

[HKEY_CLASSES_ROOT\Licenses\899B3E80-6AC6-11cf-8ADB-00AA00C00905] 
@="wjsjjjlqmjpjrjjjvpqqkqmqukypoqjquoun" 

[HKEY_CLASSES_ROOT\Licenses\9E799BF1-8817-11cf-958F-0020AFC28C3B] 
@="uqpqnqkjujkjjjjqwktjrjkjtkupsjnjtoun" 

[HKEY_CLASSES_ROOT\Licenses\B1EFCCF0-6AC1-11cf-8ADB-00AA00C00905] 
@="qqkjvqpqmqjjpqjjvpqqkqmqvkypoqjquoun" 

[HKEY_CLASSES_ROOT\Licenses\BC96F860-9928-11cf-8AFA-00AA00C00905] 
@="mmimfflflmqmlfffrlnmofhfkgrlmmfmqkqj" 



[HKEY_CLASSES_ROOT\Licenses\BEA2ED97-562A-4510-974C-C4F20AE429AD] 
"1"=hex:d2,00,57,01,18,01,7e,01,de,00,77,01,a5,00,9a,00,e1,00,16,01,9d,00,f1,\ 
00,4e,01,73,00,30,01,5c,00,23,01,c5,00 

[HKEY_CLASSES_ROOT\Licenses\CDE57A55-8B86-11D0-b3C6-00A0C90AEA82] 
@="ekpkhddkjkekpdjkqemkfkldoeoefkfdjfqe" 

[HKEY_CLASSES_ROOT\Licenses\CEDD4F80-B43C-11cf-837C-00AA00573EDE] 
@="gxwaezucfyqpwjgqbcmtsncuhwsnyhiohwxz" 

[HKEY_CLASSES_ROOT\Licenses\DC4D7920-6AC8-11cf-8ADB-00AA00C00905] 
@="iokouhloohrojhhhtnooiokomiwnmohosmsl" 

[HKEY_CLASSES_ROOT\Licenses\E32E2733-1BC5-11d0-B8C3-00A0C90DCA10] 
@="kmhfimlflmmfpffmsgfmhmimngtghmoflhsg" 

[HKEY_CLASSES_ROOT\Licenses\ED4B87C4-9F76-11d1-8BF7-0000F8754DA1] 
@="knlggnmntgggrninthpgmnngrhqhnnjnslsh" 


[解决办法]
在开发的机器上(安装了VFP)运行正常,而在没安装VFP的机子运行却提示“类别未授权使用”

因为开发的机子安装VFP时,取得了OCX授权,而在未安装VFP的机器上没有取得OCX授权

使用纯代码建立winsock对象,对于开发的那台机器没问题,别的机器都用不了。

所以这不是ocx的注册问题,而是ocx的授权问题。



解决方法:

对于mswinsck.ocx来说,如果想不报错,请不要用纯代码来建立winsock对象,改用可视化,即把这个ocx拖到表单上。

因为可视化建立的winsock连编成EXE时会自动带上授权密钥.

热点排行