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


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

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/11/12 16:19:12
  • 終了:--

回答(3件)

id:aki73ix No.1

aki73ix回答回数5224ベストアンサー獲得回数272005/11/12 17:00:09

ポイント10pt

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”,文字列);

で可能です

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

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

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

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

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


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


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

HKEY_LOCAL_MACHINE¥SOFTWARE¥Microsoft¥Internet Explorer¥Extensions

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

id:radio3

ありがとうございます。

>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クリック(起動コマンド一発)で実現できる方、お待ちします。

2005/11/12 18:39:33
id:yuuji_a No.2

yuuji_a回答回数9ベストアンサー獲得回数02005/11/14 00:54:18

ポイント5pt

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

右クリックサーチ君

「可能」です。

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


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

id:radio3

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

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

2005/11/14 17:11:33
id:aki73ix No.3

aki73ix回答回数5224ベストアンサー獲得回数272005/11/16 12:11:51

ポイント100pt

回答最後の方で、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で動作確認しました

id:radio3

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時間以上格闘しましたが、疲れました。

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

2005/11/18 11:28:16
  • id:aki73ix
    少し改良してみました

    こちらでローカルのHTMLで実験してたのが動かなかった原因だったようです

    PWin.location.href=(”file:///c:/windows/web/hatena158.pl”);
    のように書き換えてみてください
    http://nifberry.727.net/test/hatena158a.lzh

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません