掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
別アプリケーションのRichTextの内容をコピーするには (ID:41929)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>(dllを使うのはスマートじゃない気がするので...個人の意見です) DLLを使用するこの方法は,興味ありますね. DLLを使用するテストを使用しようとして,以下のような記事を見つけました. [別のプロセスにコードを割り込ませる3つの方法] http://japan.internet.com/developer/20050830/26.html 前に提示したコードでは,ストリームを新規に生成して保存していますが, EM_STREAMOUTのコールバック呼び出しコードで,以下のようにすると, テキスト(プレーンまたはRTF形式)が取得できます. //----------------------------------------------------------------------------- // EM_STREAMIN,EM_STREAMOUTメッセージ用コールバック関数 // EM_SETTEXTEXで貼り付けをする場合は,esmReadの処理は不要 //----------------------------------------------------------------------------- function EditStreamCallBack(dwCookie: Longint; pbBuff: PByte; cb: Longint; var pcb: Longint): Longint; stdcall; var pGetText : Pointer; GetText : String; //EM_SETTEXTEXで使用する時は,AnsiStringにする begin try case TEditStreamMode(dwCookie) of esmWrite: begin pcb := Form1.FStream.Write(pbBuff^,cb); //リッチエディトのテキスト(RTF形式)の文字列取得 //EM_STREAMOUTのフラグにSFF_SELECTIONがあれば,選択テキストの取得となる //フラグがSF_TEXTの時は,プレーンテキストの取得となる //(EM_STREAMINにもSF_TEXTの指定が必要) pGetText := Pointer(GetText); GetMem(pGetText, cb); try Move(pbBuff^, pGetText^, cb); GetText := PChar(pGetText); finally FreeMem(pGetText); end; end; esmRead : pcb:= Form1.FStream.Read(pbBuff^,cb); end; Result:= 0; except Result:= 1; end; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.