Загрузка...

[TRASH CODE #6] Get clipboard contents using WinApi.

Thread in C/C++ created by ПереигралВсех Mar 14, 2022. 333 views

  1. ПереигралВсех
    ПереигралВсех Topic starter Mar 14, 2022 Banned 1098 Feb 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 Mar 14, 2022 ARTIFICIAL SUICIDE 99 Jul 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
     
    1. ПереигралВсех Topic starter
      Replacer, Можно, но мы тут не собираемся устраивать адскую дрочильню)
    2. Replacer
    3. ПереигралВсех Topic starter
      Replacer, но это для образовательных целей...
  3. unnamed001
    unnamed001 Mar 15, 2022 5996 Sep 2, 2020
    А зачем это здесь ваще
     
Top
Loading...