更新日:
Page Property: Shift-JIS, JavaScript
[English Page]
Jpn.Home
ツール
プログラミング
落書き
画像
諸々
ローテク集
関所
自己紹介
更新情報
リンク

[Back Home] / [サイト表紙へ]
Back Home

Read First / 最初に読んで

 

ローテク集


「集」と称していますが、この先内容を増やす予定は立てていません。気が向いたら増やすかも…。

Index

  1. MS Internet Explorer 3.xx (MSIE 3)でソース表示/編集をメモ帳以外で行う方法
  2. WPS仕様のプリンタを使って、Win95/98のDOS窓からテキストファイルを印刷する方法
  3. MSIE 3.xxでキャッシュフォルダや履歴フォルダのクリアがうまく行かない場合の対処
  4. <img src="mailto:foo">のようなタグを複数含んだ悪質なHTMLファイルを読み込んだ時にハングアップを防ぐ対策
  5. アプリケーション窓で隠れたデスクトップ上のアイコンに直ぐアクセスする方法

(1) MS Internet Explorer 3.xx (MSIE 3)でソース表示/編集をメモ帳以外で行う方法

  1. 一番単純なのは…メモ帳(C:\Windows\Notopad.exe)を例えばNOTE.EXEなどにリネームしてしまい、普段使うエディタのコピーをNOTEPAD.EXEと名づけて、C:\Windowsフォルダにおいておきましょう。
    もちろんこれまで通りメモ帳を使うには、NOTEPAD.EXEへリンクされたショートカットの修正が必要です。お忘れなく。
    但し、使用するエディタによってはこの方法ではうまく起動しない場合があります。
  2. (MSIEでない)Explorerで、[表示(V)]→[オプション(O)]→[ファイルタイプタブ]と進み[インターネットドキュメント(HTML)]を探し出したら、[編集(E)]をクリックし、アクションとして Edit を追加し、[アクションを実行するアプリケーション(L)]に使いたいエディタの名前をフルパスで記述してしましょう(私の例では、D:\WZ_Edit\wzedit32.exe)。すると、MSIEのツールバーの一番右側に[編集ボタン]が現れます。そのボタンをクリックすると、登録したエディタがHTMLソースを読み込んだ状態で起動します。
  3. ちっともローテクじゃない方法(バイナリエディタの使用に不慣れな人や、システム書き換えに伴うトラブルに対応できない人にはお勧めしない方法
    まず事前にC:\Windows\System\MSHTML.DLLのバックアップコピーをとっておきます。更にMSHTML.DLLを作業フォルダヘコピーします(そのままでは編集できないので)。バイナリエディタでコピーした側のMSHTML.DLLを開き、notepad.exeという文字列を検索し、同じ文字数のショートカット名(例えばeditsrc.lnk)に変更して保存し、MSIEが起動していない状態でC:\Windows\System\MSHTML.DLLへ上書きコピーします。次に普段利用するエディタ(例えばWZEDIT32.EXE)のショートカットを作成し、その名前を先に使用したショートカット名(先の例なら、editsrc.lnk 大文字のEDITSRC.LNKも可)に変更します。それをPATHの通った場所、例えばC:\Windowsにコピーすれば終了です。後は、MSIE上で[表示(V)]―[ソースの表示(C)]、あるいは表示ページ上で右クリックして[ソースの表示(V)]を選べば、希望したエディタがソースを読み込んだ状態で起動します。
  4. PC関連リンクページに列挙してある、[窓の杜]や[ベクター]、[フリッポ]などへ行くと、#2や#3で行うのと似た事、あるいはレジストリ書き換えをするツール、あるいは更なる機能を備えたフリーウェアやシェアウェアがあります。それらを使ってもできます。

[備考]
私は#2の方法をお勧めします。
MSIE 3の場合で、バイナリ編集ができる場合は、#3の方法もお勧めです。
なお、MSIE 5.xxでは#2の方法が標準的に備わっていますから、そのままでも任意のエディタを使う事が可能ですが、フレームを使用したページでは上手く対応できません。右クリックメニューのソース表示を任意のエディタで行ないたい場合には、メモ帳トラッパーをお勧めします(MSIE 3〜5を通じてこの方法が一番楽かも…)。※Windows 2000の場合はセーフモードでインストールしないとダメだそうです(保護機能が働いてDLL書き換えができないため)。あるいは、IETrapperをお勧めします。


[補足] レジストリをいじる方法として上記#2ではない2つの方法を書いておきます。当然ながらレジストリをいじる作業は慎重に行って下さい。また、作業結果に対する保証も致しませんので、自己責任で行って下さい。

編集に使うエディタを変更する場合
エディタでHKEY_CLASSES_ROOTにある .htm キーを開き、.htmの下層の OpenWithList を開き、新規キーを作成し、その名前を区別のつく任意名に変更します(例えばWZEditor)。そのキーの更に下層に Shell を作成、その下層に edit、その下層に command の順に作成します。
comamnd キーの標準エントリに、プログラムのフルパスとパラメータを入力します。
設定例:"C:\WZ Editor\WZEDIT32.EXE" "%1"
ソース表示を任意のエディタに変更する場合
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorerまで辿った後に、新規キーを作成してその名前を View Source Editor に変更します。その下層に同様の手順で Editor Name キーを作成し、それを選択した際に右窓に表示される(標準)または(規定)の中身を変更します。
設定例:"C:\WZ Editor\WZEDIT32.EXE"
初期値は C:\Windows\Notepad.exe のハズ(パスはWindowsのバージョンなどで異なるかも知れませんが)。

(2) WPS仕様のプリンタを使って、Win95/98のDOS窓からテキストファイルを印刷する方法

※WPS: Windows Printing System (いうなれば、DOSやUnixなどからは印刷できず、Windowsを使わないと印刷できないプリンタ。The Microsoft Corporationの商標)

Windows95/98マシンを使いながらも、普段DOS窓での作業が多い人の場合、DOS/VにあったPRINT.EXEコマンドが恋しくなるかもしれません。Windowsが流行する前のプリンタの場合、DOS上で

PRINT Textfile [CR]

とタイプすれば、テキストファイルを直接印刷できました。でもWPS仕様のプリンタではそういうことができません(一部のプリンタはサポートしていますけど)。

サポートしていないプリンタでPRINTコマンド風に印刷したい人は以下のようなバッチを利用すると幸せになれるかもしれません。PRNT.BATと名付ければ懐かしさ256倍 :-)
使い方は、

