Home / Diary / タグ: ahk

12

目次

  1. 初めてのエルゴノミクスキーボード
  2. ニコニコ動画専用Opera
  3. AutoHotKeyでいつでもウインドウを最前面表示+α
  4. あの素晴らしいCSSを二度三度
  5. AutoHotKeyを使ってX-Finder上で手軽にコマンドプロンプト
  6. AutoHotKeyを使ってDrag&Dropで手軽にbase64エンコード
  7. AutoHotKeyでOperaにクリップボード内のURLを全部開かせる
  8. AutoHotKeyでOperaの選択テキスト内のURLを一気に開く
  9. AutoHotKeyでOperaでもUserJSをインストールできるようにする
  10. AutoHotKeyでOperaにCopyURL+

初めてのエルゴノミクスキーボード

使用している300円キーボードが程良く煤けてきた&黄ばんできたので廃棄して新しくMicrosoft Comfort Curve Keyboard 2000を購入。

「エルゴノミクス (人間工学) デザインに基づいた滑らかなカーブのキー配列」とあるように、微妙にカーブしていて肘を真っ直ぐに伸ばさずとも自然な形でフォームポジションに入ることができる。キータッチも悪くないし変態配列でも無い。2000円切ってる割にすごい使いやすいわ。

ただ、指先の収まりがいいだけに手首の下がりっぷりが気になる。これはパームレスト付きのNatural Ergonomic Keyboard 4000のほうを買ったほうが良かったのか。失敗した。

さらに欲張って無線にしたい。となるとNatural Ergonomic Desktop 7000か。さすがに1万近くなってしまうが、エルゴノミクスマウス付き。次はこれにしよう。

特殊キーを殺す

今回購入したキーボードの上部にはアプリケーション操作用の特殊なキーが搭載されていて、ブラウザの進む/戻る、音量の+-、電卓の起動などにアクセスできる。・・・のはいいんだが、ぶっちゃけいらないので付属ソフトウェアはインストールしないことにした。

んが、なぜか電卓キーだけ生きているようで、押すと電卓が起動してしまう。テンキーの上にあるから暴発は少ないだろうが、それでも精神衛生上良くないので無効化することにした。

まずはAutoHotKey用の適当なスクリプトを作成して起動。タスクトレイのAutoHotKeyアイコンからメニューを出してOpenを選択。ウインドウメニューのViewからKey history and script infoを選択。

F5を押す度にキーボード入力の履歴を表示できるので特殊キーのキーコードをAutoHotKeyで一つずつ調べていく。一つずつ調べた結果、以下のようになった。

このキーコードを利用してホットキーを設定する。

#NoTrayIcon
vkA6::!Left
vkA7::!Right
vkAE::SoundSet -4
vkAF::SoundSet +4
vkAD::SoundSet, +1, master, mute
vkB3::return
vkAC::!Home
vkAA::return
vkB4::return
vkB7::Run, %SystemRoot%\system32\calc.exe

デフォルトを再現するとこなかじ。再生・検索・メールボタンはインストールしたソフト経由で直接アプリケーションを叩いているっぽいのでとりあえずreturnで無効化してる。

あとは自分で好きな動作を設定することが可能になる。上記デフォルトにプラスアルファしてもいいし、全キーカスタマイズしてもよし。

Info

2008
1222

Tagsahkpc

ニコニコ動画専用Opera

Operaはプロファイルフォルダを複数作成することにより異なる設定で起動することが可能になっている。これを利用してニコニコ動画を視聴することに特化したOperaを作るのが目的。

専用プロファイルを使用する上での問題点

お試し版(2008年8月28日)

すぐにニコニコ動画に特化したOperaを体験できるようにお試し版を用意してみたので、試してみたい方はこちらからどうぞ。

ニコニコ動画専用Opera お試し版

作業に入る前に

Operaはプロファイルを保存するフォルダが設定によって変わってしまう。

Operaをインストールしたフォルダ内にあるoperadef6.iniを開き、Multi Userが0になっている場合はOperaをインストールしたフォルダ。そうでないならWindowsのアプリケーション設定保存フォルダがプロファイルを保存するフォルダとなる。Multi Userは初期状態では1になっている。

基本的にはどちらでも問題無いが、Operaをインストールしたフォルダに全てまとまっていると作業がやりやすいので、自分一人しかOperaを使用していないのであればMulti Userは0にしておくことをオススメする。

以降は便宜上OperaをインストールしたフォルダをC:\Program Files\Opera\とし、Multi Userが0のシングルユーザーとして解説を進める。

