MFC/C++调用易语言的整数型+文本型与VS2010互动

版权说明:转载请注明,转自郑军学长(MFC/C++调用易语言的整数型+文本型与VS2010互动),http://www.cnblogs.com/ZHENGJUNupperclassman/p/7490230.html

1、LoadDll.cpp

 1 #include "StdAfx.h"
 2 #include "LoadDLL.h"
 3
 4 pMFCdll_OneVOID_OneVOID        MFCdll_OneVOID_OneVOID;
 5 pMFCdll_OneWORD_OneVOID        MFCdll_OneWORD_OneVOID;
 6 pMFCdll_OneCHAR_OneVOID        MFCdll_OneCHAR_OneVOID;
 7
 8
 9 pMFCdll_OneWORD_OneWORD        MFCdll_OneWORD_OneWORD;
10 pMFCdll_OneWORD_TwoWORD        MFCdll_OneWORD_TwoWORD;
11 pMFCdll_OneWORD_ThreeWORD    MFCdll_OneWORD_ThreeWORD;
12 pMFCdll_OneWORD_FourWORD    MFCdll_OneWORD_FourWORD;
13 pMFCdll_OneWORD_FiveWORD    MFCdll_OneWORD_FiveWORD;
14 pMFCdll_OneWORD_SixWORD        MFCdll_OneWORD_SixWORD;
15
16
17 pMFCdll_OneWORD_OneChar        MFCdll_OneWORD_OneChar;
18 pMFCdll_OneWORD_TwoChar        MFCdll_OneWORD_TwoChar;
19 pMFCdll_OneWORD_ThreeChar    MFCdll_OneWORD_ThreeChar;
20 pMFCdll_OneWORD_FourChar    MFCdll_OneWORD_FourChar;
21 pMFCdll_OneWORD_FiveChar    MFCdll_OneWORD_FiveChar;
22 pMFCdll_OneWORD_SixChar        MFCdll_OneWORD_SixChar;
23
24
25 pMFCdll_OneChar_OneChar        MFCdll_OneChar_OneChar;
26 pMFCdll_OneChar_TwoChar        MFCdll_OneChar_TwoChar;
27 pMFCdll_OneChar_ThreeChar    MFCdll_OneChar_ThreeChar;
28 pMFCdll_OneChar_FourChar    MFCdll_OneChar_FourChar;
29 pMFCdll_OneChar_FiveChar    MFCdll_OneChar_FiveChar;
30 pMFCdll_OneChar_SixChar        MFCdll_OneChar_SixChar;
31
32
33 pMFCdll_OneChar_OneWORD        MFCdll_OneChar_OneWORD;
34 pMFCdll_OneChar_TwoWORD        MFCdll_OneChar_TwoWORD;
35 pMFCdll_OneChar_ThreeWORD    MFCdll_OneChar_ThreeWORD;
36 pMFCdll_OneChar_FourWORD    MFCdll_OneChar_FourWORD;
37 pMFCdll_OneChar_FiveWORD    MFCdll_OneChar_FiveWORD;
38 pMFCdll_OneChar_SixWORD        MFCdll_OneChar_SixWORD;
39
40
41 HINSTANCE    g_Hinstance;    //实例句柄
42
43
44 //加载DLL
45 BOOL LoadDll(char *name)
46 {
47
48     if(g_Hinstance != NULL) return TRUE;    //如果g_Hinstance不为空就返回
49
50     MFCdll_OneWORD_SixWORD = NULL;    //这里是加载ZJY_SoftOverTime用的
51     MFCdll_OneCHAR_OneVOID = NULL;    //这里是加载ZJY_GetSystemDisk用的
52
53     g_Hinstance = LoadLibrary(name);
54     if(g_Hinstance == NULL)
55     {
56 //        AfxMessageBox("加载dll动态库失败!");
57         return FALSE;
58     }
59
60     MFCdll_OneWORD_SixWORD = (pMFCdll_OneWORD_SixWORD)GetProcAddress(g_Hinstance, "ZJY_SoftOverTime");
61     MFCdll_OneCHAR_OneVOID = (pMFCdll_OneCHAR_OneVOID)GetProcAddress(g_Hinstance, "ZJY_GetSystemDisk");
62     if(NULL == MFCdll_OneWORD_SixWORD || NULL == MFCdll_OneCHAR_OneVOID)
63     {
64 //        AfxMessageBox("加载动态库MFCCallBackDllTest函数失败");
65         FreeLibrary(g_Hinstance);
66         g_Hinstance = NULL;
67         return FALSE;
68     }
69     return TRUE;
70 }
71
72 //卸载DLL
73 void UninstallDll()
74 {
75     if (g_Hinstance != NULL)
76     {
77         MFCdll_OneWORD_SixWORD = NULL;
78         MFCdll_OneCHAR_OneVOID = NULL;
79         FreeLibrary(g_Hinstance);
80         g_Hinstance = NULL;
81     }
82 }

