yyzhan12
发表于 2009-3-12 09:36:00
nonsmall发表于2009-3-12 9:27:00static/image/common/back.gifAPI声明好 eval就可以用了另外使用(repeat 10)的时候还是容易出现无法卸载的情况(还是会有提示出现)
<p></p><p>我试过(repeat 200 (ysx-use-api nil "Private Declare Function GetCurrentProcessId Lib \"kernel32\" () As Long" "GetCurrentProcessId" nil)))没问题,但执行速度较低</p><p></p>
yyzhan12
发表于 2009-3-12 09:39:00
本帖最后由 作者 于 2009-3-12 9:40:41 编辑 <br /><br /> nonsmall发表于2009-3-12 9:31:00static/image/common/back.gif我想可以这样改改:加载程序时判断若没有就vbanew一个然后用一个全局变量记录这个Global宏名称下次执行程序不新建也不删除建立一个图形反应器当图形即将关闭的时候触发 自动关闭这个Global宏即可
<p></p><p>其实还是在宏里打转,最理想的应该像VLISP调用vbs</p>
nonsmall
发表于 2009-3-12 09:47:00
<p>我试了 效果不错</p><p>应该算解决了循环和卸载的问题</p><p>效率上我认为甚至可以这样</p><p>既然隐藏不好那就不隐藏了</p><p>让API部分的代码完全暴露</p><p>加载程序时一次生成所有的东西 然后不删除 一直用着 关图时再清空</p>
nonsmall
发表于 2009-3-12 09:53:00
yyzhan12发表于2009-3-12 9:39:00static/image/common/back.gif其实还是在宏里打转,最理想的应该像VLISP调用vbs
<p>VBS 何曾不想用 API 呢?</p><p>除非封装DLL能达到那种调用的效果 但是那就脱离Only Lisp范畴了</p><p>API声明是驻留内存中 如果Lisp能对内存进行特殊的读写就能实现更强的功能</p><p>没实力动手验证了</p>
yyzhan12
发表于 2009-3-12 17:31:00
nonsmall发表于2009-3-12 9:47:00static/image/common/back.gif我试了 效果不错应该算解决了循环和卸载的问题效率上我认为甚至可以这样既然隐藏不好那就不隐藏了让API部分的代码完全暴露加载程序时一次生成所有的东西 然后不删除 一直用着 关图时再清空
<p></p><p>用完不删除,这是不合理的,因为不可能保证都同一个工程,因为其它程序也可能加载工程或用VBANEW命令,当出来时会有一大堆的保存信息提示,很烦人的.</p><p>效率上其实不是很大的问题,只是不够完美而已</p><p>API代码隐蔽性是个比较难的问题</p>
yyzhan12
发表于 2009-3-12 17:36:00
本帖最后由 作者 于 2009-3-12 20:43:23 编辑 <br /><br /> nonsmall发表于2009-3-12 9:53:00static/image/common/back.gifVBS 何曾不想用 API 呢?除非封装DLL能达到那种调用的效果 但是那就脱离Only Lisp范畴了API声明是驻留内存中 如果Lisp能对内存进行特殊的读写就能实现更强的功能没实力动手验证了
<p></p><p><font size="2"><font face="宋体">要想VBS调用API,可借用</font><font face="宋体">DYNACALL.DLL文件,方法如下:</font></font></p><p><font face="宋体" size="2">把DYNACALL.DLL存储于fas文件中,通过写操作生成DYNACALL.DLL,直接在在VBS中调用API.</font></p><p><font face="宋体" size="2">DYNACALL.DLL不知在哪可下载?网上提供的链接大多都无效.</font></p><p><font face="宋体" size="2">DYNACALL.DLL文件不知道有多大?太大了就没必要这样做了</font></p>
yyzhan12
发表于 2009-3-13 17:14:00
nonsmall发表于2009-3-12 9:53:00static/image/common/back.gifVBS 何曾不想用 API 呢?除非封装DLL能达到那种调用的效果 但是那就脱离Only Lisp范畴了API声明是驻留内存中 如果Lisp能对内存进行特殊的读写就能实现更强的功能没实力动手验证了
<p>VBA是如何声明API的呢?是否可以从这方面入手?要是声明搞好,使用VBA语句就不是难事了</p>
jxphklibin
发表于 2009-3-16 19:50:00
API->lisp????
nonsmall
发表于 2009-3-19 08:42:00
yyzhan12发表于2009-3-5 16:32:00static/image/common/back.gifVlx封装VBA窗体,和调用API有何区别?
<p>你试试窗体是如何打包的?</p>
nonsmall
发表于 2009-3-19 11:37:00
yyzhan12发表于2009-3-12 9:39:00static/image/common/back.gif其实还是在宏里打转,最理想的应该像VLISP调用vbs
<p>我解密了你的代码</p><p>看到你所用的方法还不是最好</p><p>我的方法不需要写出外部文件</p>