ちなみにWindowsのアプリケーション設定保存フォルダは、ここ。

C:\Documents and Settings\[USERNAME]\Local Settings\Application Data\Opera

まっさらなプロファイルを作る

Operaは起動時にプロファイルが見当たらない場合に新しいプロファイルを作成することを利用する。

  1. Operaを終了する
  2. Operaのプロファイル保存フォルダ内にある「profile」フォルダを適当な名前に変える。便宜上「profile_」とする。
  3. Operaを起動する。
  4. 新たに「profile」フォルダが作成されるのでOperaを終了する。
  5. 新たに作成された「profile」フォルダを「nico」に名前を変える。
  6. 「profile_」フォルダの名前を「profile」に戻す。
  7. 「nico」フォルダ内のopera6.iniを開いて、「Opera\profile」となっているところを全て「Opera\nico」に置換する。
  8. メールやフィードを共有したく無い場合は、同じようにopera6.iniを開いてMail Root Directoryのパスを変える。C:\Program Files\Opera\nico\mailのようにプロファイルの中のフォルダを指定するのが好ましい。

これでOperaをインストールしたフォルダにnicoとprofileという2つのプロファイルが存在することになった。nicoを専用プロファイルとして運用していく。

以降は特に記載しない限り、専用プロファイルをカスタマイズしていく。

専用プロファイルでOperaを起動する

opera.exeを右クリックしてショートカットの作成を選択。ダイアログ内の「リンク先」を以下のように変える。

C:\Program Files\Opera\opera.exe /Settings "C:\Program Files\Opera\nico\opera6.ini"

このように、/Settingと専用プロファイルのopera6.iniのフルパスを付ける。このショートカットを起動すれば通常プロファイルではなく専用プロファイルが起動するようになる。

参考:Opera のコマンドラインオプション

外部プログラムからURLを開く際の問題

コマンドラインから以下を入力してEnterを押してみよう。

C:\Program Files\Opera\opera.exe http://www.google.co.jp/

使用中のOperaでGoogleが開くはずだ。Operaが起動していないなら起動してGoogleを開くだろう。

この時、通常プロファイルと専用プロファイルの両方が起動している場合はどうなるか?

答えは「最後に起動したプロファイルで開く」。起動順番次第では通常プロファイルで開きたくても専用プロファイルで開いてしまうのだ。

ならば先ほどのようにプロファイルを指定すれば・・・

C:\Program Files\Opera\opera.exe /Settings "C:\Program Files\Opera\nico\opera6.ini" http://www.google.co.jp/

しかしこの試みは失敗に終わる。あくまでもこれは起動オプションであり、既に起動してしまっている場合は無効となるからだ。

プロファイルの識別

上記の問題をOperaだけで解決するのは不可能なのでAutoHotKeyを利用する。

AutoHotKeyのスクリプトにURLが渡されたら特定のプロファイルを識別してウインドウをアクティブ化させる。URLをクリップボードに入れた状態でCtrl+B(Paste and Go)のキー入力を送れば目的が達成できるはずだ。

ではどうやってプロファイルを識別するか。

opera:configから弄れる設定の中にタイトルバーの「Opera」という文字列を変更できるオプションが存在する

opera:config Title

このリンクをOperaで開くと目的の入力欄が表示されるので、そこにNicoVideoと入力したら、下のほうにスクロールして保存ボタンを押す。見事にタイトルバーが「設定ファイルエディタ - Opera」から「設定ファイルエディタ - NicoVideo」になったはずだ。

タイトルバーのOperaがNicoVideoに

後はAutoHotKey側でウインドウタイトルの末尾でプロファイルを識別してURLを渡せばよい。

注意

識別するのに正規表現を利用しているので、よく分からない場合は識別用のタイトルを英数字のみで構成すること。

プロファイル識別ツール

完成物はこちら。

opmultiprof.zip

実行ファイルとソース付き。ダウンロードしたら付属のiniファイルを編集する。

path_prof
プロファイルフォルダのフルパス。最後の¥は付ける。
default_prof
Operaのままで問題無い。
single_key
シングルキーショートカットを使っているならtrueにする。

次にOperaをインストールしたフォルダにあるopera.exeを_opera.exeに名前を変える。そしてopmultiprof.exeをopera.exeと名前を変えて、opmultiprof.iniと一緒にOperaをインストールしたフォルダへコピーする。

なぜこのようにするかというと、他のアプリケーションからはブラウザの指定がopera.exeのままであり、それら全てをopmultiprof.exeにするのは非常に手間が掛かかってしまう。ならばファイル名を変えてしまえばよい。結局はURLを渡すので問題は無い。