2、LoadDll.h

 1 #ifndef __MFCCLOADDLL_H
 2 #define __MFCCLOADDLL_H
 3
 4 #include <windows.h>
 5
 6 BOOL LoadDll(char *name);    //加载DLL
 7 void UninstallDll();        //卸载DLL
 8
 9 /************************************************************************/
10 /*易语言:没参数带返回值的,不带的。
11 /***********************************************************************/
12 typedef void    (WINAPI *pMFCdll_OneVOID_OneVOID)    ();    //返回VOID
13 typedef WORD    (WINAPI *pMFCdll_OneWORD_OneVOID)   ();    //返回WORD
14 typedef char *  (WINAPI *pMFCdll_OneCHAR_OneVOID)   ();    //返回CHAR
15
16 /************************************************************************/
17 /*易语言:整数型接口   <返回值,整数型>(整数型 a, 整数型 b,整数型 c,整数型 d,整数型 e,整数型 f)*/
18 /***********************************************************************/
19 typedef WORD (WINAPI *pMFCdll_OneWORD_OneWORD)    (WORD a);    //返回WORD
20 typedef WORD (WINAPI *pMFCdll_OneWORD_TwoWORD)    (WORD a , WORD b);    //返回WORD
21 typedef WORD (WINAPI *pMFCdll_OneWORD_ThreeWORD)(WORD a , WORD b ,WORD c);    //返回WORD
22 typedef WORD (WINAPI *pMFCdll_OneWORD_FourWORD)    (WORD a , WORD b ,WORD c ,WORD d);    //返回WORD
23 typedef WORD (WINAPI *pMFCdll_OneWORD_FiveWORD)    (WORD a , WORD b ,WORD c ,WORD d ,WORD e);    //返回WORD
24 typedef WORD (WINAPI *pMFCdll_OneWORD_SixWORD)    (WORD a , WORD b ,WORD c ,WORD d ,WORD e,WORD f);    //返回WORD
25
26 typedef WORD (WINAPI *pMFCdll_OneWORD_OneChar)    (char * a);    //返回WORD
27 typedef WORD (WINAPI *pMFCdll_OneWORD_TwoChar)    (char * a , char * b);    //返回WORD
28 typedef WORD (WINAPI *pMFCdll_OneWORD_ThreeChar)(char * a , char * b ,char * c);    //返回WORD
29 typedef WORD (WINAPI *pMFCdll_OneWORD_FourChar)    (char * a , char * b ,char * c ,char * d);    //返回WORD
30 typedef WORD (WINAPI *pMFCdll_OneWORD_FiveChar)    (char * a , char * b ,char * c ,char * d ,char * e);    //返回WORD
31 typedef WORD (WINAPI *pMFCdll_OneWORD_SixChar)    (char * a , char * b ,char * c ,char * d ,char * e,char * f);    //返回WORD
32
33 /************************************************************************/
34 /*易语言:字符串接口   <返回值,CString>(文本型 a, 整数型 b,整数型 c,整数型 d,整数型 e,整数型 f)*/
35 /***********************************************************************/
36 typedef char * (WINAPI *pMFCdll_OneChar_OneChar)    (char *);    //返回cahr *
37 typedef char * (WINAPI *pMFCdll_OneChar_TwoChar)    (char * , char *);    //返回cahr *
38 typedef char * (WINAPI *pMFCdll_OneChar_ThreeChar)    (char * , char * ,char *);    //返回cahr *
39 typedef char * (WINAPI *pMFCdll_OneChar_FourChar)    (char * , char * ,char * ,char *);    //返回cahr *
40 typedef char * (WINAPI *pMFCdll_OneChar_FiveChar)    (char * , char * ,char * ,char * ,char *);    //返回cahr *
41 typedef char * (WINAPI *pMFCdll_OneChar_SixChar)    (char * , char * ,char * ,char * ,char * ,char *);    //返回cahr *
42
43 typedef char * (WINAPI *pMFCdll_OneChar_OneWORD)    (WORD a);    //返回cahr *
44 typedef char * (WINAPI *pMFCdll_OneChar_TwoWORD)    (WORD a , WORD b);    //返回cahr *
45 typedef char * (WINAPI *pMFCdll_OneChar_ThreeWORD)    (WORD a , WORD b ,WORD c);    //返回cahr *
46 typedef char * (WINAPI *pMFCdll_OneChar_FourWORD)    (WORD a , WORD b ,WORD c ,WORD d);    //返回cahr *
47 typedef char * (WINAPI *pMFCdll_OneChar_FiveWORD)    (WORD a , WORD b ,WORD c ,WORD d ,WORD e);    //返回cahr *
48 typedef char * (WINAPI *pMFCdll_OneChar_SixWORD)    (WORD a , WORD b ,WORD c ,WORD d ,WORD e,WORD f);    //返回cahr *
49
50 /************************************************************************/
51 /*易语言使用外部定义
52 /***********************************************************************/
53 extern pMFCdll_OneVOID_OneVOID        MFCdll_OneVOID_OneVOID;
54 extern pMFCdll_OneWORD_OneVOID        MFCdll_OneWORD_OneVOID;
55 extern pMFCdll_OneCHAR_OneVOID        MFCdll_OneCHAR_OneVOID;
56
57
58 extern pMFCdll_OneWORD_OneWORD        MFCdll_OneWORD_OneWORD;
59 extern pMFCdll_OneWORD_TwoWORD        MFCdll_OneWORD_TwoWORD;
60 extern pMFCdll_OneWORD_ThreeWORD    MFCdll_OneWORD_ThreeWORD;
61 extern pMFCdll_OneWORD_FourWORD        MFCdll_OneWORD_FourWORD;
62 extern pMFCdll_OneWORD_FiveWORD        MFCdll_OneWORD_FiveWORD;
63 extern pMFCdll_OneWORD_SixWORD        MFCdll_OneWORD_SixWORD;
64
65
66 extern pMFCdll_OneWORD_OneChar        MFCdll_OneWORD_OneChar;
67 extern pMFCdll_OneWORD_TwoChar        MFCdll_OneWORD_TwoChar;
68 extern pMFCdll_OneWORD_ThreeChar    MFCdll_OneWORD_ThreeChar;
69 extern pMFCdll_OneWORD_FourChar        MFCdll_OneWORD_FourChar;
70 extern pMFCdll_OneWORD_FiveChar        MFCdll_OneWORD_FiveChar;
71 extern pMFCdll_OneWORD_SixChar        MFCdll_OneWORD_SixChar;
72
73
74 extern pMFCdll_OneChar_OneChar        MFCdll_OneChar_OneChar;
75 extern pMFCdll_OneChar_TwoChar        MFCdll_OneChar_TwoChar;
76 extern pMFCdll_OneChar_ThreeChar    MFCdll_OneChar_ThreeChar;
77 extern pMFCdll_OneChar_FourChar        MFCdll_OneChar_FourChar;
78 extern pMFCdll_OneChar_FiveChar        MFCdll_OneChar_FiveChar;
79 extern pMFCdll_OneChar_SixChar        MFCdll_OneChar_SixChar;
80
81
82 extern pMFCdll_OneChar_OneWORD        MFCdll_OneChar_OneWORD;
83 extern pMFCdll_OneChar_TwoWORD        MFCdll_OneChar_TwoWORD;
84 extern pMFCdll_OneChar_ThreeWORD    MFCdll_OneChar_ThreeWORD;
85 extern pMFCdll_OneChar_FourWORD        MFCdll_OneChar_FourWORD;
86 extern pMFCdll_OneChar_FiveWORD        MFCdll_OneChar_FiveWORD;
87 extern pMFCdll_OneChar_SixWORD        MFCdll_OneChar_SixWORD;
88
89
90 #endif        //MFCCLOADDLL_H

