[リストへもどる]
一 括 講 読

投稿時間: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;
で、メッセージビューに対して右クリックメニューに追加しています。

もし、上記について情報などありましたらよろしくお願い致します。



- Web Forum -