それと、先ほど作成したであろうショートカットも右クリックで開いてopera.exeを_opera.exeに直しておこう。

この時点でOperaをインストールしたフォルダはこんな感じになっているハズだ。

ファイル構成

シングルキーショートカットについて

single_keyをfalseにしている場合はURLを開く際にF8→Ctrl+V→Sfhit+Enterと自動で入力して開いている。この方法だとOperaのアクティブ化につまづいた場合に正常に開けない場合があるので、trueを推奨する。

single_keyをtrueにしている場合はShift+Ctrl+Bで新しいページを開いてURLを開く。だが、Opera9.50以降を新規インストールしているとこの動作は設定されていないので、以下の設定ファイルを適用して設定して欲しい。

プロファイルを指定してURLを開く

コマンドラインからは

opera.exe [ウインドウタイトルの末尾] [プロファイルのフォルダ名] [URL]

のように記述する。(このopera.exeは前述したopmultiprof.exeをリネームしたもの。)Googleを開かせるなら以下のようになる。

opera.exe NicoVideo nico http://www.google.co.jp/

こうすれば、専用プロファイルが起動していないなら起動してGoogleを開き、既に起動しているなら専用プロファイルのOperaを識別してからGoogleを開いてくれる。

opera.exe http://www.google.co.jp/

このようにURLだけ渡された場合は通常プロファイルと判断して開かせる。

注意

Opera自体は実行ファイル名が_opera.exeでも基本的には問題は無いが、_opera.exeで起動している状態で通常のブラウザに設定しないこと。これをやってしまうとWindowsのレジストリに_opera.exeで登録されてしまうので後々面倒になってしまう。

通常のブラウザに指定したいなら、_opera.exeにする前に行うこと。

ブラウザを指定できないソフトウェアはどうするか

例えばThunderbird。メール本文内のURLリンクをクリックすると標準のブラウザで開こうとする。

この場合はopera.exeにURLを渡さず、既に起動しているOperaに直接渡してしまうので、結果的に最後に起動したプロファイルで開いてしまう。

有効な対策を思いつけなかったので、専用プロファイル→通常プロファイルの順に開いて、Operaを終了させないでずっと常駐させるのが、現時点では必須になってしまう

そこで、フォルダ内にあるショートカットを全て起動してから_opera.exeを起動するスクリプトを作成した。Windowsを起動した後にこれを実行すればいいだろう。

opmultiboot.wsf

カスタマイズ

プロファイルの作成からURLを渡す方法までは終わった。後は使いやすくするように色々とカスタマイズしよう。

自動的に専用プロファイルで開く

ここだけ通常プロファイルをカスタマイズする。

通常プロファイルでニコニコ動画へのリンクを開いたら、即座に専用プロファイルで開くようにしてしまおう。

まず、Operaの「ツール→設定」から「詳細設定」タブを開いて左側から「プログラム」を選択。右側の追加ボタンを押すとダイアログが表示される。

ダイアログ内のプロトコルにはnicoと入力。「他のアプリケーションで開く」欄でC:\Program Files\Opera\opera.exeを選択して、パラメータにはNicoVideo nicoと入力する。

新規プロトコル設定

最後にnicovideo_linkprotocol.jsを導入すれば完了。ニコニコ動画のページを開こうとすると専用プロファイルで開いてくれるようになる。スクリプトの仕様上ブランクページも一緒に開いてしまうので無視するか閉じて欲しい。

User JavaScriptの導入についてはUser JavaScript(Opera-PukiwikiPlus!)を参考にして欲しい。

通常プロファイルで開く

専用プロファイルで開いたページを通常プロファイルで開きたくなる時があるかもしれないので、右クリックからページを開けるようにしよう。

ニコニコ動画専用プロファイル:nicovideo_menu.ini

このリンクをクリックしてダイアログに対してOKと答えると、右クリックメニューの一番上に「通常プロファイルで開く」という項目が表れるようになる。

あとは一旦Operaを終了してC:\Program Files\Opera\nico\menu\nicovideo_menu.iniをテキストエディタで開こう。下記のようになっているはずなので、Operaのフォルダを自分の環境に合わせて保存。Operaを起動して実際に通常プロファイルで開けるか確認してみよう。

[Link Popup Menu]
Item, "通常プロファイルで開く" = Execute Program, "C:\Program Files\Opera\opera.exe", "%l"

[Document Popup Menu]
Item, "通常プロファイルで開く" = Execute Program, "C:\Program Files\Opera\opera.exe", "%u"

参考:FAQ/5.カスタマイズ(Opera-PukiwikiPlus!)

