0

我正在尝试用 C++ 制作一个与操作系统功能交互的工具,但我以前从未做过类似的事情,所以我什至不知道在哪里寻找答案。

这是我想做的概述示例:

假设我在一个文件夹中存储了许多文本文件。每个文件都有一些文本和密码(只是字符串,没有加密)。我想要做的是输入一个关键字(例如“1”或“2”,或任何关键字),然后将在文件中选择一个密码。现在,我知道如何做所有这些“简单”的事情了,接下来是我的问题:

一旦我找到密码 - 假设密码将存储在 String psw 变量中 - 我想将 psw 字符串复制到我的操作系统(比如说 Windows)用于函数“复制”的“缓冲区”(或其他任何内容)中" (Ctrl + C)。这导致:下次我按 Ctrl+V 时,psw 将被粘贴。

使用示例:用户运行 .exe 并打开一个窗口。然后他输入一个关键字并选择一个密码并将其添加到处理“复制”功能的“缓冲区”中。程序可能会在这种状态下终止,或者等待另一个密码(我们不再关心它了)。现在,假设用户创建了一个文本文件,按 Ctrl + V 并将密码粘贴到文本文件中,中间没有来自用户端的任何其他交互。

这是我的问题:这甚至可能还是我应该放弃这个想法?如果是,我将不胜感激任何帮助、教程或一些关于在哪里搜索的模式。

提前致谢 !

4

1 回答 1

2

这更像是一个“Windows”的答案,而不是一个“C++”的答案,但下面的代码将在 C 或 C++ 中工作。

在 Windows 上,您可以通过 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();
}
于 2013-01-06T09:02:45.120 回答