文章をクリップボードへ送りたいkumakuma - 2008/07/18(金) 23:29 No.1427
|
はじめまして、マクロ機能を使っていろいろ試しているのですがわからないので書き込みました。
目的は、LimeChatで書き込まれるチャット文章を随時クリップボードへ送る。です(すべてのユーザーの書き込み)
私が試していたマクロ機能は以下になります
ユーザー:%mel* コマンド:privmsg チャンネル: メッセージ: 自分の状態:なし 送信者の状態:なし 動作:menu 送信先: 動作の情報:copy %m ここで実行を止める:ノーチェック
これで試しているのですが、うまく動作してくれません マクロの書き方が正しくないのか、クリップボードに送る機能そのものが無いのか悩んでいます。 ご回答よろしくお願いします。
|
Psychs - 2008/07/19(土) 06:00 No.1428
|
> 動作の情報:copy %m
というように、引数を渡すことはできません。 マクロやスクリプトにクリップボードを操作する機能はないので、 外部コマンドを起動するなどしてください。
|
kumakuma - 2008/07/19(土) 17:21 No.1429
|
わかりました。ありがとうございました。
|
Psychs - 2008/08/02(土) 00:23 No.1448
|
2.29 でスクリプトからクリップボードを操作できるようにしました。
|
らい - 2008/08/14(木) 14:15 No.1476
|
いつもありがとうございます。
> 動作の情報:copy %m
対応しましたとありますが、使い方は上記の使い方であっておりますでしょうか。 動作をprintにして見ると正常にメッセージ送信が行われることを確認しているため、条件判定部分のミスではないとは思うのですが、 動作の情報の部分にcopy %mを記入してもクリップボードに入らないようです。
Ver2.29にて確認を行いました。 よろしくお願いします。
|
Psychs - 2008/08/14(木) 19:25 No.1477
|
マクロではなく、スクリプトでの対応です。
|
Mcvein - 2008/09/08(月) 03:02 No.1501
|
スクリプトでのクリップボード操作への対応とありますが、 実際スクリプトに if(prefix.nick != myNick || prefix.nick == myNick){ if(text.match(/a/)){ ・ ・ ・ clipboard.setText(ip + ':10800'); } } のように書き込んで実行すると、 自分の発言時のみチャットにクリップボードに送った内容が 自分の発言として書き込まれてしまいます。 これはどういうことなのでしょう?
|
Psychs - 2008/09/09(火) 09:38 No.1502
|
スクリプトが断片的でよくわかりません。 全文を貼りつけて、何をやりたいのかわかるように書いてもらえますか。
|
Mcvein - 2008/09/09(火) 18:46 No.1504
|
すみません、確かにそうですよね...
function event::onChannelText(prefix, channel, text){ if (channel.match(/^#Script_Test$/) || channel.match(/^#hisouten_kuso$/)){ if (prefix.nick != myNick || prefix.nick == myNick){ if (text.match(/ip/) || text.match(/いp/)){ var aaa; aaa = executeCommand("nslookup " + prefix.address); //nslookupでホストからIPを逆引き var bbb; bbb = aaa.replace(/192\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/,""); //経由されたローカルIPも返ってくるのでそれを取り除く var ccc; ccc = bbb.match(/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/); //残った文字列からIPアドレスに当たるものを正規表現で抽出。 var ddd; ddd = ccc.toString(); //文字列に変換 var eee; eee = ddd.replace(/\,([0-9]{1,3})\,([0-9]{1,3})\,([0-9]{1,3})\,([0-9]{1,3})/,""); //なぜかカンマ区切りのIPアドレスも返されるのでそれを取り除く clipboard.setText(eee + ':10800'); //クリップボードへ移す } } } }
要は別スレにあるIPを表示するスクリプトを利用して、 クリップボードへIPを移すスクリプトを作りたいと思っておりました。
|
Psychs - 2008/09/10(水) 12:07 No.1505
|
作りたいのは、他の人が「ip」のように発言したときに、 IPアドレスをクリップボードに入れるスクリプトでしょうか。
以下のようにすると、動いているようです。 困ったら、処理途中の状態を log 関数でスクリプトコンソールに出力して、 確認するようにしてください。
function event::onChannelText(prefix, channel, text) { if (channel.match(/^#Script_Test$/) || channel.match(/^#hisouten_kuso$/)) { if (text.match(/ip/) || text.match(/いp/)) { var s; s = executeCommand("nslookup " + prefix.address); log(s); s = s.replace(/192\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/,''); log(s); s = s.match(/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/); log(s); s = s + ':10800'; log(s); clipboard.setText(s); } } }
|
|