3、这里为不带Dlg的那个项目文件

 1 // testDll.cpp : 定义应用程序的类行为。
 2 //
 3
 4 #include "stdafx.h"
 5 #include "testDll.h"
 6 #include "testDllDlg.h"
 7
 8 #include "LoadDLL.h"
 9
10 //*************原来的代码不动******************
11
12 BOOL CtestDllApp::InitInstance()
13 {
14         //这里上面不动,下面加载DLL,就是游戏读条一样的,现在只有一个
15     if(LoadDll("C://Users//Administrator//Desktop//ZJDLLV1.0.3.dll") == FALSE)
16     {
17
18         AfxMessageBox("ZJDLLV1.0.3.dll,加载失败!");
19         AfxGetMainWnd()->CloseWindow();
20     }
21     else
22     {
23         AfxMessageBox("ZJDLLV1.0.3.dll,加载成功!");
24     }
25         //下面系统的
26     CtestDllDlg dlg;
27     m_pMainWnd = &dlg;
28     INT_PTR nResponse = dlg.DoModal();
29     if (nResponse == IDOK)
30     {
31         // TODO: 在此放置处理何时用
32         //  “确定”来关闭对话框的代码
33     }
34     else if (nResponse == IDCANCEL)
35     {
36         // TODO: 在此放置处理何时用
37         //  “取消”来关闭对话框的代码
38     }
39
40     // 删除上面创建的 shell 管理器。
41     if (pShellManager != NULL)
42     {
43         delete pShellManager;
44     }
45
46     // 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
47     //  而不是启动应用程序的消息泵。
48     return FALSE;
49 }

