初试twinbasic
作者:互联网
以前玩了蛮久的vba,最近关注了一下twinbasic这门语言。今天来尝试一下。虽然目前还有很多不完善的地方,但作者更新很频繁。而且用用还能做点东西出来。
作者是用webview2来开发ide的,说实话,反应不是那么快,但是看起来还是比较炫。首先我们来看一下整个界面:
整个窗口布局比较现代化。我们可以用来做标准窗体,activex控件,activex dll,标准dll,导入vb6项目,从文件夹导入。可以直接使用注册的com组件。最重要的是,支持64位了。从右侧的win32那个选项框可以看到里面64位的支持设定还有一个安全模式选择。64位的我就不说了,安全模式主要用于修复。我们一般不会选择这个选项。多花不说现在我们来体验一下。
首先我试试标准的窗体exe.新建以后界面如下图,看着是比较现代化,但是我们看到自带的toolbox就比较缺少了。当然我们可以注册vb6时代控件拿来用.不过只有32位的了。如果你需要64位,可能就需要自己去开发设计了。
好了,话说回来。我放上了一个按钮,在左侧的窗口类代码块里写几句:
点运行按钮可以直接运行,如下图。我们可以看到tb的事件已经不像vb6那样了,而是学习了vb.net的写法,对我来说还是可以接受的。毕竟已经过了那么多年,一门新生代语言还是需要新的语言特性。
下面我们来试一下谢谢标准的dll给vba调用。我用的是32位的office,就只需要写32位的dll.如果你是64位的office就需要编译成64位的dll.注意与你的系统是不是64位无关。新建选择标准dll那一选项。加入以下代码,注意需要加入DllExport标记,表明导出函数:
[ DllExport ] Public Sub helloname(ByVal name As String) MsgBox "Hey," & name End Sub看了一下make/build后的dll,只有20kb,蛮小的哈。我们去看一下是否导出了函数。可以看到com组件需要的几个函数都显示出来了,当然也包括我们自己导出的函数。其实这个就是一个导出了函数的com dll.不需要注册我们可以和直接使用com接口的语言直接互动。
vba里面调用像使用api函数一样调用,但是因为ap的dll是在系统搜索路径里面,所以我们调用不需要带上dll的路径但是我们自己写的dll,天知道会在哪个目录里,所以需要带上具体的路径:
Private Declare Sub helloname Lib "C:\Users\Administrator\Downloads\Build\dlltest.dll" (ByVal Name As String)
Sub test()
helloname "fanxiaolei"
End Sub
显示结果乱码。我们去看一下settings文件:
之前一直在想怎么没有控制台的选项。然后在工程的setings文件里面看到可以设置的,默认窗体是不生成控制台的。选项改为yes就可以玩控制台了。
在里面看到compiler使用unicode的api函数的一个默认选项,应该是使用unicode编码,那么我在dll里通过strconv来转换接受的ansi字符串就可以了。修改一下dll代码然后重新生成:
[ DllExport ] Public Sub helloname(ByVal name As String) MsgBox "Hey," & StrConv(name, vbUnicode) End Sub生成的dll变成了23kb,真的是一个函数多了3KB.运行一切ok.
我在里面没有找到com调用的后期绑定函数createobject.当然了前期勾选引用有提示而且运行效率更高。执着于后期绑定的目前可以研究一下vb免注册使用com组件,后面就有可操作的空间了。 上面只是简单的试水一下有兴趣的vba/vb爱好者可以自行研究。
标签:初试,twinbasic,Sub,选项,dll,64,com,函数 来源: https://www.cnblogs.com/FanXiaoLei/p/16581477.html