Zireael |
Отправлено: 03 Марта, 2024 - 11:08:13
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
CODE:#include "stdafx.h"
#include <windows.h>
#include <fstream>
using namespace std;
void main()
{
const char* Path = "C:\\111.txt"; // путь к файлу
// читаем файл
string S = "";
ifstream File(Path);
if (!File) return;
char c;
while (File.get(c)) S += c;
File.close();
// переводим в UTF-16
int count = MultiByteToWideChar(CP_UTF8, 0, S.c_str(), S.length(), NULL, 0);
wstring Text(count, 0);
MultiByteToWideChar(CP_UTF8, 0, S.c_str(), S.length(), &Text[0], count);
//MessageBox(0, Text.c_str(), L"Caption", MB_OK);
// копируем в буфер
if (OpenClipboard(0))
{
EmptyClipboard();
int LengthBuffer = wcslen(Text.c_str()) * 2 + 1;
HGLOBAL hgBuffer = GlobalAlloc(GMEM_FIXED, LengthBuffer);
if (hgBuffer != NULL)
{
wchar_t* chBuffer = (wchar_t*)GlobalLock(hgBuffer);
if (chBuffer != NULL)
{
wcscpy_s(chBuffer, LengthBuffer, Text.c_str());
GlobalUnlock(hgBuffer);
SetClipboardData(CF_UNICODETEXT, hgBuffer);
}
GlobalFree(hgBuffer);
}
CloseClipboard();
}
} |
|
|
Kibor |
Отправлено: 03 Марта, 2024 - 15:19:40
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Спасибо. Работает у меня почти без изменений.
(Добавление)
Для Кибор.
В файле сохранен этот смайл
🤩
CODE:#define CP_UTF8 65001
#define CF_UNICODETEXT 13
#define GMEM_FIXED 0
external(INT, "MultiByteToWideChar", "MultiByteToWideChar", "Kernel32.dll");
external(INT, "OpenClipboard", "OpenClipboard", "User32.dll");
external(INT, "CloseClipboard", "CloseClipboard", "User32.dll");
external(INT, "EmptyClipboard", "EmptyClipboard", "User32.dll");
external(INT, "SetClipboardData", "SetClipboardData", "User32.dll");
external(INT, "GlobalAlloc", "GlobalAlloc", "Kernel32.dll");
external(INT, "GlobalLock", "GlobalLock", "Kernel32.dll");
external(INT, "GlobalUnlock", "GlobalUnlock", "Kernel32.dll");
external(INT, "GlobalFree", "GlobalFree", "Kernel32.dll");
char pr[100];
char rez[100];
int g=0;
if (fopen ("C:\Тел\Com.txt", "rb")!=0)
{
g=freadb(#pr[0], 100);
fclose();
}
pr[g]=0;
MultiByteToWideChar(CP_UTF8, 0, format(#pr[0]), g, address(#rez[0]), g);
rez[g]=0;
if(OpenClipboard(0))
{
EmptyClipboard();
int hMem = GlobalAlloc(GMEM_FIXED, g+2);
int Mem = GlobalLock(hMem);
writeaddress(format(#rez[0]), Mem);
GlobalUnlock(Mem);
SetClipboardData(CF_UNICODETEXT, hMem);
GlobalFree(hMem);
CloseClipboard();
}
|
|
|
Zireael |
Отправлено: 03 Марта, 2024 - 20:44:46
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Для Кибор.
Не так. Не скопируется если в файле будет такая строка:
Цитата: Привет 😀 Hello |
|
|
Zireael |
Отправлено: 04 Марта, 2024 - 10:05:01
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
CODE:#define CP_UTF8 65001
#define CF_UNICODETEXT 13
#define GMEM_FIXED 0
external(INT, "MultiByteToWideChar", "MultiByteToWideChar", "Kernel32.dll");
external(INT, "OpenClipboard", "OpenClipboard", "User32.dll");
external(INT, "CloseClipboard", "CloseClipboard", "User32.dll");
external(INT, "EmptyClipboard", "EmptyClipboard", "User32.dll");
external(INT, "SetClipboardData", "SetClipboardData", "User32.dll");
external(INT, "GlobalAlloc", "GlobalAlloc", "Kernel32.dll");
external(INT, "GlobalLock", "GlobalLock", "Kernel32.dll");
external(INT, "GlobalUnlock", "GlobalUnlock", "Kernel32.dll");
external(INT, "GlobalFree", "GlobalFree", "Kernel32.dll");
external(INT, "wcscpy_s", "wcscpy_s", "msvcrt.dll");
char pr[100];
char rez[100];
int g=0;
if (fopen ("C:\111.txt", "rb")!=0)
{
g=freadb(#pr[0], 100);
fclose();
}
pr[g] = 0;
int count = MultiByteToWideChar(CP_UTF8, 0, address(#pr[0]), -1, 0, 0);
MultiByteToWideChar(CP_UTF8, 0, address(#pr[0]), -1, address(#rez[0]), count);
if(OpenClipboard(0))
{
EmptyClipboard();
int hMem = GlobalAlloc(GMEM_FIXED, count * 2 + 2);
int Mem = GlobalLock(hMem);
wcscpy_s(Mem, count * 2 + 2, address(#rez[0]));
GlobalUnlock(hMem);
SetClipboardData(CF_UNICODETEXT, hMem);
GlobalFree(hMem);
CloseClipboard();
} |
|
|
|