0

どうすれば選択したテキストを取得できるのだろうか。(通常は、マウスのドラッグまたはテキストの Shift + 矢印で行います)

メモ帳、ワード、Internet Explorer のアドレスバーなどから

WM_GETTEXT を送信してキャプションをコピーするだけで、ファイル エクスプローラーでファイル名の名前を変更している間、選択したテキストをコピーできません。

そこで、Ctrl+C のシミュレーションを検討しています。しかし、キーストロークをシミュレートすることは良い考えではないようです. 副作用が発生するためです(Ctrl + Cが他の機能に割り当てられている場合)

現在選択されているテキストをクリップボードにコピーしたい、次のコードを試しました

OpenClipboard(0);
EmptyClipboard();
SetClipboardData(CF_TEXT,0);
CloseClipboard();

しかし運が悪い、それはただ空のクリップボードです。

現在選択されているテキストをコピーするにはどうすればよいですか?

(予期しない影響を与えずに Ctrl+c をシミュレート)

ありがとう!(私の環境はWindows 7、Cプログラミング言語、winapiです)

4

2 に答える 2

0

を使用してクリップボードを設定していますSetClipboardData(CF_TEXT, 0)-- MSDN Docによると、2 番目のパラメーターが NULL の場合、ウィンドウは WM_RENDERFORMAT および WM_RENDERALLFORMATS メッセージを処理する必要があります。同じ記事には、グローバル メモリを割り当て、必要なテキストを入力して に渡す方法に関するコメントがありますSetClipboardData()

于 2013-10-11T09:10:32.797 に答える
0

あなたが言及したさまざまなアプリケーションが異なるウィンドウクラスを使用しているため、一般的な答えがあるかどうかはわかりません。
特にメモ帳の場合: 表示領域は単純なEDITコントロールのようです。EM_GETSELメッセージを使用して、選択したテキストの開始と終了を取得し、 を使用WM_GETTEXTして完全なテキストを取得できます。GetWindowText別プロセスのウィンドウでは動作しませんので使用しないでください。一般に、メッセージを使用してみることができWM_COPYます。これにより、テキストがクリップボードに配置されます。ただし、結果は、そのメッセージ ハンドラーが他のアプリケーションでどのように実装されているかによって異なります。

于 2013-10-11T07:51:28.553 に答える