Загрузка...

[TRASH CODE #6] Получаем содержимое буфера обмена используя WinApi.

Тема в разделе C/C++ создана пользователем ПереигралВсех 14 мар 2022. 331 просмотр

  1. ПереигралВсех
    ПереигралВсех Автор темы 14 мар 2022 Заблокирован(а) 1098 9 фев 2020
    В прошлой статье мы настроили наш проект и отключили лишние библиотеки.

    В этой статье мы прочитаем буфер обмена.

    Создадим указатель VOID с любым названием, для простоты я назову его BUFER.

    C
    VOID BUFER()
    {

    }
    Он не будет принимать никаких аргументов.

    Можно начать писать код.

    Объявим HWND и переменную типа char для хранения буфера.


    C
        HWND hwnd = GetDesktopWindow();

    char* Bufer;
    Откроем буфер обмена.
    C
        if (OpenClipboard(hwnd))
    {

    }
    Далее пишем функцию извлечения теста из буфера.
    Должен получится такой код:

    C
        if (OpenClipboard(hwnd))//открываем буфер обмена
    {
    if(IsClipboardFormatAvailable(CF_TEXT))
    {
    HANDLE hData = GetClipboardData(CF_TEXT);//извлекаем текст из буфера
    fromClipboard = (char*)GlobalLock(hData);//блокируем память и получаем содержимое буфера
    GlobalUnlock(hData);//разблокируем память
    CloseClipboard();//закрываем буфер обмена
    WriteLine(Bufer); //эту функцию писали в прошлой статье
    }
    Готово!
    [IMG]

    На основе этой информации можно сделать простой клиппер, возможно я напишу об этом статью.

    C
    VOID BUFER()

    {
    HWND hwnd = GetDesktopWindow();
    char* Bufer;
    if (OpenClipboard(hwnd))
    {
    if (IsClipboardFormatAvailable(CF_TEXT))
    {
    HANDLE hData = GetClipboardData(CF_TEXT);
    Bufer = (char*)GlobalLock(hData);
    GlobalUnlock(hData);
    CloseClipboard();
    WriteLine(Bufer);
    }
    }
    }

     
  2. Replacer
    Replacer 14 мар 2022 ARTIFICIAL SUICIDE 99 21 июл 2021
    Можно попробовать потыкать функции из хидера
    ole2.h
    , ради развлечения. Она также предоставляет функции для работы с буфером обмена, однако придется для начала понять виндовые COM-объекты (Т.к
    OleInitialize
    инициализирует COM либу). Ну и я заметил, что кое-какие функции использовали некоторые фичи из крестов, которых нет в сишке, так что придется колдовать не только над рантаймом сишечки, но и над STL.
    https://docs.microsoft.com/en-us/windows/win32/com/component-object-model--com--portal
    https://docs.microsoft.com/ru-ru/windows/win32/api/ole2/
    https://docs.microsoft.com/ru-ru/windows/win32/api/ole2/nf-ole2-olegetclipboard
     
    14 мар 2022 Изменено
    1. ПереигралВсех Автор темы
      Replacer, Можно, но мы тут не собираемся устраивать адскую дрочильню)
    2. Replacer
    3. ПереигралВсех Автор темы
      Replacer, но это для образовательных целей...
  3. unnamed001
    unnamed001 15 мар 2022 5996 2 сен 2020
    А зачем это здесь ваще
     
Top
Загрузка...