PRNT Textfile [CR]

です。ファイル名を入れずに単独でPRNT [CR]としたり、パラメータ -h(または-H, -help, -HELP, h, H, help, HELP)を与えた場合は使用方法が表示されます。
残念ながら、このバッチはオリジナルのPRINT.EXE並みの機能は持っておりませんし、同時に印刷できるファイルは1つだけです。
複数のファイルを扱えるようなバッチも記述しようと思えばできますが、敢えて作る気がしないので書いていません(一例:s-adtxt.lzhと同様な方法でできます)。興味のある方はご自分でどうぞ。でももし作ったなら教えて下さいね :-)

以下の例はWord Pad(Wordpad.exe)を印刷コマンドとして利用していますが、メモ帳(Notepad.exe)を印刷コマンドのように使いたい人はバッチ中の start で始まっている行を

start "C:\WINDOWS\NOTEPAD.EXE" /p %1

に置き換えて下さい。但しメモ帳を使った場合には、Word PadのようにWord 6.0文書やRTF(リッチテキストフォーマット)文書の印刷はできませんから、置き換える意味があるかどうかは疑問ですが…
ちなみに、C:\WindowsフォルダにあるWrite.exeもWord Padを起動するローダーになっているようなので、
start "C:\WINDOWS\WRITE.EXE" /p %1

と記述してもWord Padでの印刷となります。

※行の折り返しによって1行の範囲が分かり難い場合のために、文字列[cr]を行末に付加しました。コピー&ペーストで利用される場合は、文字列[cr]を除去して下さい。テキストエディタの置換機能を用いて[cr]を空文字に置き換えるとよいでしょう。

------- cut here ------ 8< ------ 8< ----- 8< ----- 8< -----

@echo off[cr]
: テキストファイル(etc)をWindows専用プリンタで印刷するためのDOS窓用バッチ[cr]
: PRNT.BAT ----- DOS/V用のPRINTコマンドの代わり[cr]
[cr]
if "%1" == "" goto MSG1[cr]
for "%%I" in (-h -H -help -HELP h H help HELP) do if "%1" == "%%I" goto MSG1[cr]
if not exist "%1" goto MSG2[cr]
[cr]
start "C:\Program Files\Accessories\WORDPAD.EXE" /p %1[cr]
goto END[cr]
[cr]
:MSG1[cr]
echo 使用方法:%0 File[cr]
echo .[cr]
echo File = Text, WordPad, Write, Word 6.0 ファイル[cr]
echo .[cr]
echo ※空白を含んだLongFileNameを使用する場合には、"LongFileName.txt"のように[cr]
echo  2重引用符を使うか、LONGFI~1.TXTのようにShortFileNameを使用して下さい。[cr]
echo .[cr]
goto END[cr]
[cr]
:MSG2[cr]
echo 指定されたファイル [ %1 ] が見つかりません。[cr]
echo .[cr]
[cr]
:END[cr]

