2

数字を強調表示してコピーするプログラムを作成しました。コピーしたテキストを使って、掛け算や足し算などの基本的な計算をしたいのですが、クリップボードのデータを変数に割り当てる方法がわかりません。基本的には、数値をコピーして変数「a」に割り当て、変数「b」で繰り返して、2つを掛け合わせたいと思います。パーツが問題にならないように、番号を選択してコピーする方法を理解しました。私が試したものとは完全に異なるアプローチでさえ、どんな助けもいただければ幸いです。

この問題に対する私の最新の試みは次のとおりです。

    HANDLE clip0;
    OpenClipboard(NULL);
    EmptyClipboard();
        clip0 = GetClipboardData(CF_TEXT);
     variable = (char)clip0;
    CloseClipboard();

ここで、「変数」は変数です。

プログラムを実行して「変数」を出力するように指示すると、値0が返されます。

私が行った別の試みはこれでした:

HANDLE clip1;
    if (OpenClipboard(NULL)) 
        clip1 = GetClipboardData(CF_TEXT);
     variable = (char)clip1;
    CloseClipboard();

ただし、「変数」は常に-8の値を取ります

4

2 に答える 2

8

GlobalLock(clip0)ハンドルをキャストするのではなく、データへのポインタを取得するために呼び出す必要があります。次に、完了したら、を呼び出しGlobalUnlockてポインタを解放します。

OpenClipboard(NULL);
HANDLE clip0 = GetClipboardData(CF_TEXT);
char* p=(char*)GlobalLock(clip0);
variable=*p;
GlobalUnlock(clip0);
CloseClipboard();
于 2011-02-23T22:52:35.323 に答える
1

クリップボードのテキストコンテンツは、cが指すc文字列です。

if(OpenClipboard(NULL) != FALSE)
{
  HANDLE clip0 = GetClipboardData(CF_TEXT); 
  if(clip0 != NULL)
  {
    char *c = reinterpret_cast<char*>(GlobalLock(clip0));
    // Use c before it goes out of scope
    ...
    GlobalUnlock(clip0);
  }
  CloseClipboard();
}
于 2011-02-23T23:02:39.313 に答える