通过C ++与OS功能交互

时间:2013-01-06 08:58:02

标签: c++ windows clipboard

我正在尝试用C ++创建一个与OS功能交互的工具,但我之前从未做过类似的事情,所以我甚至都不知道在哪里搜索答案。

以下是我想要做的概述示例:

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

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

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

以下是我的问题: 这甚至可能还是我应该放弃这个想法? 如果是的话,我将不胜感激任何帮助,教程或某些搜索方式。

提前致谢!

1 个答案:

答案 0 :(得分:2)

这更像是一个“Windows”答案,而不是“C ++”答案,但下面的代码可以在C或C ++中使用。

在Windows上,您务实地将字符串“粘贴”到clipboard via the 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();
}