4、这里带Dlg的那个项目文件

 1 #include "LoadDLL.h"
 2 //-------中间的不动---------
 3 //这里是按钮单机自动生成的槽函数
 4 void CtestDllDlg::OnBnClickedOk()
 5 {
 6     WORD  reslut = MFCdll_OneWORD_SixWORD(2017,9,7,15,23,0);
 7
 8     if(reslut == 1)
 9     {
10         AfxMessageBox("软件可正常使用!");
11     }
12     else if(reslut == 0)
13     {
14         AfxMessageBox("软件已过期!");
15     }
16
17     AfxMessageBox(MFCdll_OneCHAR_OneVOID());
18 }

5、教程结束。

posted on 2017-09-07 15:58 郑军学长 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/ZHENGJUNupperclassman/p/7490230.html

MFC/C++调用易语言的整数型+文本型与VS2010互动相关推荐

  1. c 调用易语言dll字节集,总结VC与易语言DLL互相调用的方法

    在编写程序的时候往往需要调用到别的语言编写的DLL文件,下面先来看一下在易语言中如何调用VC编写的DLL呢,首先用VC编写一个简单的DLL文件,代码如下: int WINAPI add(int x,i ...

  2. 了解火山PC调用易语言DLL

    **大家都知道,一个编程工具最重要的,就能够调用API和其他语言的DLL,今天我们就来详解使用火山PC调用易语言DLL 一.首先我们需要用易语言编写一个DLL文件,如下图:** 二.然后我们新建两个D ...

  3. 易语言python_Python如何调用易语言DLL

    对Python能够调用天下语言一直有所耳闻,今天试试能不能调用易语言,虽说不能调用.e文件,但至少易语言生成的dll文件应该问题不大.接下来就开始调用. 被调用的易语言dll: .版本 2 .子程序 ...

  4. c调用易语言串口,易语言串口API源码

    易语言串口API源码系统结构:ReadCommPure,BuildCommDCB,CreateFilea,关闭句柄a,SetCommState,ReadFileA,GetCommState,Write ...

  5. c 调用易语言dll字节集,易语言教程指针到字节集及dll调用

    本节课示范了易语言两个高级命令指针到文本()和指针到字节集(),以及易语言dll的制作及调用. 指针到字节集 调用格式: 〈字节集〉 指针到字节集 (整数型 内存数据指针,整数型 内存数据长度) - ...

  6. 易语言和java接口_易语言写接口让其他调用 易语言api使用教程

    易语言如何调用API函数? 你代码方法错了,如果传出参数为文本或字节集必须先"申请内存缓冲",如图1 源码中有两种方法,建议你采用"长整数"的那个,比较方便~! ...

  7. 火山PC调用易语言的能力实现禁止软件重复运行

    本源码转载自利快云https://www.lkuaiy.com/ 1.首先利用建立一个易语言dll动态链接库项目. 2.调用以下两个系统api,大概就是,前一个方法用于判断标记是否存在,后一个方法用于 ...

  8. c#打开文件程序闪退_C#调用易语言dll第二次就闪退

    本帖最后由 遗憾迟香 于 2019-12-26 20:17 编辑 我用易语言写了一个获取网页源码的dll .版本 2 .子程序 GetS, 文本型, 公开 .参数 url, 文本型 返回 (网页_取网 ...

  9. 易语言c调用,易语言调用C++编写的DLL

    511遇见网站最近在录制一套易语言编写DLL及调用和Hook,今天记录一下使用VS2015编写一个C++的Dll,易语言来调用. 步骤: 1.启动VS2015 2.创建工程 3.Visual C++ ...

最新文章

  1. 华丽丽的GridLayout-使用案例
  2. Spring boot的Spring MVC自动配置
  3. 【数据竞赛】CV赛题总结:人民币面值与编码识别
  4. 科普 | 5G基站功耗,到底有多可怕?
  5. 如何使用 API 的方式给 SAP service cloud Registered product 上传图片
  6. Axure下拉框级联操作
  7. POJ-3041 匈牙利算法 二分图最大匹配
  8. 微信小程序继续入坑指南
  9. php 10分钟过期,如何在30分钟后过期PHP会话?
  10. 01 | 基础架构:一条SQL查询语句是如何执行的?笔记(转)
  11. python输出特征相关矩阵_两个特征矩阵的有效成对相关
  12. H264--1--编码原理以及I帧B帧P帧、ptsdts
  13. JDK源码——源码学习总结与分析
  14. 计算机带给人们的负面影响,互联网给人们所带来的负面影响
  15. [技术发展-24]:现有物联网通信技术特点
  16. 知识图谱中有哪些核心概念?
  17. ardupilot/arduplane/attitude.cpp 姿态控制解析
  18. buck电路上下管_BUCK电路工作原理
  19. 中职计算机公开课说课稿,校内公开课说课稿
  20. 笨蛋去括号法求空集的幂集P(∅)和空集的幂集的幂集P({∅})和空集的幂集的幂集P(P({∅}))

热门文章

  1. 用安卓手机控制 HomeKit 智能设备?绿米Aqara设备接入智汀家庭云保姆级教程
  2. Vagrant up启动失败 invalid byte sequence in UTF-8 (ArgumentError)
  3. 一些java基础题答案汇总
  4. gdufe acm 1086 互质数
  5. Linux:centos7安装下载工具aria2
  6. win7计算机怎么优化驱动器,Win7优化电脑加快关机速度的方法技巧
  7. 计算机组成原理swbus,计算机组成原理实验 2.1 总线与寄存器 赖晓铮.ppt
  8. 【Web开发】Python实现Web服务器(Ubuntu下Flask使用MySQL数据库)
  9. 如何下载完整的ie6sp1
  10. 武林外传电影版java,武林外传经典台词