※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。



[2007-04-22]

標準出力をあふ以外で見る


afx_run_v2,afx4v 標準出力をあふ内蔵テキストビュアで見る?為のツールだが、
外部ビュアやエディタを指定することも可能。 afx4v は、あふを使ってなくても
動作するんじゃないかな。

1.afx4v.exe を任意のフォルダに置く。パスが通った所が便利
2.同フォルダに AFX.INI を作成(中身は空でオッケー)あふが有る場合は不要
3.リダイレクトファイルを任意のフォルダに作成(例:afx4vx.tmp)
4.afx4v.exe を実行、afx4v.ini が作成される
5.afx4v.ini に以下を指定
  リダイレクトファイルと表示に使用するビュア等のパス
  AFX.INI のパス
  必要なら afx4v がビュアを特定しやすいようにタイトルバーの文字列

afx4v.ini
[AFX]
R.File= path\to\afx4vx.tmp
V.Key= path\to\xyzzy\xyzzycli.exe
AFX.P=AFX.INI
Title= xyzzy

6.ランチャやファイラにコマンドを登録
Fenrir の例
0enter.txt
[.mp3;.mp2;.mp1;.rmp;.vqf;.wav;.avi;.wma;.wmv;.asf;.ogg;.ape;
  tag|afx4v.exe path\to\mp3taginfo.exe "%P"
]

[.\\\;	;フォルダ
  ;全てのファイル、タイムスタンプ、サイズ、""で囲む、行長
  Directory&List|afx4v.exe /d allfiles.exe "%P" /t /s13 /w /l30|%P
]

どうせ AHK なら、MessageBox に表示させようと思って Ahk2Exe.exe でコンパイル
したら、215kbytes にもなったよ。
出力される内容が長大な場合には不向きだけど、使い心地は悪く無い、かも^^。

afx4vx.ini
[AFX]
R.File= E:\etc\afx4vx.tmp
V.Key= path\to\MsgBox.exe
AFX.P=AFX.INI
Title= 

MsgBox.ahk
FileRead, info, %1%
MsgBox, 1, %1%, %info%
IfMsgBox, Cancel
  Return
IfMsgBox, OK
  Clipboard = %info%`r`n
  Return

0enter.txt
[.jpg;.bmp;.png;.gif
  afx4vx.exe /d path\to\XnView\nconvert.exe -info "%P"
]

GMail チェッカー


GMail は、たとえメーラーの設定で受信後もサーバーにコピーを置くようにして
いても複数ヶ所から POP 受信できないのが最大の悩みでした。
メールチェッカーしかり。ほとんどの GMail チェッカーのメール本文閲覧機能では
全文を取得するコマンドは送っていないはずです。メールチェッカーで全文を取得
してしまうと、POP メーラーで受信できなくなっちゃうのでね。

それを解決するのが新登場の「最新(recent)モード」。
「最新(recent)モード」は常に最新の過去30日分のメールを再受信後にゴミ箱に
送るモードですが、メーラーに受信後もサーバーにコピーを置く設定がしてあれば、
最新モードで受信しても受信後にゴミ箱に送られることもありません。片方のメーラー
は通常モードで、もう片方のメーラーやメールチェッカーをを最新モードにすれば
いいわけです。ただし、常に30日分取得しますので、閲覧済みメールは表示しない、
前回受信時との差分のみ取得・表示等の設定ができないと恐ろしいことになります。

「最新(recent)モード」でのアクセスは、メーラー等のアカウント設定時に、
アカウントの先頭に「recent:」を付加するだけです。

recent:hoge@gmail.com
recent:hoge@Googleアプリメールホスティングサービスドメイン名

これを自動でやってくれるのが、 めるちゃか超ベータ版
サーバーメールのリスト取得時は通常モードでアクセスし、本文プレビュー時には
最新モードでアクセスするので、メール本文全文閲覧後に POPメーラーで受信し
なおす事が可能です。
「(GMAIL向け)プレビュー時にrecent:モードを使う」にチェック、設定する GMail
アカウントに「recent:」を付加する必要はありません。
(正式版には本文全文プレビュー機能は無いので注意)

また、ゴミ箱行きにしたい不要メールも、サーバーメール削除機能があるメール
チェッカーから最新モードで削除すれば、POP3 でゴミ箱に入れる事が可能ですが、
めるちゃか超ベータ版 のメール削除機能は、現バージョンでは通常モードですので
上記チェックを外して手作業でアカウントの前に「recent:」を付加します。
ただし、30日分のリストを表示しますので、覚悟しましょう。
いつかめるちゃかでも「最新モードで削除」に対応していただけることを期待しつつ。

