include “stdafx.h”
include
pragma once
ifndef SKYEYECALL_20170119
define SKYEYECALL_20170119
typedef int(*lpFun)(int, int);
typedef int(setEndPoint)(const char );
typedef int(sendStartInfo)(const char );
typedef int(*sendStopInfo)(int);
typedef int(sendOperationInfo)(const char );
typedef int(sendFileByPath)(const char );
typedef int(sendFileByContent)(const char , size_t, const char*);
extern const wchar_t *m_uri;
extern char* UnicodeToUtf8(const wchar_t* unicode);
extern wchar_t* CharToWchar(char* c);
class SkyEyeCall
{
public:
SkyEyeCall();
void SetEndPoint();
void SendStartInfo(const wchar_t *);
void SendStopInfo(int);
void SendOperationInfo(const wchar_t *);
void SendFileByPath(const wchar_t *);
void SendFileByContent(const wchar_t , size_t, const wchar_t);
~SkyEyeCall();
public:
HINSTANCE m_hDll;
/*setEndPoint m_funSetEndPoint;
sendStartInfo m_sendStartInfo;
sendStopInfo m_sendStopInfo;*/
};
endif // !
cpp文件
include “stdafx.h”
include”stdio.h”
include”stdlib.h”
include”windows.h”
include
include “SkyEyeCall.h”
using namespace std;
char* UnicodeToUtf8(const wchar_t* unicode)
{
int len;
len = WideCharToMultiByte(CP_UTF8, 0, unicode, -1, NULL, 0, NULL, NULL);
char szUtf8 = (char)malloc(len + 1);
memset(szUtf8, 0, len + 1);
WideCharToMultiByte(CP_UTF8, 0, unicode, -1, szUtf8, len, NULL, NULL);
return szUtf8;
}
wchar_t* CharToWchar(char* c)
{
int len = MultiByteToWideChar(CP_ACP, 0, c, strlen(c), NULL, 0);
wchar_t *m_wchar = new wchar_t[len + 1];
MultiByteToWideChar(CP_ACP, 0, c, strlen(c), m_wchar, len);
m_wchar[len] = ‘\0’;
return m_wchar;
}
const wchar_t *m_uri = L”http://172.17.100.148:8094/api/v1/“;
SkyEyeCall::SkyEyeCall()
{
m_hDll = NULL;
m_hDll = LoadLibraryA(“H3dClientService.dll”);
cout << m_hDll << endl;
}
SkyEyeCall::~SkyEyeCall()
{
if (m_hDll != NULL)
{
FreeLibrary(m_hDll);
}
m_hDll = NULL;
}
void SkyEyeCall::SetEndPoint()
{
if (m_hDll)
{
setEndPoint FunSetEndPoint;
FunSetEndPoint = (setEndPoint)GetProcAddress(m_hDll, “skyeye_set_api_endpoint”);
if (FunSetEndPoint != NULL)
{
FunSetEndPoint(UnicodeToUtf8(m_uri));
}
}
}
void SkyEyeCall::SendStartInfo(const wchar_t *editor)
{
if (m_hDll)
{
sendStartInfo FunSendStartInfo;
FunSendStartInfo = (sendStartInfo)GetProcAddress(m_hDll, “skyeye_send_start_info”);
if (FunSendStartInfo != NULL)
{
FunSendStartInfo(UnicodeToUtf8(editor));
}
}
}
void SkyEyeCall::SendOperationInfo(const wchar_t *op)
{
if (m_hDll)
{
sendOperationInfo FunSendOperationInfo;
FunSendOperationInfo = (sendOperationInfo)GetProcAddress(m_hDll, “skyeye_send_operation_info”);
if (FunSendOperationInfo != NULL)
{
FunSendOperationInfo(UnicodeToUtf8(op));
}
}
}
void SkyEyeCall::SendFileByPath(const wchar_t *filePath)
{
if (m_hDll)
{
sendFileByPath FunSendFileByPath;
FunSendFileByPath = (sendFileByPath)GetProcAddress(m_hDll, “skyeye_send_file_by_path”);
if (FunSendFileByPath != NULL)
{
FunSendFileByPath(UnicodeToUtf8(filePath));
}
}
}
void SkyEyeCall::SendFileByContent(const wchar_t content, size_t size, const wchar_t fileName)
{
if (m_hDll)
{
sendFileByContent FunSendFileByContent;
FunSendFileByContent = (sendFileByContent)GetProcAddress(m_hDll, “skyeye_send_file_by_content”);
if (FunSendFileByContent != NULL)
{
FunSendFileByContent(UnicodeToUtf8(content), size, UnicodeToUtf8(fileName));
}
}
}
void SkyEyeCall::SendStopInfo(int exitId)
{
if (m_hDll)
{
sendStopInfo FunSendStopInfo;
FunSendStopInfo = (sendStopInfo)GetProcAddress(m_hDll, “skyeye_send_stop_info”);
if (FunSendStopInfo != NULL)
{
FunSendStopInfo(exitId);
}
}
}
调用的接口文件
pragma once
ifdef __cplusplus
extern “C” {
endif
/**
设置服务API地址,如:http://172.17.100.148:30000
如果不调用,则会用默认地址。如果调用则必须在最开始调用。
@return 0 表示成功,-1表示失败,比如参数不是个合法的url
*/
int skyeye_set_api_endpoint(const char *ep);
/**
发送启动信息
@param editor 编辑器名称。不能是null。utf8编码
@return 0表示成功,-1表示失败
*/
int skyeye_send_start_info(const char *editor);
/**
发送程序终止信息
@param ec 退出码,0表示正常
@return 0表示成功,-1表示失败。
*/
int skyeye_send_stop_info(int ec);
/**
发送操作信息
@param cmd 操作的名称。utf8编码
@return 0表示成功,-1表示失败。
*/
int skyeye_send_operation_info(const char *cmd);
/**
发送文件
@param filepath 文件路径。utf8编码
@return 0表示成功,-1表示失败。
*/
int skyeye_send_file_by_path(const char *filepath);
/**
发送文件
@param content, len 要上传的文件的内容和长度
@param filename 用于保存文件的文件名,utf8编码
@return 0表示成功,-1表示失败。
*/
int skyeye_send_file_by_content(const char *content, size_t len, const char *filename);
ifdef __cplusplus
}