MT4或MT5下复制文本到剪贴板的一段源码
一段MT4或MT5下复制文本到剪贴板的源码
//+------------------------------------------------------------------+
//| ProjectName |
//| Copyright 2020, CompanyName |
//| http://www.companyname.net |
//+------------------------------------------------------------------+
#property copyright "策汇在线复制文本到剪贴板"
#property link "http://www.fxchs.com"
#property version "1.00"
#property strict
#import "kernel32.dll"
int GlobalAlloc(int Flags, int Size);
int GlobalLock(int hMem);
int GlobalUnlock(int hMem);
int GlobalFree(int hMem);
int lstrcpyW(int ptrhMem, string Text);
#import
#import "user32.dll"
int OpenClipboard(int hOwnerWindow);
int EmptyClipboard();
int CloseClipboard();
int SetClipboardData(int Format, int hMem);
#import
#define GMEM_MOVEABLE 2
#define CF_UNICODETEXT 13
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnStart()
{
CopyTextToClipboard("这是个测试...!@#%!@#!#!#!#@!#!11111");
}
// 复制文本内容到剪贴板
bool CopyTextToClipboard(string Text)
{
bool bReturnvalue = false;
// 打开剪贴板
if (OpenClipboard(0) != 0)
{
// 清空剪贴板
if (EmptyClipboard() != 0)
{
// 申请剪贴内存空间
int lnString = StringLen(Text);
int hMem = GlobalAlloc(GMEM_MOVEABLE, (lnString * 2) + 2);
if (hMem != 0)
{
// 锁定这块内存开始复制内容到内存空间
int ptrMem = GlobalLock(hMem);
if (ptrMem != 0)
{
// 复制内容到内容空间
lstrcpyW(ptrMem, Text);
GlobalUnlock(hMem);
// 复制到剪贴板
if (SetClipboardData(CF_UNICODETEXT, hMem) != 0)
{
bReturnvalue = true;
}
else
{
GlobalFree(hMem);
}
}
else
{
GlobalFree(hMem);
}
}
else
{
// 申请内存空间失败
}
}
else
{
// 清空剪贴板失败
}
CloseClipboard();
}
else
{
// 打开剪贴板失败
}
return (bReturnvalue);
}
//+------------------------------------------------------------------+