------- cut here ------ 8< ------ 8< ----- 8< ----- 8< -----


(3) MSIE 3.xxでキャッシュフォルダや履歴フォルダのクリアがうまく行かない場合の対処

※MS Internet Explorer (MSIE) 3.xxについて記述しますが、多分MSIE 4.xx, 5.xxでも同様だと思います。

MSIEの表示(V)―オプション(O)……(方法 A)、あるいはデスクトップ上のインターネットアイコンのプロパティ(R)……(方法 B)にて行う、キャッシュフォルダのクリアや履歴フォルダのクリアを行なっても、なぜか完全に消えない事があります。恐らく、過去にページ違反などで異常終了した際にキャッシュや履歴の管理情報に不整合が生じる事が原因だと思います。
不整合が起こっている場合には、クリア操作をしてもクリア作業が比較的早く終了しますから、何と無く分かります(気になる人はフォルダの中身を覗いてみましょう)。

こんな時はどうすれば良いのかというと、割と簡単です。
一旦、[OK]ボタンをクリックして、設定窓を全部終了させます。方法 Aでならオプション画面を閉じてMSIEの通常画面まで戻ってください。方法 Bでならプロパティ表示を完全に終了させて下さい。そして、もう一度先ほどと同じ様にクリア動作を行なってください。今度はまじめな(?)クリア動作が始まり、完全にフォルダ内部が空になります。

別の方法:MSIEを開いている状態なら一旦閉じ、念の為にWindows95を起動し直してからDOS画面上(あるいはMSDOSモード)にて、クリアしたいフォルダ(キャッシュならTemporary Internet Fileフォルダ、履歴ならHistoryフォルダ)を丸ごと消去した後に、MSIEを起動すれば、自動的に新たに全部新規に作り直してくれます。ですが…、一般的には先に示した方法をお勧めします。


(4) <img src="mailto:foo">のようなタグを複数含んだ悪質なHTMLファイルを読み込んだ時にハングアップを防ぐ対策

世の中にはWindowsのバグや、HTMLのバグを突いたタグなどを含んだ悪質なWebページが存在します。古くは数百もの深いネスティングをしたテーブルタグを含んだページもありましたし、JavaScriptによってブラウザの新規窓を永久に開き続けてリソース不足によるハングアップを狙うページ、既にパッチの当てられた通称conconバグ(デバイス名を複数含むURLでハングアップするバグ)によるハングアップを狙うページなどは現在も所々にあります。

同様にリソース不足に陥らせる手法として使われるのが、<img src="mailto:foo">タグを数百記述したり、JavaScriptによってmailto:を無数に実行したりする方法です。このページを読み込むと、タグの数だけ、あるいはページを閉じるまで永久にメーラの編集ダイアログが新規に開かれるため、結果的にハングアップに至ります。

Web上にある画像ファイルを無限に読み込ませる手法の場合は、画像を読み込まない設定にしていたり、ある種の規則で画像を排除するローカルプロキシ(例えばJunkBusterなど)で対処できますが、mailto:プロトコルはローカルファイルが起動されてしまうため、その方法が効きません。うっかり“地雷”を踏んだらお陀仏です。

そこで考案した対処例で、少しだけ効果のあった方法を記しておきます。

  1. エクスプローラの[表示(V)]―[フォルダ オプション(O)]―[ファイルタイプ]にて、「URL MailTo Protocol」を選び、[編集(E)]をクリックします。
  2. [アクション(A)]枠内にあるOpenを選択して、[編集(E)]
  3. まず、元に戻せるように、[アクションを実行するアプリケーション(A)]欄をコピー([Ctrl]+[C])しておきます。
  4. そのまま[キャンセル]して、[新規(N)]をクリックし、[アクション(A)]に、DummyOpenとでも入力し、[アクションを実行するアプリケーション(A)]には先ほどのコピーを貼り付け([Ctrl]+[V])て、[OK]。
  5. 再びOpenを選択して[編集(E)]で、[アクションを実行するアプリケーション(A)]に、例えば "C:\EDITMAIL.PIF" "%1" と入力(ドライブ、パス、ファイル名は任意でOK)。そして[OK]
  6. あとは[ファイルタイプの編集ダイアログ]を全部閉じます。
  7. メモ帳などエディタを用意して、以下の内容をコピーします(バッチの分かる人は随時変更して下さい)。

――バッチの内容――

@echo off
rem mailto:プロトコルの多量な実行によるハングアップを回避するバッチ

if not exist %temp%\EDITMAIL.* goto STRT
if exist %temp%\EDITMAIL.* goto CANCEL

:STRT
if not exist %temp%\EDITMAIL.* goto MAKE
	goto STRT2