アドレスバーから検索

検索バーは幅が小さいし、アドレスバーから検索する時はニックネームの入力が面倒なので、アドレスバーに単語一つだけ入力してニコニコ動画から検索できるようにしよう。

Enable HostName Expansionのチェックを外し、Enable HostName Web Lookupにチェックを入れる。そしてHostName Web Lookup Addressに以下を入力する。

http://www.nicovideo.jp/search?ref=top&s=%s&submit.x=0&submit.y=0

これでアドレスバーに単語一つ入れるだけでニコニコ動画から検索できるようになった。動画のIDで検索した場合は動画を開いてくれないのでUser JavaScriptで解決する。

nicovideo_addidlink.user.js

これを導入すればsm123456で検索した場合、検索結果のsm123456という文字に動画へのリンクが付くようになる。

ここまでくると通常の検索バーは必要無くなるので思い切って削除してしまおう。

せっかくなのでスピードダイアルの検索欄もニコニコ動画にする。

ニコニコ動画のトップページを開いて検索欄で右クリックし、検索の作成を選択。キーワードはnにする。さらに詳細ボタンを押して「Speed Dialの検索エンジンとして使用する」にチェックを入れる。これでスピードダイアルの検索欄がニコニコ動画になったはずだ。

検索エンジンがニコニコ動画になった

参考:そういうことじゃないんですよ

見た目をスリムにする

まずはOpera Standard Slim Skinを開いてDownload Skinボタンをクリック。ツールバーがやたらと細くなったはずだ。次に下のリンクを開いて設定ファイルを読み込もう。

ニコニコ動画専用プロファイル:nicovideo_toolbar.ini

導入後はステータスバーが消えて、さらに早送り・巻戻し・認証管理・パネル表示ボタンが消えるはずだ。

次にメニューバーを非表示にしよう。以下のToggle Menuボタンを適当なツールバーにドラッグしてボタンを押せばメニューバーが非表示になる。もう一度押せば表示される。メニューバーを非表示にしたらボタンを右クリックしてツールバーから削除しよう。

Opera用ボタン:[Toggle Menu]

このままだとメニューにアクセスできないので、ツールバーにメニューを表示するボタンを追加する。

Opera用ボタン:[Menu Button]

先ほど同じようにツールバーへ追加する。戻るボタンの左がいいだろう。これを押せばメニューが表示されるようになる。

さらにnico2assist.user.jsを導入して、動画ページ内の余計な要素を表示させなくする。

最終的にこうなる。

スリムになったOpera

実にスリム。動画部分がページの一番上にくるのでわざわざスクロールさせる手間が必要ない。

コンテンツブロック

時報やでかいバナーは邪魔なのでコンテンツブロックを利用して読み込ませなくする。Operaのメニューから「ツール>詳細ツール>コンテンツのブロック」を選択して以下のURLを1行ずつ登録する。

http://ad.nicovideo.jp/images/*
http://www.nicovideo.jp/swf/billboard*
http://www.nicovideo.jp/img/tpl/head/icon/*

仕上げ

Operaをさらに高速にする、あまり知られてない10の方法+αを参考に高速化設定を行う。

プラグインなんかはShockwave Flash以外必要無いのでモリモリ消そう。自分は以下の4行をignore-plugin.iniに追加してプラグインを削除している。

nppl3260.dll  = RealPlayer(tm) G2 LiveConnect-Enabled Plug-In (32-bit)
nprpjplug.dll = RealPlayer Version Plugin
npwmsdrm.dll  = MicrosoftR DRM
npdsplay.dll  = Windows Media Player Plug-in Dynamic Link Library

ニコニコ動画で使えるユーザースクリプトを参考に、便利そうなスクリプトも導入しておく。

完成

ニコニコ動画に特化しているので機能は少ないが、動作が軽い。起動も若干早いが、一度起動したら起動しっぱなしなのであまり意味は無い。それとコンパクトなのでデスクトップの端に置いて他の作業をしながら眺めることができる。

もしニコニコ動画のためだけにProxomitronを導入していたのならば、通常プロファイルでは不要になるのでそちらの動作がほんの少し軽くなるだろう。

ブックマークが独立しているのでマイリストとしてフル活用できる。ブックマークした際に説明欄に入力したテキストは、ブックマークの編集かブックマークパネルからの検索で引っかかるので、タグを入れるなりして管理すれば良いだろう。もちろんフォルダをタグとして扱っても良い。

履歴パネルを開けば「最近見た動画」ページは不要になる。こちらは0件から数千件まで、さらには最後に見た日付までわかる。

