投稿時間:06/03/06(Mon) 09:51 投稿者名:Lunax
URL :
タイトル:[Plugin作成]クリップボードにコピー
はじめまして、Lunaxと申します。 早速なのですが、Becky Plugin SDK for Delphiにて「選択文字列を半角変換後コピー」というプラグインを作成しています。 下記にコードを記述します。
======================================================= // Beckyに対してコピーコマンド実行 bka.Command(0, 'EditCopy'); // Beckyに対してコピーコマンド実行 Str := Clipboard.AsText; // 全角を半角に変換(Str => Chr) LCMapString(GetUserDefaultLCID(), LCMAP_HALFWIDTH, PChar(Str), Length(Str) + 1, Chr, Sizeof(Chr)); // 半角変換後のChrをクリップボードにコピー Clipboard.AsText := Chr =======================================================
という簡単な処理を行っています。 ところが「bka.Command(0, 'EditCopy')」でクリップボードにコピー出来ていないっぽいのです。 しかし「bka.Command(0, 'EditCopy');」と「Str := Clipboard.AsText;」の間にShowMessageを挟むとうまくコピーできるのです。
======================================================= bka.Command(0, 'EditCopy'); ShowMessage('クリップボードにコピーしました'); Str := Clipboard.AsText; LCMapString(GetUserDefaultLCID(), LCMAP_HALFWIDTH, PChar(Str), Length(Str) + 1, Chr, Sizeof(Chr)); Clipboard.AsText := Chr =======================================================
ShowMessageはメッセージを表示するかしないかなので、本来の処理には関係ないはずなのですが、 ShowMessageを追加することによって上手くコピーできているようです。
また、当方Delphi7、usesにClipbrdとDialogsユニットを追加しています。 メニュー追加は、BKC_OnMenuInitに case nType of BKC_MENU_MSGVIEW : begin // 右クリックメニューに追加 AppendMenu(hTargetMenu, MF_SEPARATOR, 0, Nil); nID := bka.RegisterCommand('Test for BKC_MENU_MSGVIEW Plugin', nType, @CmdProc); AppendMenu(hTargetMenu, MF_STRING, nID, 'Plugin Test BKC_MENU_MSGVIEW'); end; end; で、メッセージビューに対して右クリックメニューに追加しています。
もし、上記について情報などありましたらよろしくお願い致します。
|