:MAKE
	echo flag > %temp%\EDITMAIL.01
	goto STRT2

:STRT2
	start /w MyMailer.exe %1
	if exist %temp%\EDITMAIL.* goto DELFLAG
	goto END
:DELFLAG
	echo y | del %temp%\EdITMAIL.*
	goto END

:CANCEL
	echo .
	echo 処理を打ち切りました。
	echo .
	goto END

:END

※バッチ中の"MyMailer.exe"部分だけは、御自身の環境で使われているメーラをドライブ名とパス付きで記述して下さい(例:C:\Program Files\Msgman\Msgedit.exe)。通常は Open を編集する前に書いてあったものを記述すれば良いはずですが、最初の内容がMSIE3の頃のMS Internet Mail&Newsの場合は“rundll32.exe C:\WINDOWS\SYSTEM\mailnews.dll,Mail_RunDLL”となっているはずで、この場合は…どうするのか不明 (^_^;)

作成したBATファイルをエクスプローラで一度だけダブルクリックすると、同名のPIFファイルが同じフォルダ内に作成されます。次にそのPIFファイルをダブルクリックして起動してから、プロパティで[プログラム終了時にウィンドウを閉じる(X)]にチェック、バッチファイル欄に“DOSIME”などと勝手に付加されている場合は不要なので空欄にして、[実行時の大きさ(R)]欄は「最小化の状態]を選んでおいて[更新(A)]、[OK]とすれば作業は終わりです。

Webページで自らmailtoプロトコルタグをクリックしたり、悪質なタグによってmailtoプロトコルが呼出された場合には、常にこのバッチが起動して、同時に開くメーラの編集ダイアログを1つだけに制限してくれるようになります。

※けれど過剰にmailtoタグを含むページの場合は、バッチファイルが閉じるより開く方が早いため、負けてしまうようです。という訳で完璧ではありません。上記の方法だとMS-DOS窓が多重のプロセスで起動してしまい、閉じるのが遅いと結局それ自身がリソースを消費してしまうので、1つのプロセスだけがメーラの編集窓を監視する様な構造でないと駄目なようです。

ポップアップする広告バナーを閉じるフリーウェア(例:POPKILL)に、わざとメーラーの編集ダイアログを登録する方法も試した所、ポップアップの方が早い場合にはやはり追いつかない様でリソース不足に至ります…。mailtoの呼び出し自体を監視して阻止しないとダメそう…。

[2001-02-25 補足] Proxomitronの場合はHTMLファイルを受信する先から設定したルールでタグを置き換えてしまうため、対処できるようです。私の環境では例外エラーが置きやすいので常用するのは辛いですが、落ちない環境の人ならこれが一番かもしれません。(WinMe & Proxomitron Version Naoko 4.1では安定している様子なので前文を削除訂正 on March 9, 2002)

[2003-05-30 追加] 悪質な<img src=mailto:foo>やその他の記述が過剰に含まれるとともに、自身を0秒でリロードするように記述されたWebページの場合は、Proxomitronでさえ追いつかないのか守りきれないことが分かりました。Proxomitronを併用しない場合よりも、メーラが起動されるスピードが若干低下しているように感じられるものの、完全に阻止できません。

結局、リンクをクリックする前にソース表示で内容を確かめる(例えば、WinFAQ:「URL リンクの html ソースを開きたいのですが?」のviewsrc.vbs を利用する)ことが重要で、仮に誤って悪質なHTMLファイルを開いたことに気づいたら、直ぐに[Alt]+[Ctrl]+[Del]によって悪質なコードを含むページを開いているWebブラウザを速やかに強制終了させて(必要ならば、自動リロードされている悪質ページがあるなら、そのあとで再度[Alt]+[Ctrl]+[Del]によって終了させること)から、開いてしまったメール送信画面を閉じていくしかありません。


(5) アプリケーション窓で隠れたデスクトップ上のアイコンに直ぐアクセスする方法

下図を見ての通り、最小化した[デスクトップ]ツールバーを用意すると、仮にデスクトップにアプリケーションを広げていても、[>>]部分をクリックするだけで、デスクトップ上のアイコンにアクセスできるようになって便利です。

それに[マイコンピュータ]を辿ると、エクスプローラを明示的に起動せずに任意のドライブのファイルにも辿り着けます。

最小化によりタスクバーを邪魔しない点がミソです。ツールバーが使える様になってから、私はクイック起動バーの代わりにこれを設定しましたが、雑誌などでこういうテクニック?を記す例がなかったので敢えて紹介してみました。

desktop tool-bar
[Jpn.Home] | [ツール] | [プログラミング] | [落書き] | [画像] | [諸々]::[ローテク] [関所] | [自己紹介] | [リンク]