Windows — Взаимодействие с функциями ОС через переполнение стека

Я пытаюсь создать инструмент на C ++, который взаимодействует с функциями ОС, но я никогда раньше не делал ничего подобного, поэтому даже не представляю, где искать ответ.

Вот краткий пример того, что я хотел бы сделать:

Допустим, у меня есть несколько текстовых файлов, хранящихся в папке. В каждом файле есть текст и пароль (только строка, без шифрования). То, что я хочу сделать, это ввести ключевое слово (например, «1» или «2», или любое другое ключевое слово), а затем пароль будет выбран среди файлов. Теперь я знаю, как делать все эти «простые» вещи, моя проблема идет дальше:

Как только я найду пароль — скажем, пароль будет сохранен в переменной psw String — я хочу скопировать строку psw в «буфер» (или что бы то ни было), который моя ОС (скажем, Windows) использует для функции «copy» «(Ctrl + C). В результате: в следующий раз, когда я нажму Ctrl + V, будет вставлен psw.

Пример использования:
Пользователь запускает .exe, и открывается окно. Затем он вводит ключевое слово, и пароль выбирается и добавляется в «буфер», который обрабатывает функцию «копирования». Программа может завершить работу в этом состоянии или ждать другого пароля (мы больше не заботимся о нем). Теперь предположим, что пользователь создает текстовый файл, нажимает Ctrl + V и пароль вставляется в текстовый файл, без каких-либо других взаимодействий со стороны пользователя.

И вот мои вопросы:
Это вообще возможно или я должен отказаться от идеи?
Если да, я был бы признателен за любую помощь, учебник или какой-либо образец, где искать это.

Заранее спасибо !

0

Решение

Это скорее ответ «Windows», чем ответ «C ++», но приведенный ниже код будет работать на C или C ++.

На окнах вы прагматично «вставляете» строки в буфер обмена через Win32 API.

void PasteString(const char* pszPhrase)
{
int len = strlen(pszPhrase);
BOOL fResult = FALSE;

fResult = OpenClipboard(GetDesktopWindow());

if (fResult == FALSE)
{
return;
}

HGLOBAL hglob = GlobalAlloc(GHND, len+1);
void* pGlobalMemory = GlobalLock(hglob);

strcpy((char*)pGlobalMemory, pszPhrase);

GlobalUnlock(hglob);

EmptyClipboard();
SetClipboardData(CF_TEXT, hglob);
CloseClipboard();
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]