Home / Diary / タグ: ahk

12

目次

  1. AutoHotKeyでいつでもウインドウを最前面表示+α
  2. あの素晴らしいCSSを二度三度
  3. AutoHotKeyを使ってX-Finder上で手軽にコマンドプロンプト
  4. AutoHotKeyを使ってDrag&Dropで手軽にbase64エンコード
  5. AutoHotKeyでOperaにクリップボード内のURLを全部開かせる
  6. AutoHotKeyでOperaの選択テキスト内のURLを一気に開く

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

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

暴満館

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

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

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