人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【JavaScript】外部プログラム実行できますか?

IEの選択文字列を、Perlスクリプトに渡したい
http://www.hatena.ne.jp/1131762882
という質問をしたら、JavaScriptでできる、と教えていただきました。

しかし、JavaScriptで、
「文字列をクリップボードへコピーする」
「外部プログラムを実行する」
ことはできるのでしょうか?

●質問者: radio3
●カテゴリ:コンピュータ
✍キーワード:IE JavaScript Perl クリップボード コピー
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● aki73ix
●10ポイント

http://www.7key.jp/hp/js/js9.html

ホームページ作成の第一歩【JavaScript TEXTAREAの中身をクリップボードへ】

Perlに選択文字列を直接渡せれば、クリップボードに渡す必要はないのかと思うのですが、クリップボードへの格納は


外部のプログラムを呼ぶといっても、リモートPCで処理してやるのでしたら、http://www.hatena.ne.jp/1131762882 にあるように、FORMへSUBMITするのが最も簡単です


FORMを使わない場合は、JavaScriptのOpen.Windowで、URLに文字列を渡してやる用になります

open.window(”http://www.foo.com/sample.pl?SELTEXT=”+seltxt);

見たいな感じでもよいと思います(SELTXTはURLエンコードの必要があります)


PERLはリモートPCにおいてはだめなのでしょうか?(クリップボードの値を書き換える必要があるのだとすると外部じゃないとダメですね)


ただ、外部プログラムがローカルにあるのでしたら、そうもいきませんね

window.clipboardData.setData(”text”,文字列);

で可能です

http://hp.vector.co.jp/authors/VA015664/ptplus.htm

IE Powertoys Plus!

右クリックのコンテキストメニューはローカルのJavaScriptを外部プログラムとして呼び出すのには向いていますが、プログラムを呼ぶのはあまり向いていないようですね

http://www1.0038.net/~laplace/Tools/translation/menu.htm

メニュー項目の追加方法 (Internet Explorer - ブラウザ拡張)

メニューバーのツールやツールバーに追加するのがいいかも知れません

こちらにメニューバーを追加して、外部プログラムを起動する方法について書かれています


レジストリを操作するので レジストリの編集が出来たら regファイルをエクスポートしてやるとよいと思います


実際にレジストリエディタで

HKEY_LOCAL_MACHINE¥SOFTWARE¥Microsoft¥Internet Explorer¥Extensions

を見て、YahooMessengerやMSNMessenger などの仕組みをみると参考になります

◎質問者からの返答

ありがとうございます。

>PERLはリモートPCにおいてはだめなのでしょうか?(クリップボードの値を書き換える必要があるのだとすると外部じゃないとダメですね)

おっしゃるとおり、Perlで処理した結果をクリップボードに格納します。というわけで、ローカルPC内での処理が必要なのです。

この件は、クライアント・サーバ、cgi, リモートホストは全く関係ありません。

ローカルPC内で、IE上のテキストをPerlで処理したいだけです。

1)マウスドラッグして文字列選択

2) 1〜2クリックでPerlスクリプト(cgiではありません)実行

ということがしたいのです。

2)右クリック→[コピー]クリック

3)右クリック→[myscript.pl実行]クリック

というように操作すれば、処理自体は実現できます。

(Perlでクリップボードの内容取得が可能)

これだと4度も右左クリックしなければならないため、1-2クリックで実現する方法を求めていました。

結局、JavaScriptではできない、ということだったようですね。

ありがとうございました。

>Perlに選択文字列を直接渡せれば、クリップボードに渡す必要はないのかと思う

そのとおりです。他に良い方法があれば、クリップボードを経由させる必要はありません。

ただし、httpサーバに渡すのではありません(cgiではない。DDE通信等)。

メニューバーやツールバーでも良いのですが、具体的に

選択文字列コピー実行 → myscript.pl実行

を実現できる方、いらっしゃいますか〜?

JavaScriptを登録するだけでは意味がありません。(スクリプト内で外部プログラムmyscript.plを実行できるなら別ですが)

選択文字列をクリップボードにコピーするだけなら、メニューバーやツールバーに追加する意味はありません。(右クリック→コピーで十分)

選択文字列コピー

myscript.pl実行

を1クリック(起動コマンド一発)で実現できる方、お待ちします。


2 ● yuuji_a
●5ポイント

http://www3.plala.or.jp/aur/migi.htm

右クリックサーチ君

「可能」です。

レジストリの「HKEY_CURRENT_USER¥Software¥Microsoft¥Internet Explorer¥MenuExt¥」をいじって、InternetExplorerのコンテキストメニュー(右クリックメニュー)に、JavaScriptで特定のCGIへ変数を送る記述をしたHTMLを登録して、ドラッグして右クリックで送ってやれば良いのです。


…と、言ってもそのソースを書くよりも簡単な方法があります。「右クリックサーチ君」(参考URL)の「ユーザ定義」機能を使えばOKです。「ユーザ定義追加」に「検索結果URL」と文字コードを登録して保存後、右クリックメニューに追加するだけです。文字コードさえ間違えなければ、1分でコンテキストメニューの機能拡張が出来ますよ。

◎質問者からの返答

cgiじゃないと繰り返しているのですが、Perl = CGIととられてしまうようですね。

「右クリックサーチ君」でアプリケーションの実行機能を追加できるのですか?


3 ● aki73ix
●100ポイント

http://nifberry.727.net/test/hatena158.lzh

回答最後の方で、Localでもできると書いたつもりだったのですが意図が伝わらなかったので、サンプルを作成しました


まず、hatena158.htmの中の

PWin.location.href=(”/WIN2k/Web/hatena158.pl”);

をmyscript.plのあるフルパスに置き換えます(これはうちでActivePerlを動作させた時のパスなので)

hatena158.infの中にあるhatena158.plをmyscript.plに書き換えてください


Hatena158.infを右クリックしてインストールします


IEを再起動すると右クリックメニューに

「クリップ起動」というのが追加されていて

範囲選択した文字列をクリップボードに格納して、指定したPERLSCRIPTを実行します


hatena158.htmの中身は結局JavaScriptになります


御確認ください

(なお、プログラムの追加と削除からインストールしたものは削除できます)


Win2000+ActivePerl+IE5.01SP4とIE5.5SP2で動作確認しました

◎質問者からの返答

aki73ixさんありがとうございます。

サンプル作成していただいて、感激しました。

しかし、結論から言うと、ダメでした。

クリップボードへ転送までは動作しました。

しかし、次のLocation.hrefはやはり動きません。

C:¥Win2k¥Webというフォルダを作り、書庫の中身を展開し、.plの1行目だけ修正して、再インストールしてもダメ。

location.href=(”file://

としてもダメ。(file://〜.plをIEのアドレスバーに貼り付けてGoすると、plは動作します。.plダブルクリックでも.plスクリプト自体は動作します)

当初Yahoo!サイト開いて試していたので気づきませんでしたが、

The requested URL /WIN2k/Web/hatena158.pl was not found on this server.

エラーのようです。

location.href でクライアントPCに行っていないということでしょうか?

1時間以上格闘しましたが、疲れました。

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