当前位置: 首页 > news >正文

做分子生物实验常用网站平台代理商

做分子生物实验常用网站,平台代理商,王野发动机怎么样,供别人采集的网站怎么做前段时间#xff0c;同学接了一个项目#xff0c;在网页上显示autoCAD的图。在做项目的过程中#xff0c;遇到一个棘手的问题。在使用vb语言开发的第三方插件中#xff0c;有一个函数是地址传值的方式传参。想在js中调用该函数#xff0c;但是#xff0c;js不支持类似指针… 前段时间同学接了一个项目在网页上显示autoCAD的图。在做项目的过程中遇到一个棘手的问题。在使用vb语言开发的第三方插件中有一个函数是地址传值的方式传参。想在js中调用该函数但是js不支持类似指针的概念。后来在网上百度发现可以使用dll封装的方式解决该问题。即把这个ocx插件用Activex封装一层。 JavaScript – ActiveX – 第三方ocx。  做一个ActiveX来调用第三方ocx给它来个引用传递就行了。详见http://blog.sina.com.cn/s/blog_704d0c1c0100mft7.html   在制作该dll的过程中遇到了很多问题。开发环境为vb。首先打开vb选择新建AvtiveX dll。在出来的界面中编写代码。 dll是一个函数库他不能独立运行没有main函数。但是dll有一个dllMain函数该该函数即为该dll的入口函数。如果缺少该入口函数那么该dll在加载的时候即会报”找不到入口点 dllRegisterServer“的错误。 Public Function DllMain(ByVal hInst As Long, ByVal fdwReason As Long, ByVal lpvReserved As Long) As Boolean Select Case fdwReason Case DLL_PROCESS_DETACHCase DLL_PROCESS_ATTACH DllMain True Case DLL_THREAD_ATTACHCase DLL_THREAD_DETACHEnd SelectEnd Function   在添加了dllMain入口函数后又出现了问题即在调用dll中的函数时在js报“对象不支持此属性或方法的错误”。经过一番调试找到了错误所在DllMain函数没有处理线程加载的情况。修改DllMain函数 Public Function DllMain(ByVal hInst As Long, ByVal fdwReason As Long, ByVal lpvReserved As Long) As BooleanSelect Case fdwReasonCase DLL_PROCESS_DETACHCase DLL_PROCESS_ATTACHDllMain TrueCase DLL_THREAD_ATTACH DllMainTrue Case DLL_THREAD_DETACHEnd SelectEnd Function                                   至于dll文件的编译参考     转帖] VB创建能作为输出函数的DLL DLL, 函数, 输出 QQ594363468   DLL文件即Dynamic Link Library动态链接库作为系统的一个重要的组成部分除了一些小程序外我们几乎能在所有软件中看到DLL文件而且如果使用VB写的一些收费软件有一个DLL代替关键函数想破解都难了。因此我们就有必要来学习如何编写DLL。 对于很多初学VB的网友来说VB是一门比较简单的语言而MicroSoft公司在开发VB时也增添了很多功能。所以我个人觉得VB除了部分不足之外还是挺不错的当然我指的不足是主要是VB运行库方面的问题。 对于很多VB初学者来说都会有这么一个错误的认识——VB中创建的DLL只是COM组件无法作为输出函数的DLL即VB写的DLL是不完整的DLL。然而对于一些VB的高手来说,他们就知道应该如何写具有返回值的DLL。其实国外早已经有人做出了在VB中制作标准DLL的Add-Ins了而且在网上也有对于写VB创建能作为输出函数的DLL的相关文章。今天我再来讲讲这个话题——VB创建能作为输出函数的DLL   对于VB编写DLL按照我的经验主要分为两步一、“安内”二、“攘外”   首先“攘外必先安内” 我们要知道如何使DLL拥有一个能被调用的API函数。很简单我不想多说就是在Module里面写一个Public的Function   接下来我们就可以“攘外”了   那么先来介绍一下编译技术   编译器的编译技术可以分为Native Compile自然编译与P-Code Compile伪编译两种。     自然编译是编译器将高级语言转换为汇编代码并经链接生成EXE程序的过程。     伪编译是编译器将高级语言转换为某种编码后将能解释、执行此编码的一段程序一同链接生成EXE程序。     伪代码P-Code最早应该叫做Pascal-Code其名称起源于一个Pascal编译器使用的“中间代码”编译技术。现在一般作为Pseudo-code伪代码或Packed-code压缩代码简称。 采用伪代码编译时每个VB源文件包括.frm窗体、.bas标准模块、.cls类模块经VB IDE编译后各自生成相应的.obj文件交链接程序Link.exe生成伪编译的可执行文件EXE、DLL、OCX等。     而用自然编译时每个VB源文件由C2.exe编译生成汇编代码生成相应的obj文件再由Link.exe链接成为完整的可执行文件。   别看编译只有两步其实有大玄奥在里头。。。 MicroSoft公司可以说是十分的狡猾因为在默认的方式下VB编译的两步使用到的命令行都是他们设定好的所以跳过了很多有用的部分包括我们今天讲的输出函数部分。如果在LINK的时候添加EXPORT选项实际上是可以输出函数的。但是在VBLinkd的命令行中将这个选项部分跳过了。而且过分的是VB在构造EXE后会将编译出来的OBJ文件删除这样就无法手动通过Link来创建我们需要的DLL了。   根据前人的方法加上自己修改用一个比较龌龊的方法来变通   打开“VB6.0”新建一个“标准EXE 工程”把Form移除添加一个Module 在模块里输入一下代码       Sub Main()          If Command   Then Exit Sub 命令行不为空          Dim intCMD As Integer          Clipboard.Clear 清空剪贴板          Clipboard.SetText Command 将命令行复制到剪贴板          去掉 复制到剪贴板 LINK  速度会快些          intCMD  MsgBox(编译命令行如下:  vbCrLf  Command  vbCrLf  点击“是”继续编译点击“否”编译DLL点击“取消”中断编译, vbYesNoCancel  vbInformation, 编译)          Select Case intCMD              Case vbYes 选择“是” 继续编译                  Shell VBLINK   Command, vbHide              Case vbNo 选择“否”                  Dim FuncName As String, cmd As String, l As Integer                  FuncName  InputBox(请输入 输出的函数名称(对个函数 请用英文半角分号“;”分开), _                  非法操作出错我不管) 模块内能编译出来的输出函数名                  修改命令行                  If FuncName   Then Exit Sub                  Do                      FuncName  Replace(FuncName, ;,  /EXPORT:)                  Loop Until 0  InStr(FuncName, ;)                  l  InStr(Command, vbaS)                  cmd  Left(Command, l  4)  /EXPORT:  FuncName  Right(Command, Len(Command) - l - 3)                  Shell VBLINK   cmd, vbHide              Case vbCancel 中断编译                  Exit Sub          End Select      End Sub  大家可能看出来了,  没错  就是在每个输出函数前加/EXPORT:        生成MyLink.exe复制到VB的安装文件夹里把安装文件夹的LINK.EXE改成VBLink.exe把我们写的MyLink.exe改成Link.exe       到这一步你应该懂了吧。。。       来做个示例   我新建了一个ActiveX DLL的工程添加了一个Module写了一个Public的Function如下 Public Function Add(ByVal A As Long) As Long    Add  A  A End Function   生成“E:\Math.dll”   被截获的命令行VB默认命令行如下 E:\Class1.OBJ E:\Module1.OBJ E:\Math.OBJ C:\Program Files\Microsoft Visual Studio\VB98\VBAEXE6.LIB /ENTRY:__vbaS /OUT:E:\Math.dll /BASE:0x11000000 /SUBSYSTEM:WINDOWS,4.0 /VERSION:1.0 /DLL /INCREMENTAL:NO /OPT:REF /MERGE:.rdata.text /IGNORE:4078   修改后命令行修改后的命令行如下 E:\Class1.OBJ E:\Module1.OBJ E:\Math.OBJ C:\Program Files\Microsoft Visual Studio\VB98\VBAEXE6.LIB /ENTRY:__vbaS /EXPORT:Add /OUT:E:\Math.dll /BASE:0x11000000 /SUBSYSTEM:WINDOWS,4.0 /VERSION:1.0 /DLL /INCREMENTAL:NO /OPT:REF /MERGE:.rdata.text /IGNORE:4078    大家对比两行命令可以发现在/ENTRY:_vbaS后面我增加了/EXPORT:Add这就是关键所在   现在我又新建了一个EXE工程加一个VB API声明代码部分   Private Declare Function Add Lib E:\Math.dll (ByVal A As Long) As Long API声明   Private Sub Form_Load()    MsgBox Add(2) End Sub   看到效果没成功了吧   至于String型么投递时StrConv(String,vbUnicode )返回时StrConv(String,vbFromUnicode )   学了这个大家不知道有没有什么心得呢当然这个要看个人悟性的问题。师父领进门修行在个人嘛何况还是被我这种半调子的菜鸟教呢   这个...天好蓝...水好清...外挂...Winsock...API...DLL...监视API的值...修改...嘿嘿...我什么都没说   如果遇到不懂的地方...就来问我啊...QQ594363468               dll的注册在cmd中执行Regsvr32 *.dll 注册之后即可使用。 查看ProggId 的方法 在网上下载一个叫OLEVIEW的软件在其中查找你的dll注册信息。一般来讲你的dll应该在Automation  Objects中名字和你做dll时的工程名一样     转载于:https://www.cnblogs.com/elnino/archive/2013/01/13/2858635.html
http://www.pierceye.com/news/91425/

