プラグインからフォーカスを外す

93149 - [meta] No way to move focus between plugin and browser from keyboardMozRepl 経由で外部から。

↑こんな感じのスクリプトを書いて「ショートカットを作成」し,実行時の大きさを「最小化」にして適当なキーを割り当てるだけ。
単に minimize();restore() を送りつけると若干ちらつくのが嫌で WshShell.AppActivate() を使ってみたが,--no-remote で複数起動中に破綻するのであまりよろしくない。Firefox に自身の pid 吐かせる方法無いかな。*1

予め--no-remoteで起動するFirefoxのプロファイルではタイトル文字列をabout:configからnightly.templates.titleで改造しておいて、タイトル文字列でAppActivateとかでいけないですかね?

http://subtech.g.hatena.ne.jp/h2u/20091006/1254769685

文字コードまわりが不安で title にはあえて触れなかったのでした。さっき試したら案の定動かず…。

$mr->cmd('repl.print(document.title)');
my $title = $mr->getline;
$title =~ s/^\s+|\s+$//;
Win32::OLE->new('WScript.Shell')->AppActivate($title);

↑失敗したコード。

完全一致である必要は無いので、これでちゃんと前面に移動してくれた。

お膳立てがこれ以上増えるのは避けたくタイトル変更云々はスルーしてたけど,なるほど部分一致させることは考えてなかった。
でも「Mozilla Firefox」だと一般的すぎるので*2普段使う側に充分ユニークなタイトルを設定しないとダメそう。

*1:09-11-14: js-ctypes で実現。確実に前に出せるようになったが今度はフォーカスがうまくいかない。Fx3.6b で何か変わったらしい

*2:Google を開いてる Google Chrome誤爆したりとか