2018年7月17日火曜日

クリップボードのテキスト置換 WinBatchEh


タイトルの通り、クリップボードのテキストを置換してクリップに戻すってことをここ数ヶ月やりたかった

ふと思いついてまずはjavascriptで作ってみたんだが、クリップボードへテキストを送るのは簡単なんだけど、
取得の方が難しくて、一旦ActiveXObjectとしてieを作らなくちゃいけない
まあそれは何とかなったんだけど、ふとプロセスを見たらieが解放されないで残ってることが判明
気持ちが悪いのでいろいろ調べたけどうまく解放できない

そんなときふと思い出したのがwinbatchEh
最近wshばかりでこれを忘れてた
windows標準だからwshの方がスマートで良いと思ってたんだろうな
事例というか、解説サイトも豊富だし発展性もあると思うのでこれはこれなんだけど、winbatchEhで書いたらわ
ずか三行で終わった(-_-)

考えたらjavascriptだって実行するのは関連づけされたjscript.exeだし、winbatchEhと変わらないよな
それならwinbatchEhを使った方が良いのかも??
winbatchEhは私が初めて買ったシェア
あまりに良いソフトなので確か二口買ったような気がする(^_^;)
懐かしいなあ
備忘録として一応コード残しとこう

1  javascript

var clipboard = new Clipboard ();
var s = clipboard.getText ();
// WScript.Echo (s);
// "hoge"を|に置換 正規表現オブジェクトにして渡す
var replace= new RegExp("hoge",'g') ;
clipboard.setText (s.replace (replace , '|'));
clipboard.release;

// ===クラス化してある、ネットで見つけた==================
 function Clipboard () {
     // IE のインスタンスを作成
     this.internetExplorer = new ActiveXObject ('InternetExplorer.Application');
     // IEの初期化
     this.internetExplorer.Navigate ('about:blank');
     while (this.internetExplorer.Busy)
         WScript.Sleep (10);
     // クリップボードを取得
     this.clipboard = this.internetExplorer.Document.parentWindow.clipboardData;
      // クリップボードより文字列を取得するメソッド
     this.getText = function ()
     {
         return this.clipboard.getData ('text');
     };
     // クリップボードに文字列をコピーするメソッド
     this.setText = function (s)
     {
         this.clipboard.setData ('text', s);
         return true;
     }
     // IE を解放するメソッド
     this.release = function ()
     {
         this.internetExplorer.Quit ();
         this.internetExplorer=NULL;// 付け加えたけどうまくいかない
         return true;
     }
     return this;
 }

2  WinBatchEh

GETCLIPBOARD stringdata
STR REPLACE stringdata1 %stringdata% "ほげ" "hogehoge"   
SETCLIPBOARD %stringdata1%

ちなみに WinBatchEh って WinBatch が本家
アメリカのシェアだけどもっと本格的にプログラムが書ける
Ehは開発終了っぽいけど、本家の方はどんな感じになってるんだろ?

0 件のコメント:

コメントを投稿