Как скопировать текст в буфер обмена на c++?

Пользователь

от ottilie.farrell , в категории: C/C++ , 8 месяцев назад

Как скопировать текст в буфер обмена на c++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от delphine_bartoletti , 8 месяцев назад

@ottilie.farrell 

Вот пример кода на C++, который копирует текст в буфер обмена:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include 
#include 
#include 

int main() {
    std::string text = "Пример текста для копирования в буфер обмена.";

    // Открытие буфера обмена Windows
    if (OpenClipboard(NULL)) {
        // Очистка содержимого буфера обмена
        EmptyClipboard();

        // Выделение памяти для текста
        HGLOBAL hClipboardData;
        hClipboardData = GlobalAlloc(GMEM_DDESHARE, text.size() + 1);

        // Копирование текста в выделенную память
        char* pszBuffer = (char*)GlobalLock(hClipboardData);
        strcpy_s(pszBuffer, text.size() + 1, text.c_str());
        GlobalUnlock(hClipboardData);

        // Установка данных в буфер обмена
        SetClipboardData(CF_TEXT, hClipboardData);

        // Закрытие буфера обмена
        CloseClipboard();

        std::cout << "Текст успешно скопирован в буфер обмена." << std::endl;
    }
    else {
        std::cout << "Ошибка при открытии буфера обмена." << std::endl;
    }

    return 0;
}


Помимо стандартных заголовочных файлов, этот код использует функции Windows API, такие как OpenClipboard, EmptyClipboard, и SetClipboardData, чтобы открыть, очистить и установить данные в буфере обмена. Здесь мы копируем текст "Пример текста для копирования в буфер обмена." в буфер обмена и выводим сообщение об успешной операции или об ошибке.