相关文章:

  • 公众号做微网站吗做国外网站的站长
  • 现在网站优化app程序开发定制
  • 德阳网站怎么做seowordpress app 插件
  • 水文化建设网站网站排名优化公司哪家好
  • 网站图片的暗纹是怎么做的做家教中介 不建网站怎么做
  • 学校网站建设价格明细表淮安网站网站建设
  • 怎样做代刷网站长电子商务网站开发费用入账
  • 网站健设推广产品多少钱商业网站开发的实训小结怎么写
  • 优秀的网站建设推荐做百度推广是网站好还是阿里好
  • 响应式网站开发费用做不规则几何图形的网站
  • 西安网站建设优化集团门户网站建设不足
  • 深圳建网站的公企业做网站有什么用
  • wordpress插件 2017南宁seo排名外包
  • 在淘宝上开网店的详细步骤丹东网站seo
  • 网站建设外包公司招聘发帖子有哪些app平台
  • 网站风格发展趋势快设计
  • 稳定的网络建站咨询电话正规网站建设咨询电话
  • 请人代做谷歌外贸网站做购彩网站是怎么盈利的
  • 网站内链怎么删除wordpress如何下载
  • 深圳网站公司有了域名搭建网站详细步骤
  • 主机宝 建设网站怎么知道网站哪家公司做的
  • 1元做网站方案城乡建设住房建设厅官方网
  • 厦门网站网页设网页素材html
  • 活字格能开发企业网站吗商品门户网站解决方案
  • 网站虚拟主机内存不足能不能链接美工怎么做网站效果图
  • 网站版建设软件开发培训班有哪些
  • 舟山市城市建设档案馆网站武夷山景区网站建设特点
  • 北京建设工程质量总站网站哈尔滨网站只做
  • 做外单网站有哪些网站开发工程师需要什么技术
  • 跨境电商自己做网站引流会宁县建设局网站