作成経緯

そもそもの発端はOpera9.50になってDetach Pageが使えなくなったこと。いや、使えるが、タブだけではなくウインドウ丸ごと切り離すという教育上不適切な発言のため削除な仕様になってしまった。

そこで今度はDetachしたウインドウ専用のボタンを用意して、押すとツールバーが消えてシンプル表示になるようにしたのだが、その設定がDetach元のウインドウにも伝播するという、これまた教育上不適切な(ryな仕様でヘコーと言わざるを得ない。

んで、頭を抱えていたところ「これ別プロファイルでやったほうよくね?」という天啓が降りてきたのでこのような形になった。元々Detach Pageはニコニコ動画ぐらいでしか使わなかったからこれで十分だった。

今回はニコニコ動画専用だったが、複数プロファイルを同時に扱うために必要なものが色々と分かったので、応用して色々なプロファイルを作ろうと思う。

アイコンについて

opmultiprof.exeのアイコンは何も設定しないとAutoHotKeyと同じになってしまう。そのままopera.exeに名前を変えて利用すると、ランチャー等のアイコンまでAutoHotKeyになってしまう場合があるので、とりあえずNuvolaアイコンを使用した。

他のアイコンにしたい場合はahkファイルを自分でコンパイルするか、Resource Hacker等で変更して欲しい。

参考

Info

SBM Comments

edvakf
別profileのOperaを特定WebApp専用クライアントに、決定版。最後の高速化など、細部まで詰められてる。AutoHotKeyはMacに無いのが残念。独自プロトコル感動した。はてなスター2008個。これをOpera@USBにして配布できないかな?
asiamoth
おお、Operaってprofileディレクトリがあるのは知っているけど、切り替えもできたのか! 今ごろ知った。
taroukaja
 ニコニコ動画
efcl
ニコニコ動画閲覧専用のOperaを作る。 プロファイルを分けてやるってことかな。
ketruss
複数のプロファイルを使うという発想。
mono0x
Detach使えなくなったのは痛いけど、これはこれでやり過ぎな感が
miya2000
「そもそもの発端はOpera9.50になってDetach Pageが使えなくなったこと。いや、使えるが、タブだけではなくウインドウ丸ごと切り離すという教育上不適切な発言のため削除な仕様になってしまった。」
toton
”Operaはプロファイルフォルダを複数作成することにより異なる設定で起動することが可能になっている。これを利用してニコニコ動画を視聴することに特化したOperaを作るのが目的。”

2008
0826

Tagsahknicovideooperauserjs

AutoHotKeyでいつでもウインドウを最前面表示+α

Pause::WinSet, AlwaysOnTop, TOGGLE, A

これでPauseキーを押したときにアクティブなウインドウは最前面に表示される。既に最前面なら通常表示になる。

使い道は色々というか、ながら作業の為にあるような機能なので、ニコニコ動画やYoutubeで再生しているウインドウを切り離しつつ最前面表示させる、といったのが主な使用方法になるだろう。

せっかくなんで、ながら作業支援をもう1つ。

ScrollLock::
{
    WinGet, trans, Transparent, A
    if trans is number
    {
        trans := trans - 32
        if trans > 0
            WinSet, Transparent, %trans%, A
        if trans < 0
            WinSet, Transparent, OFF, A
    }
    else
        WinSet, Transparent, 223, A
    return
}
+ScrollLock::
!ScrollLock::
WinSet, Transparent, OFF, A
return

ScrollLockキーを押すごとに徐々にアクティブウインドウを透過させていき、透過度が0を下回ったら透過を解除。ShiftかAlt押しながらScrollLockキーで透過を強制解除することができる。XP専用。

これらのスクリプトを使う場合、PauseキーやScrollLockキーを自分の手に馴染むキーに変更してから使うといいだろう。

Info

SBM Comments

amatanoyo
様子見。

2007
0710

Tagsahk

あの素晴らしいCSSを二度三度

FirefoxにはStylishというユーザースタイルシートの管理を容易にする拡張が存在する。

これを活用すると、全てのWebサイトを自分好みに調整できるようになる。使ったことがある人にしかわからないが、あまりにも便利すぎて笑いが止まらない。

さらに、StylishとFirebugを組み合わせると、レジェンダリーな構造のWebサイトでさえも5分で裸にひん剥けるので重宝している。

んが、これはあくまでもFirefox用。stylishはどうしようもないが、CSSだけでもOperaで使えるようにできないだろうか。

・・・じゃあ、移植しちまおう。まるっと。

というわけで、stylishで管理しているCSSをOpera用に書き出すスクリプトを試しに作成した。

opelish.ahk

作成した・・・のはいいんだが、問題が。

stylishはCSSをrdfにまとめて保存しているので、そこからurlとcssを地味に抜き出して書き出す。

FirefoxはどのページにCSSを適用させるかを、ドメイン、URL完全マッチ、URL部分マッチの3タイプで選べるが、Operaの場合、ユーザーCSSはドメインまでしか指定できない。

だからといってユーザースクリプトとして書き出すと、確かに好きなページに適用させることが可能になるが、適用されるまでにタイムラグが発生するだけでなく、ページのスクリプトを無効にしているとそもそも動作すらしない。

常にスクリプトをONにしているのなら、あまり問題では無いんだが、常にOFFにしている身としては辛い。

これ以上を望むとなるとproxomitron等と連携する必要がでてくる。できればOpera内で解決したいんだが・・・どうすんべ。

なお、このスクリプトは、とりあえずでっちあげただけの試作品なので、rdfのパースがいけてなかったり、Firefoxでしか適用されないプロパティを放置するなどといった不具合というか手抜きが存在する。登録しているCSS次第では出力すらできない可能性があるので注意してもらいたい。

Info

2007
0516

Tagsahkcssopera

AutoHotKeyを使ってX-Finder上で手軽にコマンドプロンプト

最近コマンドプロンプトをちょこちょこ使うようになったのだが、いちいちcmdとかフォルダ右クリックから立ち上げたりするのが面倒になってきた。

そんな中、Easy Command Promptという、エクスプローラーのアドレスバーでコマンドプロンプトを実行できるスクリプトを発見。

イイ、これ、イイね!(目の焦点虚ろかつ爽やかに) だが、エクスプローラーなんぞ使ってられないので愛用しているX-Finder用に構成し直した。

ecpforxf.zip

使い方はX-Finderのアドレスバーにスラッシュの後に続けてコマンドを入れるだけ。そのディレクトリで実行したことになる。通常はDOS窓非表示で、スラッシュ2つの後に続けることでDOS窓を表示して実行する。

ワンライナーで済むようなコマンドに最適。そうでないならDOS窓表示で実行した後にそのまま続けて入力していくといいだろう。

内部的にはEnterが押されたらX-Finderのアクティブを確認して、アドレスバーからテキストを取得。スラッシュで始まってたら実行、という風にしているので、ウインドウとコントロールの指定だけ変えれば他のファイラーに容易に流用が可能だと思われる。

余談

DOS窓にフォルダをドラッグ&ドロップするとフォルダのフルパスが入力されることを最近知った。やるな、ゲイツ。

Info

2007
0322

Tagsahk

AutoHotKeyを使ってDrag&Dropで手軽にbase64エンコード

ちょっとした画像とかをbase64エンコードしたいと思った時はThe data: URI kitchenにアクセスしていたんだが、いちいちアクセスすんのがめどい。

そこで目を付けたのが、ITproに載ってたVBとPHPを使うやつ。

バイナリ・ファイルのテキスト化

確かにファイル渡すだけでエンコードしてくれるのはいいが、vbスクリプト、phpスクリプト、出力用のテキスト、さらに手作業でコピーという無駄が発生するのが非常にヤな感じ。

理想としては、渡したら即座にMIME付けてクリップボードだよなー

ってゆーかどっかにねーかなー

さがすのめんどくせー

「私自らが作る!!」

というわけで作ってみた。

dandd64.zip

zipを適当なフォルダに解凍。中から出てきたdandd64.exeにファイルをドラッグアンドドロップで渡せば即座にエンコードしてクリップボードに入れてくれる。非常に楽。

AutoHotKeyで作っているが、コンパイルしているのでAutoHotKeyをインストールしていない環境でも問題無く使用できる。

MIMEはwebで使うような標準的なものしか入っていないので、物足りないと思ったら自分で追加していくといいだろう。

一応ソースも入れている。動作が気に入らない人や、他人がコンパイルしたものなぞ危なくて使えないという人は、こっちからコンパイルして欲しい。

余談

コマンドライン引数を動的に取得する方法がわからなかったので

args = %1%|%2%|%3%|%4%|%5%|%6%|%7%|%8%|%9%|%10%|%11%|%12%|%13%|%14%|%15%|%16%

こんな感じで力技で取得してるんだが、誰か動的に取得する方法を教えてくれ。

追記

コマンドライン引数を動的に取得する方法をコメントにて教えて頂いた。どうもありがとうございます。

Loop %0%
{
    path := %A_Index%
    MsgBox, %path%
}

ってか、その後ヘルプ読んだら思いっきり載ってた。そしてこの諦念・・・

余談2

私自らが作るといいつつ、エンコード部分だけ丸投げしてるのはナイショだ。(途中まで作ってたらバイナリからエンコードできるのを見つけてしまって、そっちに鞍替えした。その方が処理早いし。)

Info

2007
0302

Tagsahk

AutoHotKeyでOperaにクリップボード内のURLを全部開かせる

LDRやブックマークで巡回している時に後から読みたい記事に出会ったらタイトルとURLをコピーしてメモに貼り付け。んで、時間が空いたときに一つ一つ貼り付けて移動で開いていたのだが、これがまろやかにめどい。

テキスト内のURLだけをまとめて全部開けないだろうか、と思って作ったのが以下のもの。

以前選択テキストのURLを開きまくる際にahkで作ってしまったものを再利用しようと思ったが、思わぬアクシデントが。

Copy & Executeからだと、最終的にコマンドラインで渡す際には日本語が入っていても問題無かった。しかし、クリップボードのみを利用するとなぜか最後のコマンドラインで渡す際に日本語が化けた。調べてみたが理由がさっぱりわからん。

仕方ないので、原因が文字コードならUnicodeにしてurlencodeすればいいじゃん、と力技で解決して見事に日本語入りでも問題なくクリップボード内のURLを新しいタブで開けるようになった。

あとはこれをどのショートカットキーを割り当てるかだが・・・・

Ctrl+Bは貼り付けて移動。Ctrl+Shift+Bは新しいタブに貼り付けて移動、となるとAltでもつけたくなるが、さすがに片手で押し辛くなるのはイヤなので、無難にCtrl+Shift+Vに割り当てた。

;keyboard.ini
[Application]
v ctrl shift = Execute program, "C:\ahk\AutoHotkey.exe", "C:\ahk\masspasteandgo.ahk"

;menu.ini
[Edit Go Widget Popup Menu]
Item, "貼り付けて全て開く" = Execute program, "C:\ahk\AutoHotkey.exe", "C:\ahk\masspasteandgo.ahk"

menuを弄る場合同様、keyboard.iniはopera/defaultディレクトリのstandard_keyboard.iniをコピーしてprofile下のkeyboardディレクトリにコピーしてから編集する。その際にInfo部分のNameを編集しておくと判別し易くなる。

masspasteandgo.ahk

Info

2007
0205

Tagsahkopera

AutoHotKeyでOperaの選択テキスト内のURLを一気に開く

http://www.google.co.jp/
ttp://search.yahoo.co.jp/
://search.msn.co.jp/

こーいったリンクされていないURLをまとめて開きたい。

ただ単に選択テキストをコピーしてahkに渡しつつ、正規表現でURLっぽいのをゲットして、そのままOperaにコマンドラインで渡せばできね?

と思ったら、渡した分だけウインドウが作られてしまった。現在開いているOperaに新しいタブとして追加させるにはDDEで渡すしかないっぽいが、AutoHotKeyでDDEを扱う方法が分からなかったので、力技でやることにした。

;menu.ini
[Hotclick Popup Menu]
Item, "選択テキスト内のURLを全て開く" = Copy & Execute program, "C:\ahk\AutoHotkey.exe", "C:\ahk\openallurl.ahk"

;openalllink.ahk
#NoTrayIcon

lines := RegExReplace( Clipboard, "(`r`n)+", "`r")

Loop, parse, lines, `r,
{
    match_result := RegExMatch( A_LoopField, "t?p?s?:?//([-_.!~*'()a-zA-Z0-9;/?:@&=+$,`%#]+)", $ )
    If match_result != 0
    {
        Clipboard = http://%$1%
        wait( 10 )
        Send, {LCtrl Down}t{LCtrl Up} ;新しいタブ
        wait( 40 )
        Send, {LCtrl Down}b{LCtrl Up} ;貼り付けて移動
        wait( 40 )
    }
}