[2007-04-23]追記
「(GMAIL向け)削除時にrecent:モードを使う」オプションを付けて頂けました。

[2007-04-14]

NIV ちょっとだけ便利化計画 その3

N-Soft さんちの NIV( ここ ここ
フォルダを引数にできないしディレクトリ内リストビューや保存機能も無いので
AHK でくっつけてみた。


bmapを用いた画像振り分け のパクリ。だったら bmap を使えばいいのだけど、 bmap
タイトルバーを非表示、最上位表示などの設定が保存されないので。ただそれだけ。
ここでは、IrfanView とか NkV は使わない方針。

自前でリストビューを持たない、同一プロセスで連続表示ができない他のアプリへの
応用はできるはずだけど、空白を含むパスはアウトだし(保存はOK)、ディレクトリ内
ファイルリスト取得時、拡張子のフィルタリングが出来ないのが難点。
保存先の選択は面倒なんでやってない、ListInDir の ON/OFF トグルも^^;。

ListInDir.ahk
/**
ListInDir.ahk (2007-04-14 版)

■画像を閲覧
・画像ファイルか画像があるディレクトリを引数に起動
・その(画像がある)ディレクトリ内のファイルのリストと
  1枚目の画像を指定アプリ(NIV)で表示
・カーソルキー上下(↑↓)でファイルを選択、Space キーで選択画像を表示
■閲覧中の画像をコピーする
・Ctrl + C で閲覧中の画像を指定ディレクトリにコピー
・リネームコピーしたい時は、Tab キーで下段のテキスト入力欄に移動、
  ファイル名(拡張子無し)を入力する。(全角文字は入力困難)
■画像ビューア(NIV)の操作
・Home キー:フレームを表示/非表示
・End キー:画像サイズ自動伸縮を開始/終了(隠しコマンドらしい)
  ResourceHacker で見て、自分に必要なコマンドを登録すればよい
■終了
・Esc キーで NIV と LisInDir.ahk を終了
*/

;----- Config -----

NIV = D:\Application\picture\niv\NIV.exe    ;開きたいアプリのパス
sDir = %1%  ;画像または画像があるディレクトリ
cDir = D:\My Documents\My Pictures\F1\ ;コピー先

; 指定した拡張子以外のファイルを引数にしたら起動させない
SplitPath,sDir,file,dir,ext,name,drive
    if ext =
        sDir = %1%\
    else if ext Not contains gif,jpg,png,bmp
        exitApp
    else if (ext="gif" or ext="jpg" or ext="png" or ext="bmp")
        sDir = %dir%\

;----- Main -----

FunctionNIVStart()  ; NIVで指定ディレクトリの1枚目の画像を開く
WinWait, NIV, , 5

; ListInDir のメインウィンドウ作成
GUI, Margin, 1, 1
GUI, Add, ListBox, w150 r10 vListBox  ; 幅・行数指定
GUI, Add, Edit, w150 r1 vInputBox,
GUI, +ToolWindow +AlwaysOnTop ; タイトルバーと最前面表示を指定
GUI, Show, x5 y5, ListInDir
 ; NIV の出現位置はOS依存なので、こっちを固定

gosub Reset
Return

;----- Subroutine -----

Reset:
    RefreshList("")
    ControlSetText, Edit1, , ListInDir
    return

;----- Function -----

; ディレクトリ内ファイルリスト取得、表示
RefreshList(Word)
{
    global sDir
    sDirNum = 0
    Loop, %sDir%*, 0
    {
        sDir%A_Index% = %A_LoopFileName%
        sDirNum++
    }
    Loop, %sDirNum%
    {
        d := sDir%A_Index%
        ifInString, d, %Word%
        {
            StringGetPos, p, d, %Word%
            if p = 0
            {
                List = %List%%d%|
                sDirNum++
            }
        }
    }
    GUIControl, ,ListBox,
    GUIControl, ,ListBox, |%List%
    GUIControl, Choose, ListBox, 1
    return sDirNum
}

; 表示中のファイルのパスを取得
GetSourcePath()
{
    global sDir
    WinGetTitle, title, NIV
    StringTrimLeft, titlepath, title, 6
    sPath = %titlepath%
    return sPath
}

; リスト内カレントのファイル名取得
FunctionNext()
{
    global sDir
    GUIControlGet, Item, , ListBox
    cFile = %Item%
    Return cFile
}

; リネームコピー時のファイル名取得
PutFileName()
{
    GUIControlGet, newFile, ,InputBox
    return newFile
}

; 指定アプリ(NIV)を起動、一つ目のファイルを表示
FunctionNIVStart()
{
    global sDir, NIV
    Loop, %sDir%*.*
    {
        sFile = %A_LoopFileFullPath%
        break
    }
    Run, %NIV% %sFile%
}
 
;----- HotKey & GUI Event -----

; Ctrl + C でファイルをコピー
; リネーム時は InputBox に入力した名前、でなければ元のファイル名
^c::
    IfWinNotActive, ListInDir
    {
        return
    }
    sPath := GetSourcePath()
    FileName := PutFileName()
    SplitPath,sPath,file,dir,ext,name,drive
    if FileName =
        {
            FileName = %name%
        }
    FileCopy, %sPath%, %cDir%%FileName%.%ext%

    GUIControlGet, f, Focus
    if f = Edit1
    {
        GUIControl, Focus, ListBox
    }
    return

; NIV のフレームを表示する/しない
~Home::
    IfWinNotActive, ListInDir
    {
        return
    }
    PostMessage, 273, 32796, 0, , NIV
    return

; 画像サイズ自動伸縮開始/終了
~End::
    IfWinNotActive, ListInDir
    {
        return
    }

    PostMessage, 273, 32800, 0, , NIV
    return

; リストで選択した画像を表示(NIV を再起動する)
~Space::
    IfWinNotActive, ListInDir
    {
        return
    }
    WinClose, NIV
    cFile := FunctionNext()
    Run, %NIV% %sDir%%cFile%
    WinWait, NIV, , 200
    WinActivate, ListInDir
    GUIControlGet, f, Focus
    if f = Edit1
    {
        GUIControl, Focus, ListBox
    }
    Return

GUIClose:
GUIEscape:
    WinClose, NIV
    ExitApp

Lynxの画像表示用外部アプリに登録
Lynx を終了しない限り表示した全ての画像を何度でも閲覧、確認しながら保存
できるようになる。

.mailcap
image/*; path/to/AutoHotkey.exe path/to/ListInDir.ahk %s

画像保存用一時フォルダを指定して Lynx を起動
Lynx.ahk (ckw 経由の場合)
EnvSet, HOME, D:/Application/Internet/Lynx
EnvSet, Temp, D:/Application/Internet/Lynx/Temp
Run, D:\bin\ckw.exe -e path\to\lynx.exe -image_links %1%

[2007-04-07]

IME の状態表示 続きの続き

SetCaretColor v0.02 (Upload BBS)
  • 対象外とするプログラムやアクティブウインドウ、EDITコントロールの
  クラス名を指定可能に。条件を組み合わせる事が出来ます。
  • 各変換モードごとに色指定が可能に。

とてもありがたいです。
さっそく、SetCaretColor.ini に
Ignore=xyzzy.exe,, | Apsaly.exe,, | sakura.exe,,

◎お詫びと訂正
前述のキャレット色が変わってしまうってやつ、背景色の影響を受けるのですね。
エディット画面や文字列選択時や検索文字列の強調時など。 SetCaretColor 側では
どうしようもないので、エディタ側で変更するか、背景色が白以外のウインドウ等を
除外するかしかないですね。

[2007-04-03]

IME の状態表示 続き

昨日、投稿後に気づいたんだけど、 なまずIME では IME が On であれば入力を
確定していなくても状態が視認できるんですよね。 SetCaretColor では未確定時は
キャレットの色分けは追随しない。色分け可能なエディタもそうなのを見ると、
これはキャレット色以外の方法でしか実現できない機能なのだろうか?

また、 SetCaretColor では、マウスや shift + カーソルキーで逆方向(右から左、
下から上)に文字列を選択時はキャレットの色が逆転してしまう。
xyzzy では SetCaretColor を起動するだけで逆転してしまうのだが、 Apsaly
SetCaretColor の色設定の影響を全く受けない。 萌ディタ はずっと前に
アンインストールしちゃったので未確認。

広く一般に公開されて、また追従するソフトが現れたりして、この分野がさらに
進化するといいなあ。

[2007-04-02]

画期的なCM

先日、シェル石油の CM の動画をご紹介しましたが、F1 がらみと言うことで。

画期的な CM と言うなら、まさに、Honda Racing RA107 のカラーリングがそう。
昨年までの HONDA カラーを一新、HONDA の企業コンセプトであるエコを強調し、
F1 界の常識であるスポンサーのロゴを一切排除したものになっています。
デザイン的な評価は二分されてるようですが、今年は国際経済界でも地球温暖化対策
が最重要課題ということで、海外でもイメージ戦略が意外に有効かもしれません。

もう一つ、昨シーズン中に Midland を買収し、今シーズンから正式参戦の Spyker F1
F8 VII のオレンジ色は、オランダのナショナルカラーを取り入れたもの。
(Spyker はオランダのスポーツカーメーカー)
オランダの国そのものをアピールしているように思えます。(どこぞの県知事のよう)

というわけで、今年の大賞(なんの?)はこれに決定
ホンダ、地球のカラーリングを変更、次戦から他の惑星!:スクープ写真有



本気にしちゃったじゃないのよ^^;

IME の状態表示


以前にどっかに書いたよなあ、と思ったら、Juria's BBS Diary の方だったので転記
IME の ON/OFF によりキャレットの表示を変更するのに、昨日まではそこに書いた通り
なまずIME を使用していたのだが、ページフォルトが異常に増え続けるので精神衛生上
よろしくなかった。そして今日からは、

SetCaretColor (Upload BBS)
◆こんなソフトウェアつくってください!~Part8~◆)

自前でキャレット色分け表示機能を持つ xyzzy(共通・タイプ別設定)や
サクラエディタ(タイプ別設定)、 Apsaly Alpha 等、対象外を設定する
機能が無いのだけが残念。

DOS 窓を表示しない

バッチファイルやコンソールアプリを実行する時、DOS 窓がお邪魔なら。
オプション指定してメモリ開放する時とか。

RUN.EXE
1.run.exe と run.ini を同じディレクトリに置く
2.run.ini を編集
; 実行するバッチファイルやプログラムのパスと起動オプションを指定
EXECUTE = path\to\empty.bat
3.run.exe を実行する

  • run.exe は同じディレクトリにある run.ini しか読めない、指定できないので
  DOS 窓を表示させたくないプログラムが複数あるなら、run.exe と run.ini を
  セットでリネームして使用する。e.g. empty.exe + empty.ini

  • 実行中のプログラムを停止させる必要があるなら、stop.exe を同ディレクトリに
  置き、ini ファイルに以下を追加
CREATE_STOP_INI = YES
STOP_INI_NAME = stop.ini
  run.exe(リネームした場合はそれ)を実行時に run が実行したプログラムの
  PID が書かれた stop.ini が作成されるので、stop.exe を実行する。
  stop.exe と stop.ini は、同様にリネームして使用可能。

[2007-04-01]

リンク切れチェック

URL のリスト(テキストファイル)のリンク切れを一括でチェック、リンク切れ
と思われる URL の行を除いて別ファイルに出力してくれるツールをついに発見!

だといいんだけど。

私は、お気に入りは、URL にコメントとタグを付けてリストをテキストファイルで
管理、 esPst でキーワードにマッチした行をクリップボードに送ってから、AHK
URL を抜き出して指定のブラウザで開いてるんだけど(参考@あれこれ-2006年11月
一括リンク切れチェックをどうするかが、ずーっと懸案事項となっております。

開いた URL がたまたまリンク切れだった場合は、その マッチした行か URL が
クリップボードにあるうちに、 linejump でその文字列を検索キーワードにして
エディタで該当行を開いてすぐに削除・修正できるんですけどね。

設定ファイル(linejump.ini)で使用するエディタと検索対象ファイルを指定
検索キーワードを引数にして、linejump.exe を実行
検索対象ファイルを引数で指定も可能

linejump.ini
[PATH]
editor_path=path\to\sakura.exe -X=1 -Y=%L "%P"
text_path=E:\etc\list.txt

 %L = 検索キーワードが見つかった行ナンバー
 %P = 検索対象ファイルのパス
 -X=,-Y= カーソルの位置指定(サクラエディタのオプション)

AHK なら
Run, path\to\linejump.exe "%Clipboard%" "%1%"
Return

CraftLaunch なら
cmd linejump
 -L path\to\linejump\linejump.exe
 -A %cb %arg
 -F path\to\linejump

バッチファイル なら
@echo off
echo keyword : 検索文字列
set /p keyword=

path\to\linejump\linejump.exe "%keyword%" "%1"

とかしておいて、必要に応じてファイラやランチャなどから検索対象ファイルの
パスを渡すとか「SendTo」に入れちゃうとか。
クリップボードの文字列使わなくても応用範囲は広いですね。CSV 形式の住所録から
人を捜すとか。自サイト内でリンク切れを発見しても、HTML ファイルの該当個所に
すぐに飛んで修正できるし・・・あっ、全然チェックしてませんです、私。


-
  
添付ファイル