Вопрос Как записать string в буффер обмена?

Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,996
Реакции[?]
1,275
Поинты[?]
5K
C++:
void Clipboard(HANDLE hMem)
{
    OpenClipboard(NULL); // hWnd is set to NULL
    EmptyClipboard(); // Sets clipboard ownership to someone don't know
    SetClipboardData(CF_TEXT, hMem);  // Successfully data to clipboard!
    CloseClipboard();
}
 
Начинающий
Статус
Оффлайн
Регистрация
22 Сен 2019
Сообщения
48
Реакции[?]
7
Поинты[?]
0
C++:
void Clipboard(HANDLE hMem)
{
    OpenClipboard(NULL); // hWnd is set to NULL
    EmptyClipboard(); // Sets clipboard ownership to someone don't know
    SetClipboardData(CF_TEXT, hMem);  // Successfully data to clipboard!
    CloseClipboard();
}
И? как записать? Где ты string создал? Везде этот код видел а как с ним работать хз.
 
EVOLUTION ?
Забаненный
Статус
Оффлайн
Регистрация
30 Июл 2019
Сообщения
1,162
Реакции[?]
269
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
auto copytoclipboard(char* str) -> void
{
    if (OpenClipboard(0))
    {
        EmptyClipboard();
        char* clip_data = (char*)(GlobalAlloc(GMEM_FIXED, MAX_PATH));
        lstrcpy(clip_data, str);
        SetClipboardData(CF_TEXT, (HANDLE)(clip_data));
        LCID* lcid = (DWORD*)(GlobalAlloc(GMEM_FIXED, sizeof(DWORD)));
        *lcid = MAKELCID(MAKELANGID(LANG_RUSSIAN, SUBLANG_NEUTRAL), SORT_DEFAULT);
        SetClipboardData(CF_LOCALE, (HANDLE)(lcid));
        CloseClipboard();
    }
}
 
Начинающий
Статус
Оффлайн
Регистрация
22 Сен 2019
Сообщения
48
Реакции[?]
7
Поинты[?]
0
C++:
void Clipboard(HANDLE hMem)
{
    OpenClipboard(NULL); // hWnd is set to NULL
    EmptyClipboard(); // Sets clipboard ownership to someone don't know
    SetClipboardData(CF_TEXT, hMem);  // Successfully data to clipboard!
    CloseClipboard();
}
Эта штука текст записывает, а мне нужно string, к примеру есть string который hwid получает, как его записать?
C++:
string a()
{
    тут код
}
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
void Clipboard(string text)
{
    HGLOBAL h = GlobalAlloc(GMEM_MOVEABLE, text.size() * sizeof(CHAR*));
    LPVOID gl = GlobalLock(h);
    memcpy(gl, text.c_str(), text.size() * sizeof(CHAR*));
    GlobalUnlock(gl);
    OpenClipboard(NULL); // hWnd is set to NULL
    EmptyClipboard(); // Sets clipboard ownership to someone don't know
    SetClipboardData(CF_TEXT, h);  // Successfully data to clipboard!
    CloseClipboard();
}
 
Эксперт
Статус
Оффлайн
Регистрация
17 Янв 2020
Сообщения
2,197
Реакции[?]
718
Поинты[?]
79K
Товары в продаже
1
Олдфаг
Статус
Оффлайн
Регистрация
18 Фев 2019
Сообщения
2,826
Реакции[?]
1,853
Поинты[?]
24K
C++:
auto copytoclipboard(char* str) -> void
{
    if (OpenClipboard(0))
    {
        EmptyClipboard();
        char* clip_data = (char*)(GlobalAlloc(GMEM_FIXED, MAX_PATH));
        lstrcpy(clip_data, str);
        SetClipboardData(CF_TEXT, (HANDLE)(clip_data));
        LCID* lcid = (DWORD*)(GlobalAlloc(GMEM_FIXED, sizeof(DWORD)));
        *lcid = MAKELCID(MAKELANGID(LANG_RUSSIAN, SUBLANG_NEUTRAL), SORT_DEFAULT);
        SetClipboardData(CF_LOCALE, (HANDLE)(lcid));
        CloseClipboard();
    }
}
Тогда стоит уточнить, что для использования lstrcpy с таким набором параметров, необходимо изменить кодировку компилятора через настройки проекта на многобайтовую. В противном случае, будет возникать ошибка "аргумент типа несовместим с параметром типа"
Свойства проекта -> Свойства конфигурации -> Дополнительно -> Набор символов. Устанавливаем значение Использовать многобайтовую кодировку
 
Сверху Снизу