wait( time ) {
    begin := A_TickCount
    Loop
    {
        if A_TickCount - begin > time
        break
    }
}

何をしているのかというと、選択テキストを改行で分解してURLっぽいのをゲット。ここまでは良い。その後は・・・

  1. ゲットしたURLをクリップボードに入れる
  2. 強制的にCtrl+Tを発生させて新しいタブを表示させる
  3. 強制的にCtrl+Bを発生させてクリップボード内のURLを貼り付けて移動させる
  4. 1~3を繰り返す

こんなんで本当に大丈夫なのか? と思ったが、どうやらCPUを他に取られていると新しいタブの生成や貼り付けてからの移動で微妙に時間を取ってしまい、次の入力がズレてしまう時があったのでwaitを入れることにした。上手く開かない時はwaitの数字を大きく設定する。waitがちゃんと入っていればしっかり開かれるようだ。

正規表現はPerlメモから拝借した。非リンクだけじゃなくh抜き等にも対応するため、最低限スラッシュ2個さえあれば反応するようにしてる。そこら辺で不都合があるなら適当に弄るといいだろう。

openallurl.ahk

追記1

選択範囲のソースを取得できることをすっかり忘れてた。というわけでJavaScriptで全て解決するっぽいのでがんばる。

一応ahk経由だとポップアップブロックが発生しないというメリットが一応あるんだがな。そこら辺は使う人次第か。

