我正在尝试在c++中制作一个与操作系统功能交互的工具,但我以前从未做过类似的事情,所以我甚至不知道在哪里搜索答案。
下面是我想做的一个概括性示例:
假设我在一个文件夹中存储了许多文本文件。每个文件都有一些文本和一个密码(只是字符串,没有加密)。我要做的是输入一个关键字(例如"1",或"2",或任何关键字),然后在文件中选择一个密码。现在,我知道如何做所有这些"简单"的东西,我的问题接下来:
一旦我找到密码-假设密码将存储在字符串psw变量中-我想将psw字符串复制到我的操作系统(假设Windows)用于"复制"函数(Ctrl + C)的"缓冲区"(或其他什么)。这导致:下次我按Ctrl+V时,psw将被粘贴。
使用示例:用户运行.exe,打开一个窗口。然后他输入一个关键字,并选择一个密码,并将其添加到处理"复制"功能的"缓冲区"中。程序可能在此状态终止,或者等待另一个密码(我们不再关心它)。现在,让我们假设用户创建了一个文本文件,按Ctrl + V,并将密码粘贴到文本文件中,其间没有来自用户端的任何其他交互。
以下是我的问题:这可能吗,还是我应该放弃这个想法?如果是,我将感谢任何帮助,教程,或一些模式在哪里搜索这个。
这更像是一个"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();
}