0

OSの機能と相互作用するC++のツールを作ろうとしていますが、これまでに似たようなことをしたことがないので、どこで答えを探すべきかさえわかりません。

これが私が作りたいものの概要の例です:

フォルダーに多数のテキストファイルが保存されているとします。すべてのファイルには、テキストとパスワード(文字列のみ、暗号化なし)が含まれています。私がやりたいのは、キーワード(たとえば、「1」、「2」、またはキーワードが何であれ)を入力することです。そうすると、ファイルの中からパスワードが選択されます。今、私はこのすべての「単純な」ことを行う方法を知っています、私の問題は次に来ます:

パスワードを見つけたら(たとえば、パスワードはString psw変数に格納されます)、OS(たとえばWindows)が関数「copy」に使用する「バッファ」(またはそれが何であれ)にpsw文字列をコピーします。 "(Ctrl + C)。その結果、次にCtrl + Vを押すと、pswが貼り付けられます。

使用例:ユーザーが.exeを実行すると、ウィンドウが開きます。次にキーワードを入力すると、パスワードが選択され、「コピー」機能を処理する「バッファ」に追加されます。プログラムはこの状態で終了するか、別のパスワードを待つ可能性があります(これ以上は気にしません)。ここで、ユーザーがテキストファイルを作成し、Ctrl + Vを押して、パスワードがテキストファイルに貼り付けられたとします。その間に、ユーザー側からのその他の操作は行われません。

そして、ここに私の質問があります:これは可能でさえありますか、それとも私はその考えをあきらめるべきですか?はいの場合は、ヘルプ、チュートリアル、またはこれを検索する場所に関するパターンをいただければ幸いです。

前もって感謝します !

4

1 に答える 1

2

これは「C++」の答えというよりも「Windows」の答えですが、以下のコードはCまたはC++で機能します。

Windowsでは、Win32APIを介して文字列をクリップボードに実用的に「貼り付け」ます。

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 に答える