追記2

渡した分だけウインドウが作られたって書いたけど、設定を良く見たらSDIにチェックが入っているせいだった。チェック外してみたところ、コマンドラインでも普通にタブが開いた。

Info

2007
0110

Tagsahkopera

AutoHotKeyでOperaでもUserJSをインストールできるようにする

;UserJSディレクトリ(最後のバックスラッシュを除く) ScriptDir = C:\Opera\profile\script

URL = %1%
FileName := RegExReplace( URL, ".*/", "" )

IfExist, %ScriptDir%, IfInString, FileName, .js
    URLDownloadToFile, %URL%, %ScriptDir%\%FileName%

スクリプトの内容はこれだけ。後はExecute Programから%lの引数付きで渡すだけでUserJSをインストールすることができる。

引数からダウンロードディレクトリを指定してもよかったが、半角空白が混じっていると厄介なので、あえてスクリプト側に記述するようにした。

UserJSに限らず、ただ単にファイルをダウンロードしているだけなので、分岐してやれば拡張子ごとに保存フォルダを変えるなんてことも可能。

installjs.ahk

Info

2006
1122

Tagsahkoperauserjs

AutoHotKeyでOperaにCopyURL+

やってることはopera_exや前のWSHと同様。コマンドライン引数から色々コピーさせている。

