あふからいろいろなものを呼び出す
まずは小手調べに、エクスプローラで現在開いているディレクトリを開いてみる。
C:\WINDOWS\explorer.exe "$P\$F"
次は、コマンドプロンプトで現在開いているディレクトリを開く。コマンドラインオプション「/k」を付けないと上手く動かない。
C:\WINDOWS\system32\cmd.exe /k cd "$P\$F"
続けて、KbMediaPlayer。このソフトはコマンドラインオプションが豊富なのだが、今回使うのは「/na」「/mx」の二つ。現在開いているディレクトリを、メディアエクスプローラで表示する。
Kbmplay.exe /na /mx:"$P\$F"
最後はテキスト関連のユーティリティ二つ。一つはテキストソートプログラム「SSORT32」(http://dmz.xrea.jp/dahlia/で入手可能)。もう一つは、漢字コード変換プログラムの「QKC」(http://hp.vector.co.jp/authors/VA000501/で入手可能)。
まずSSORT32の方から。
- テキストを昇順ソート
- SSORT32.exe -a+ -i -o "$P\$W_up.$E" "$P\$F"
- テキストを降順ソート
- SSORT32.exe -a+ -r -i -o "$P\$W_down.$E" "$P\$F"
続けてQKC。
2004-07-07(Wed) 17:17
XSusie.dllで動作確認したSusie Plug-in
現在動作確認が取れているプラグインは下記の通り。
- ifpbx.spi
- ifzim.spi
- ifxyz.spi
- ifxld4.spi
現在「動作しない」ことが確認できたプラグインは下記の通り。なお、XnViewがすでに対応しているフォーマットのプラグインは最初から動作する見込みが無いので、ここには記載していない。
- ifjwwd.spi
- ifjwc.spi
- ifdxf.spi
- ifrok.spi
- ifdpx.spi
- ifpic.spi
- ifpegshi.spi
- ifmedia.spi
- smartspi.spi
特殊系プラグインは全滅。その他全体的に動作するプラグインの方が少ないような気がする。
2004-07-07(Wed) 16:47
海外製アプリケーション日本語化のTips
意味はよく分からないが、後になって役に立つと思うのでメモ。
VB製の文字化け回避方法
00 00 00 64 00 44 42 01 00 06 54 61 68 6F 6D 61|.....DB...Tahoma
上のようなフォント指定があった場合の内容は以下の通り
00: Font charset
00: ?????????????
00: Strikethrough*8+Underline*4+Italic*2
Strikethrough = 0 'Falsetrue=1000=08h
Underline = 0 'Falsetrue=0100=04h
Italic = 0 'Falsetrue=0010=02h
64 00: Weight = 100
44 42 01 00: Size = 8.3 (00014244h=82500)
06: lenght of the フォント名
54 61 68 6F 6D 61:"Tahoma"
なので、文字化けを回避したい場合はFont charsetの場所を
80に書き換えればOK
それでも文字化けする場合は
「非日本語対応 Windows アプリケーションで日本語を表示させるための一般的手法」
http://www.tt.rim.or.jp/~naoz-i/index.html
を参照すればOK(なはず。<弱気)
文字化け回避の汎用をば
MOV BYTE PTR SS:[EAX+17],80
CALL DWORD PTR DS:[********]
JMP ********
PixelsPerInch 96→80
50 69 78 65 6C 73 50 65 72 49 6E 63 68 02 60
50 69 78 65 6C 73 50 65 72 49 6E 63 68 02 50
JMPで"CALL <JMP.&gdi32.CreateFontIndirectA> ; \CreateFontIndirectA"
をOllyで書き換えてやればたぶんOK
そのあとにDelphi(製だったかな?)はフォントサイズでPixelsPerInchを書き換えれば文字切れ回避はたぶんOK
(細かい修正箇所があるかもしれないが、FontIndirectAを使ってるアプリならたぶん大丈夫)
以上「需要無視」の741でした
>>745は酔っていて自分用メモを貼り付けただけなのでTotal Uninstallを例にOllyで開いてCreateFontIndirectAを検索
1個の JMP DWORD PTR DS:[<&gdi32.CreateFontIndi>
5個の CALL <JMP.&gdi32.CreateFontIndirectA>
が見つかるけどJMP〜は無視。CALLを調べると41ADB6の数行上に
0041ADA2 (略) Case 1 of switch 0041AD98
があるから、このCaseがある直下の(この場合41ADB6)を適当な所へJMPをいれる。(今までの経験上Case直下の所だけ書き換えたら文字化け回避できただけで100%OKとは限らない)
Total Uninstallの場合49f260以降が00で埋まっているから
0041ADA2 JMP 0049F260
0049F260 MOV BYTE PTR SS:[EAX+17],80
0049F265 CALL 00406EB8
↑あらかじめ0041ADA2の内容をコピーしておく
0049F26A JMP 0041ADBB
↑41ADB6の次の命令のアドレスへJMP
以上を書き換えてやれば文字化け回避できるはず。
CreateFontIndirectAが無いアプリ(例Mercora)は・・・おいらには無理でした
以上のやり方のきっかけ&手本になった
非日本語対応 Windows アプリケーションで日本語を表示させるための一般的手法
http://www.tt.rim.or.jp/~naoz-i/index.html
の岩間さん(でいいのかな?)に感謝
2004-07-06(Tue) 17:42
拡張子によく使われる単語
表からコピー。
- A
- Advanced,Audio,Archive,Active,Applet
- B
- Basic,Backup,Bookmark,Borland
- C
- Compress,Code,Configlation, Common,Command,Compact
- D
- Disk,DVD,Data,Digital,Define
- E
- Enhanced,Exchange,Extention,Encode
- F
- File,Format,Find,Filter
- G
- General,Graphic
- H
- History,Hyper,Handheld
- I
- Interchange,Infomation,Image
- J
- Joint,Japanese,Java
- K
- 該当無し
- L
- Library,Layer,List,Lossless,Language,Link
- N
- Network
- O
- Object,Open
- P
- Portable,Paint,Pixel, Picture,Photo,Plug-in,span class="empty">Pocket
- Q
- Quick
- R
- Real,Resource,Regstlation,RIFF,Rich
- S
- Source,Screen,Sound,Style,System,Skin
- T
- Temprate,Temporary,Table
- U
- 該当無し
- V
- Virtual,Visual,Video
- W
- Word,Web,Windows,Wizard,Wave
- X
- Extention,Extensible,Exchange
- Y
- 該当無し
- Z
- ZIP
2004-07-06(Tue) 17:30
CraftLaunchからwgetでファイルをダウンロード
コマンドラインからネットワーク上のファイルを取得できるソフト「wget」とCraftLaunchの連携。他のコマンドラインアプリケーションと概ね同じで構わないのだが、少しだけ違う部分があったのでメモ。
Name :wget
Path :C:\Application\wget\wget.exe
Arg : -a log.txt -r %arg
Folder:C:\Application\wget\
注意点は以下の二点。
- コマンドラインオプションを付ける場合、先頭に半角スペースを入れることと、最後に「%arg」を付けること。
- Folderの指定をやっておかないと、wgetがどこにファイルを保存すればいいのか分からず終了する。
これをCtrlに登録しておいて、通常は単一のファイルをダウンロードするようにすれば便利。
2004-07-05(Mon) 18:57
あふとfoobar2000の連携
本来foobar2000は関連付け起動やファイラからの呼び出しにはあまり使われないプレイヤーだが、決して使えないわけではない。foobar2000の設定を少し変えてやることで、ファイラとの親和性が格段に上がる。最初に、foobar2000側で以下のように設定する。
まず、新しい空のタブを作る。コマンドラインで渡されたファイルの受け取り場所として使われるので、名前は「CL」や「CommandLine」などの分かりやすいものにしておくこと。
次に、「Foobar2000」→「Preferences」と開いて、ツリーの「core」のプロパティページ内にある「Always send to playlist:」にチェックを入れ、横にあるテキストボックスに先ほど作成したタブの名前を入れる。このとき、「Enqueue incoming files by default when adding from commandline.」にチェックを入れておくと、ファイラからファイルを送った際に取る挙動が「再生」ではなく「プレイリストに追加」になる。個人的にはチェックオフがおすすめ。
ここまでできたら、次はファイラ側の設定になる。とりあえずここでは「あふ」を使うが、同種のファイラでも変数の書式を変えればそのまま使えると思う。
あふからfoobar2000にファイルを渡す書式は、以下のようになる。
- foobar2000で再生
- (foobar2000.exeへのフルパス)"$P\$F"
- foobar2000にファイルを追加
- (foobar2000.exeへのフルパス)/add "$P\$F"
- foobar2000にディレクトリ内の全ファイルを追加
- (foobar2000.exeへのフルパス) /add "$P"
注意しないといけないのが、あふの変数である「$MF(マーク済みファイル)」は使えないこと。あふからfoobar2000にファイルパスを渡す際にこの変数を使うと、ファイル名に空白が含まれていた場合にファイルが正常に追加されない。「$P\$F」及び「$P」はファイル名に空白が含まれていても問題なく動作する。
もう一つ注意しなければならないのは、あふからfoobar2000のプレイリストにファイルを送った際、それまでにfoobar2000側で「Always send to playlist」で指定したタブにすでにファイルが存在した場合、プレイリストからそのファイルがすべて消えてしまう(あくまでもプレイリスト上で)こと。あふからfoobar2000にファイルを送った後は、別形式にエンコードしなおすなりタグをつけるなりの必要な処理をできるだけ早く行い、普段利用しているプレイリストに移動させるようにすること。
あふからは、(それこそ旧バージョンのWMPのように)foobar2000を単一の曲を聴くために使うのが有効。そういう観点から言うと、ファイルを追加するたびにプレイリストが初期化されるのは、プレイリストが肥大化しないという長所になりうる。
2004-07-05(Mon) 15:48