« TortoiseSVNでの変更ファイル等をcopyするwsf | トップページ | kindle PaperWhite用自炊データの目次つきフルスクリーン化 »

2012年8月28日 (火)

クリップボードにアクセスするスクリプト

wsf(wsh)のJavascriptでクリップボードにアクセスする方法を
web検索したら、

WSH よりクリップボードを使う
WSH よりクリップボード、次の手

が見つかりました。
前者は、いちいちダイアログが立ち上がるので
後者を使いたいわけですが、CライクだからJavaScriptを使う
私にはとっかかりの部分がよくわかりません。

で、自分がとっつきやすいようにするため、二つをあわせて
以下のように変更(ほとんどパクリですみません)。とりあえず動作。

<?xml version="1.0" encoding="Shift_JIS" standalone="yes" ?>
<package>
<job id="ClipTest">
<?job error="True" debug="True" ?>
<object id="objFs" progid="Scripting.FileSystemObject" />
<script language="JavaScript">
<![CDATA[

var clipboard = new Clipboard ();
var stxt = clipboard.getText ();
WScript.Echo (stxt);//クリップボードの内容をダイアログ表示

clipboard.setText ("OK : " + stxt);//"OK : "を追加して文字列をクリップボードに書き込み

function Clipboard ()
{
// コマンドのID
var OLECMDID_COPY = 12;
var OLECMDID_PASTE = 13;
var OLECMDID_SELECTALL = 17;

// IE のインスタンスを作成
this.internetExplorer = new ActiveXObject ('InternetExplorer.Application');

// IEの初期化
this.internetExplorer.Navigate ('about:blank');
while (this.internetExplorer.Busy)
  WScript.Sleep (10);

// textarea 要素を作成する
var _textarea = this.internetExplorer.document.createElement ("textarea");
this.internetExplorer.document.body.appendChild (_textarea);
_textarea.focus ();

// クリップボードより文字列を取得するメソッド
this.getText = function ()
{
  _textarea.innerText = "";
  this.internetExplorer.execWB (OLECMDID_PASTE, 0);
  return _textarea.innerText;
};

// クリップボードに文字列をコピーするメソッド
this.setText = function (s)
{
  _textarea.innerText = s;
  this.internetExplorer.execWB (OLECMDID_SELECTALL, 0);
  this.internetExplorer.execWB (OLECMDID_COPY, 0);
  return true;
}

// IE を解放するメソッド
this.release = function ()
{
  this.internetExplorer.Quit ();
  return true;
}

return this;
}
]]>
</script>
</job>
</package>

|

« TortoiseSVNでの変更ファイル等をcopyするwsf | トップページ | kindle PaperWhite用自炊データの目次つきフルスクリーン化 »

JavaScript」カテゴリの記事

コメント

参考にさせていただきました。すでにコピーについては
http://d.hatena.ne.jp/ardarim/20080201/1201882406
を参考に下記のように作成していましたが、取得する方が
大変なようですね。strwwwをコピーします。
var strwww = "test";
var OLECMDID_COPY = 12;
var OLECMDID_SELECTALL = 17;
var objIE = WScript.createObject("InternetExplorer.Application");
objIE.navigate("about:blank");
objIE.document.body.innerText = strwww;
objIE.execWB(OLECMDID_SELECTALL, 0);
objIE.execWB(OLECMDID_COPY, 0);
objIE.quit();
}

取得する場合は下記のように参考にさせていただきました。strxxx に
取得します。
var OLECMDID_PASTE = 13;
var internetExplorer = new ActiveXObject ('InternetExplorer.Application');
internetExplorer.Navigate ('about:blank');
while (internetExplorer.Busy)
WScript.Sleep (10);
var _textarea = internetExplorer.document.createElement ("textarea");
internetExplorer.document.body.appendChild (_textarea);
_textarea.focus ();
var clipboard = new Clipboard ();
var strxxx = clipboard.getText ();
internetExplorer.Quit ();

function Clipboard ()
{
this.getText = function ()
{
_textarea.innerText = "";
internetExplorer.execWB (OLECMDID_PASTE, 0);
return _textarea.innerText;
};
return this;
}

投稿: st | 2014年11月 3日 (月) 11時32分

連絡が大変遅くなりすみません。
ありがとうございます。
参考にさせていただきます。

投稿: tag | 2015年5月 1日 (金) 05時51分

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: クリップボードにアクセスするスクリプト:

« TortoiseSVNでの変更ファイル等をcopyするwsf | トップページ | kindle PaperWhite用自炊データの目次つきフルスクリーン化 »