今天的教程是指导如果使用tiptop来对接windows平台下的dll(动态连接库)去扩充tiptop的功能,Genero 4js公司明确表示4GL语言是支持C和JAVA语言对接的,但是通过单一的语言对接,基本功能有限,所以Genero 4GL提供了和windows dll的对接,这样tiptop可以在客户机通过GDC去调用DLL去完成更多的事情(例如打开QQ,屏幕截图实时聊天等功能)。
下面我们来做一个简单的功能,用户只需要在tiptop界面点击按钮,通过DLL去获得客户机的IP信息(虽然tiptop是能够实现这个功能,但是本次是使用dll去完成),再实时传送给tiptop,再由tiptop去写入数据库保存,这样就可以知道用户的IP地址了。 【测试环境要求】:GDC2.X版本 DLL版本,WIN32 dll ,MFC标准的DLL目前测试不过 DLL编写平台:VISUAL C++ 6.0 【效果如下图】 效果一:只弹出一个窗口代表DLL已经开始工作 图片:图片1.png 效果二:DLL读取计算机名,并传回给TIPTOP显示,本次不显示这个对话框 图片:图片2.png 效果三:DLL读取计算机IP,弹出对话框,并回传给TIPTOP 图片:图片3.png 【首先来编写一个DLL文件】 打开VC 6.0 新建一个DLL工程 图片:图片4.png 找到头文件,看看以下代码 申明需要遵循4GL的标准,用于传入和传出的参数必须是一个结构体,我们来申明这个结构体,不要申明其他类型的数据。如下图 图片:图片5.png 以下是C++代码: 图片:QQ拼音截图未命名.png 看看具体的函数怎么写,具体的功能大家可以去写的更高大上点,本次就简单的写两个功能来演示: 【上代码】 int makeSum(const struct frontEndInterface &fx) { //获得两个数相加等于几 //这个参数用于返回给tiotop返回执行的结果 short status = -1; // 判断传入的参数对不对,tiptop里传入的参数必须和这个一致,也就是tiptop中没办法去判断 //必须使用几个参数,这里就需要判断参数的个数是否是需要的2个 if (fx.getParamCount() == 2 && fx.getReturnCount() == 2) { long param1, param2; short isNull1, isNull2; //复制到DLL的堆栈 fx.popInteger(param2, isNull2); fx.popInteger(param1, isNull1); if (!isNull1 && !isNull2) { // 计算两个结果的答案,也就是参数A+参数B long sum = param1 + param2; char msg[255]; sprintf(msg, "%d + %d = %d", param1, param2, sum); // 把答案COPY到GDC的堆栈 fx.pushInteger(sum, 0); fx.pushString(msg, strlen(msg), 0); // 成功就返回0 status = 0; } } return status; //所有函数都要返回一个0或者1让TIPTOP接收 } int Gethostname(const struct frontEndInterface &fx) { short status = -1; WSADATA wsadata; WORD dwVersionRequested; int err=WSAStartup(dwVersionRequested,&wsadata); char hostname[255]; if(gethostname(hostname,128)==0) { // 要干点啥? } if (fx.getParamCount() == 0 && fx.getReturnCount() == 1) { fx.pushString(hostname, strlen(hostname), 0);//将计算机名放到结构体中供GDC status = 0; } return status; } 编译成DLL 文件,找到DEBUG 文件下的这个DLL文件,放到GDC.exe文件下即可 【tiptop中如何操作】 图片:图片6.png 看看我们的结果: CALL ui.Interface.frontCall( "Mdll", "makeSum", [a,b], [c,res])结果: 图片:图片7.png CALL ui.Interface.frontCall( "Mdll", "Gethostname", [], [res])结果: 图片:图片8.png 需要注意的问题:加载完DLL后,使用完记得卸载。 大家可以到 www.tiptop100.com,大家一起共同学习共同交流 |
|
沙发#
发布于:2016-11-12 08:37
不错,大神果真在民间,32位跟64位dll,需要兼容!
|
|
板凳#
发布于:2016-11-14 11:13
QQ空间里面转载一份类似的文章, 估计也是这位大神写的 .
|
|
地板#
发布于:2017-04-19 17:35
真正的大神
|
|
4楼#
发布于:2017-09-15 14:02
想问一下怎么卸载?
|
|
5楼#
发布于:2024-09-18 09:12
非常感謝大神的分享
|
|