TC官方合作论坛

 找回密码
 立即注册
查看: 3042|回复: 5

强烈要求提供---《一个标准的插件注册和绑定的例子》

[复制链接]
发表于 2012-4-14 11:16:15 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
大漠的《大漠插件接口说明》为按键精灵8为例做的---《一个标准的插件注册和绑定的例子》说得详细,用起来方便,只要CTRL+C,CTRlL+V就实现大漠的设置,自己修改起来也很方便,TC能否提供这样的代码,是能否留住从按键精灵转过来的E文小白的关键,静坐等待........................
回复

使用道具 举报

发表于 2012-4-14 14:57:39 | 显示全部楼层
看TC帮助文档,有详细的说明:~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-4-14 17:35:46 | 显示全部楼层
大漠插件里的说明 (包含,注册,字库设置,附件释放)
这里只以按键8作为例子,其它语言都类似。
// 首先打包dm.dll和RegDll.dll到附件,当然如果你还有其它资源(字库,图片等)也可以一并打包
// 这个need_ver作为本脚本需要使用的插件版本. 如果要换插件时,记得更改这个值.

need_ver = "3.1210B"



// 释放附件>>>>>>>>>>>>>>>>>>>

// 这里选择c盘的test­_game作为插件的基本目录 也就是SetPath对应的目录。所以所有资源都释放在此目录.

PutAttachment "c:\test_game","*.*"

// 这里要用到RegDll来注册插件,所以必须释放到Plugin. 但是切记不能把dm.dll释放到Plugin.那会导致插件失效.

PutAttachment ".\Plugin" ,"RegDll.dll"



// 插件注册开始>>>>>>>>>>>>>>>>>>>

// 下面开始注册插件,先尝试用RegDll来注册.这里必须使用绝对路径。以免有别人把dm.dll释放在系统目录.造成版本错误.

Call Plugin.RegDll.Reg("c:\test_game\dm.dll")



// 这里判断是否注册成功

set dm = createobject("dm.dmsoft")

ver = dm.Ver()

if ver <> need_ver then

// 先释放先前创建的dm

set dm = nothing

   // 再尝试用regsvr32 来注册. 这里必须使用绝对路径。以免有别人把dm.dll释放在系统目录.造成版本错误.

set ws=createobject("Wscript.Shell")
ws.run "regsvr32 c:\test_game\dm.dll /s"
set ws=nothing
Delay 1500  



// 再判断插件是否注册成功

set dm = createobject("dm.dmsoft")

ver = dm.Ver()

if ver <> need_ver then

// 这时,已经确认插件注册失败了。 弹出一些调试信息,以供分析.

messagebox "插件版本错误,当前使用的版本是:"&ver&",插件所在目录是:"&dm.GetBasePath()

messagebox "请关闭程序,重新打开本程序再尝试"

    endscript

  end if

end if

// 插件注册结束<<<<<<<<<<<<<<<



// 收费注册开始,简单游作者不需要这一段(加了也没关系,不会扣费),非简单游平台付费作者必须添加>>>>>>>>>>>>>>>

// 当然,如果是在按键精灵上使用,这段代码是可以注释掉。大部分功能可以直接在按键平台使用。无须注册.

// ok,这里已经确认插件注册成功,并且创建了对象,下面开始注册收费服务

dm_ret = dm.RegEx("abcdefg","0001") // abcdefg是您的注册码. 在大漠插件网站后台可以直接获取.

if dm_ret <> 1 then

   messagebox "注册失败,返回值是:"&dm_ret

   endscript

end if

// 收费注册结束<<<<<<<<<<<<<<<<



//这里设置插件基本目录

dm.SetPath "c:\test_game"



// 获取句柄

hwnd = dm.GetMousePointWindow()



// 绑定

dm_ret = dm.BindWindow(hwnd,"dx","dx","dx",0)



// 检测绑定返回值

if dm_ret = 0 then

   last_error = dm.GetLastError()

// 如果是WIN7 VISTA WIN2008系统,检测当前系统是否有开启UAC
   if dm.GetOsType() = 3 then

    // 有开启UAC的话,尝试关闭

if dm.CheckUAC() = 1 then

     if dm.SetUAC(0) = 1 then

          // 关闭UAC之后,必须重启系统才可以生效

          messagebox "已经关闭系统UAC设置,必须重启系统才可以生效。点击确定重启系统"

         dm.ExitOs 2
                 Delay 2000

         endscript

     end if

end if
   end if

   // 具体错误码的含义,可以参考函数GetLastError的说明.

   messagebox "绑定失败,错误码是:"&last_error
   messagebox "如果确定关闭了UAC,很可能是系统的防火墙拦截插件,请暂时关闭360等安全防火墙再尝试"

   endscript

end if





// 下面就是脚本部分了 省略





// 下面这是脚本结束时执行的部分

Sub OnScriptExit()

   dm.UnBindWindow

End Sub



// 结束



另外特别要注意,不要把dm.dll释放到Plugin目录,那样会导致插件在
更新版本时出现注册失败的情况。特别是在简单游平台.建议释放到C盘的
某个目录比如Test目录等.



另外,别的高级语言如何调用dm.dll,请百度XXXX语言如何调用Active X 对象.

目前经过测试的语言可以正常调用的有vc6 vb6 delphi 易,别的语言想必也不会有问题.



从2.1118B版本之后,大漠插件将禁止释放到Plugin目录,以避免一系列升级产生的BUG!
同时,也禁止用Plugin方式来调用插件,那个方式也是非常不安全的.
请大家严格按照vbs的语法来使用插件.



如果是多线程使用大漠插件,必须每个线程都要创建一个dm对象.

注册过程脚本开始时,执行一次就行了,没必要每个线程都执行.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-4-14 17:36:45 | 显示全部楼层
我们模仿这也搞一个吧,说明详细点
回复 支持 反对

使用道具 举报

发表于 2012-4-16 15:54:38 | 显示全部楼层
回复 4楼hst的帖子

我们的插件调用没这么麻烦,
1、辅助.注册插件("C:\\dm.dll",真) //注册了可以省略这一步,dll路径根据你dll实际位置填写
2、#import "dm.dmsoft" AAA  //dm.dmsoft 是大漠插件的接口 创建了一个调用大漠的对象 对象名为AAA,这个可以自定义,只要不和系统原有保留关键字冲突即可
3、AAA.大漠方法 如 FindWindow("","1.txt - 记事本")
回复 支持 反对

使用道具 举报

发表于 2012-4-20 15:44:07 | 显示全部楼层
xp系统出错了,在初始化函数里注册dm.dll,结果未显示注册失败,也就是注册成功了,但程序运行还是错误,非得regsvr32 dm.dll,程序正常.不知道为啥
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-5-10 05:37 , Processed in 0.046093 second(s), 22 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表