前のWSH版は1ファイルで完結していたが、クリップボードに入れる動作が重かった上にキャッシュからタイトルを取得していたのでCPUパワーが有り余っていないと使用するのがキツかった。

その点、AutoHotKeyならプログラム自体がクリップボードを操作できるし、アクティブウインドウのタイトルも取得できるので、opera_ex以上のことを1ファイルで実現することができる。・・・AutoHotKeyを常用している人の場合は、だが。

とりあえず標準でこれだけ搭載。

AutoHotKeyのスクリプトはテキストベースなんで、容易に拡張できるのがポイント。opera_exのように別途テキストファイルを用意する必要も無い。

さらに、Operaから離れるが、このスクリプトはオプション無しで文字を渡すだけで、その文字をクリップボードに入れるようにしているので、WSH等からも利用できるようにしている。

例えばディレクトリ内のファイル一覧をクリップボードに入れたい時なんかは、今までだと裏でIEを起動していたのだが、こっちならコマンドラインから呼び出して終わりなので、圧倒的に処理が早い。

clipboard.ahk

スクリプト内にOperaのmenu.iniに登録する際のサンプルを載せているので、導入する方は参考にして欲しい。スクリプトの改造はAutoHotkeyを流行らせるページを参考にするといいだろう。

Info

SBM Comments

kyorecoba
本当にCopyURL+になってしまいます。
nikutetu
C:\(ユーザー名)\AppData\Roaming\Opera\Opera\menu.iniでできるみたいhttp://twitter.com/amayav/status/5396066616
min3
後で適応させたいです…
mindexinfo

2006
1121

Tagsahkopera

暴満館

最新のエントリ
注目のエントリ(はてな)
ゲーム攻略

暴満館 ~The House of Full Violence~
Powered by WordPress.
About | Contact | 新着のエントリ情報 RSS

ページ内の見出し一覧
初めてのエルゴノミクスキーボード
ニコニコ動画専用Opera
AutoHotKeyでいつでもウインドウを最前面表示+α
あの素晴らしいCSSを二度三度
AutoHotKeyを使ってX-Finder上で手軽にコマンドプロンプト
AutoHotKeyを使ってDrag&Dropで手軽にbase64エンコード
AutoHotKeyでOperaにクリップボード内のURLを全部開かせる
AutoHotKeyでOperaの選択テキスト内のURLを一気に開く
AutoHotKeyでOperaでもUserJSをインストールできるようにする
AutoHotKeyでOperaにCopyURL+