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

@あれこれ-2008年2月



[2008-02-22]

レジストリの怪 はてなブックマークに登録

昨日、 TheWorld Browser は、設定の仕方によっては「レジストリを変更することは
無さそう」と書いたのだけど、実は、ひとつキーが追加されているのを発見した。

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
      \FeatureControl\FEATURE_BLOCK_LMZ_SCRIPT]
"TheWorld.exe"=dword:00000000

マイクロソフトの ここ ここ の説明によれば、
FEATURE_BLOCK_LMZ_SCRIPT レジストリキーは、IE 7 で新しく追加されたキーで、
スクリプトから個人情報を収集できないようにするセキュリティ強化目的で、ユーザの
ローカルファイルシステムからのスクリプトアクセスブロックを制御する設定らしい。

このセキュリティ機能を "オプトアウト"(明示的に無効に)する場合はプロセス名を
追加、値を 0x00000000 に、"オプトイン"する場合は、値を 0x00000001 に設定しろ、
とのこと。
IE インターネット オプションで
「マイ コンピュータのファイルでのアクティブ コンテンツの実行を許可する」設定が
有効にしてあっても、可否をアプリごとに設定可能になった、ということかいな?

つまり、 TheWorld Browser のセキュリティ関連のデフォルト設定では、ローカルでの
スクリプト実行はオッケーになってるわけ。それはそれでどっかで変更できるのかも
しれないけど(未確認)、このマシン、まだ IE 6 なんです、てか 7 にする気は
無い。はたして、IE 6 でもこのレジストリーキーは有効に働くのかどうか、試すのは
怖いね。

[2008-02-21]

デフォルトブラウザ はてなブックマークに登録

TheWorld Browser は、設定は TheWorld.ini に保存する。
インストーラを使わず、デフォルトブラウザに指定せず、お気に入りのディレクトリの
場所を変更し、TheWorld ダウンロードマネージャをサイドバーとコンテキスト
メニューに表示 のチェックを外しておけば、レジストリを変更することは無さそうで
(後述)、
USB 等からも使える気がするのだけど、ハイパーリンクテキストをクリックした時に
想定外のブラウザが立ち上がって欲しくは無いよね。

というわけで、
1.HTTP / HTTPS プロトコルに TheWorld で開くアクションを追加(DDE を使う)
  「規定に設定」、アイコンの変更はお好みで。
   # 試しにインストーラーでインストール後にアンインストールしてみたけど、
    それだけではアイコンは元に(それまでのデフォルトブラウザ Lunascape
    にも IE にも)戻らなかった。
    一旦、Lunascape の関連付けを全て外し、「プログラムのアクセスと規定の
    設定」と マイクロソフトさまご推奨の方法 で規定のブラウザを IE に戻して
    からやることに。)

フォルダオプション
http URL : HyperText 転送プロトコル(HTTP)
https URL : HyperText 保護機能つき転送プロトコル(HTTPS)

レジストリ
[HKEY_CLASSES_ROOT\HTTP\shell]
@="TheWorld"

[HKEY_CLASSES_ROOT\HTTP\shell\TheWorld]

[HKEY_CLASSES_ROOT\HTTP\shell\TheWorld\command]
@="D:\\Application\\Internet\\TheWorld\\TheWorld.exe \"%1\""

[HKEY_CLASSES_ROOT\HTTP\shell\TheWorld\ddeexec]

HKEY_CLASSES_ROOT\https\shell
(割愛)

拡張子の関連付けを弄るツールはいくつもあるけど、プロトコルの設定を弄るツールは
あるのだろうか?

2.HTMLドキュメント(.htm / .html この二つは一身胴体らしい)に
   TheWorld Browser で開くアクションを追加(DDE を使う)、規定に設定しない。
  .htm / .html ファイルのコンテキストメニューに表示されるが、不要なら
   FileTypesMan で不可視(disable)に。再度フォルダオプションを弄ると
  可視に戻ってしまうので注意、っつーか、フォルダオプションより、はじめから
   FileTypesMan で設定する方が分かりやすい。

フォルダオプション
.htm / .html : HTMLドキュメント
レジストリ
HKEY_CLASSES_ROOT\htmlfile\shell
@="opennew"
---
[HKEY_CLASSES_ROOT\htmlfile\shell\opennew]
@="開く(&O)"

[HKEY_CLASSES_ROOT\htmlfile\shell\opennew\command]
@="\"C:\\Program Files\\Internet Explorer\\iexplore.exe\" %1"
---

[HKEY_CLASSES_ROOT\htmlfile\shell\TheWorld]
@="TheWorldで開く(&T)"

[HKEY_CLASSES_ROOT\htmlfile\shell\TheWorld\command]
@="\"D:\\Application\\Internet\\TheWorld\\TheWorld.exe\" \"%1\""

ローカルにある html ファイルは、ファイラーやランチャー、AHK スクリプトの連携で
その都度開くアプリを選択してるから、アクションを追加する必要はほとんど無い
のだけど、こうしておくと、 TheWorld Browser が起動していれば関連付け実行でも
横取りしてくれるんよね。インターネットショートカットファイル(.url)も。

んで、この HTMLドキュメント(htmlfile)の「規定」に設定されているブラウザが
デフォルト(標準のブラウザ)になるみたい。
つまり、[HKEY_CLASSES_ROOT\htmlfile\shell] のデータに指定されてるアクション。

ブラウザによっては、アンインストール時にここを元(opennew)にもどさず、いくら
HKEY_CLASSES_ROOT\htmlfile\shell\open\command や \opennew\command に IE が
登録されていても、IE がデフォルトのブラウザとして認識されないわけ。1.で
Web の設定をリセットし、URL プロトコルファイルを再登録 した時に戻った、
たぶん。

3. EdMax でメールの URL クリックで指定のブラウザを起動するには。
  ・ EdMax++ プラグイン改 (eplus.dll)を Plugins フォルダに置き、
   [設定]→[プラグインの設定]→[Edmax++ の設定]で
   起動ブラウザを指定、「URLダブルクリック時に上記ブラウザを起動」チェック
  ・[設定]→[メーラー設定]→[操作]タブ
   「シングルクリックで URLをブラウザで開く(&C)」のチェックを外す。

  「シングルクリックでURLをブラウザで開く」チェックを外せばいいことに
  気付くのに3日もかかったよ。外さないと デフォルトの IE も起動しないので
  焦るよ。あはは。
  規定に設定したブラウザと Edmax++ で指定したブラウザが同じ場合はチェック
  付けたままでオッケー。

[2008-02-10]

見よう見まねでプラグイン はてなブックマークに登録

(あまり使わないが)RSS は TheWorld Browser サイトで配布されてるプラグインを入れ、私的に必須の Internet Archive で開いているページを検索するプラグインを
作った。プラグインと言うよりスクリプトだけど。
plugin フォルダの下に wayback とか適当な名前のフォルダ作って以下の3つの
ファイルを置き、[ツール]→[インターフェース & プラグイン] で有効にする。
プラグインバー([表示]→[ツールバー])にボタンが表示される。



plugin.ini
[General]
Name=Internet Archive
Author=juria
Version=0.0.1
ModuleType=SCRIPT
FileName=wayback.html
Comments=Take Me Back on Internet Archive.
Type=BUTTON
HotIcon=wayback.ico
Icon=wayback.ico
StartAfterPageDone=

wayback.html
<script language="JavaScript"> 
var url;
url=window.location.href;
address='http://web.archive.org/*/'+url+'';
window.open(address);
</script>

wayback.ico
 Internet Archive の favicon.ico を拝借

TheWorld Browser に変えてみた はてなブックマークに登録

WEB 2.0 の時代、ローカルにアプリを置かず WEB アプリケーションを利用する時代に
なりつつあるそうな。各ブラウザはそう言ったサービスを利用しやすい方向に開発・
機能拡張されて行くわけだが、動作の軽快さが失われてはイライラするだけになる。

そんなエラそうな理由じゃなく、漠然と今のブラウザがイヤになっただけなんだけど。

起動時に、前回終了時のタブ一覧から復元したいページを選べたり、タブの多段表示を
しない(そうするつもりは無いらしい)代わりに、開いている全てのタブをサムネイル
で一覧表示できるところに惹かれて、 TheWorld Browser
三段四段にもなったタブバーから限られた文字数や内容と関係ないタイトルを見て
ページを行き来する煩わしさはみな経験してるでしょ?

(Windows 2000/XP/Vista Zip(Japanese) 版使用)


ほとんどのコマンドにユーザがホットキーを割り当てられるのだが、今のところ、
そのタブリスト表示コマンドが選択肢に無いので、AHK 書いてみた。
(左クリックでサムネイル一覧、右クリックならタブのタイトル一覧)

IfWinExist, ahk_class XFrame_Wnd
ControlClick, XCtrl_Wnd34, ahk_class XFrame_Wnd, , LEFT, 1, X3 Y3
Sleep, 200
If ErrorLevel = 0
WinActivate

ところが、このコントロールの ClassNN は開いているタブの数に応じて数字が増加
して行くのだった。カーソルキーで選んだサムネイル(非アクティブなタブ)を
キーボードで閉じられないし、このあたり今後対応して欲しいところ。
選択文字列左ドラッグでコピー、右ドラッグで検索とか、世はマウスジェスチャー全盛か。。。

ver.2.1 Spring
デフォルトで設定されているキー割り当て(下記、Windows 標準含む)はあまり
無いので、キーカスタマイズはユーザが気合を入れられるところ。
"新規タブ......Ctrl + T"
"現在のページをコピー......Ctrl + Shift + N"
"ホームページ......Alt + Home"
"ウィンドウ......Ctrl + N"
"開く......Ctrl + O"
"保存......Ctrl + S"
"イメージを別名保存......Ctrl + M"
"タブを閉じる......Ctrl + W"
"タブを復元......Ctrl + E"
"印刷......Ctrl + P"
"切り取り......Ctrl + X"
"コピー......Ctrl + C"
"貼り付け......Ctrl + V"
"すべて選択......Ctrl + A"
"ページ内検索......Ctrl + F"
"サイドバー......Ctrl + Shfit + S"
"検索バー......Ctrl + F"
"ページを拡大......Ctrl + NumPad + "
"ページを縮小......Ctrl + NumPad -"
"標準に戻す......Ctrl + NumPad /"
"Flash を無効化......Ctrl + Alt + F"
"完全更新......Ctrl + F5"
"すべて更新......Shift + F5"
"全画面......F11"
"お気に入りに追加......Ctrl + D"
"現在のページのフォームに入力......Alt + Q"
"現在のページのフォームのデータを保存......Alt + 1"
"アドレスボックスにフォーカス......Alt + D"

タブリストで操作するためにキー割り当てを追加
"タブをアクティブモードに切り替え......Ctrl + Shift + T"
"すべての非アクティブタブを閉じる......Ctrl + Shift + X"

[2008-02-03]

Window 指定の怪 はてなブックマークに登録

昨日のヤツ、Delphi 製アプリのメインフォームを指定しても PID が取得できない
みたい。となると、サイズ 0 の TApplication という Window を除外するわけには
行かない。

除外 Window 指定の方法は中々厄介みたいな話を 流行らせるページ管理人さんの所
見たんだけど、ウインドウスタイルは理解力不足ですっ飛ばし。とりあえず、
TApplication は置いといて座標指定でゴミを除外、DetectHiddenWindows,On が
少しは見やすいかも。手抜き。

WinGetPos, x, y, this_width, this_hight, ahk_id %this_id%
・・・・
If (y=0) or (t=space)
    Continue

[2008-02-02]

吹けよ風、呼べよコンテキストメニュー はてなブックマークに登録

起動中の(ウインドウを持つ)プロセスを選択してその実行ファイルのコンテキスト
メニューを表示する。タイトルバーに作業中のファイルのパスのみが表示されていれば
そのファイルのコンテキストメニューも(サブメニュー)。


メインメニューのアイテム名はウインドウタイトル、サブメニューのアイテム名は
ウインドウタイトルとプロセス ID + プロセス名。PID が欲しいがために、とっても
幼稚なやり方。


#NoTrayIcon
;#Persistent
;#SingleInstance force

;DetectHiddenWindows,On

; eamat 氏によるプロセスIDを指定して実行ファイルパスを得る関数
#include getProcessExeNameNT.ahk

;ContextMenu.exe のパス
ContextMenu = D:\Application\Filer\util\contextmenu\ContextMenu.exe

;----- ウィンドのウリスト作成
WinGet, id, list, , , Program Manager
   Loop, %id%
   {
       this_id := id%A_Index%
       WinGetTitle, this_title, ahk_id %this_id%
       Winget, this_pid, pid, ahk_id %this_id%
       Winget, this_proc, ProcessName, ahk_id %this_id%
       WinGetClass, this_class, ahk_id %this_id%
       WinGetPos, , , this_width, this_hight, ahk_id %this_id%
       t = %this_title%
       p = %this_pid%
       n = %this_proc%
       c = %this_class%
       w = %this_width%
       h = %this_hight%

       ; ウィンドウサイズが 0 とタイトルが無いものを除外
       ; 後者は DetectHiddenWindows, On の場合を考慮
       If (h=0 and w=0) or (t=space)
           Continue
       ;タイトルバーが存在するファイルパスだったら
       If(InStr(t,"\") && FileExist(t))
       {
           Menu, Sub, Add, %t%, getFile
           Menu, Sub, Add, %p% %n%, getPath
           Menu, Main, Add, %t%, :Sub
       }
       else
       Menu, Main, add, %t%, getWindow
   }
   Menu, Main, Show
   Return

getWindow:
   WinGet, pid, pid, %A_ThisMenuItem%
   e := getProcessExeNameNT(pid)
   Run, %ContextMenu% %e%
   Return

getPath:
   StringSplit, procPid, A_ThisMenuItem, %A_Space%
   pid = %procPid1%
   e := getProcessExeNameNT(pid)
   Run, %ContextMenu% %e%
   Return

getFile:
   e = %A_ThisMenuItem%
   Run, %ContextMenu% %e%

さて、タイトルバーのファイルパスを含むテキストをどうしたもんかと検索してたら
すでにTOKKY さまが 自家製「menuHacker」 で同じようなことをなさっていました。
Lynx や xyzzy はバックスラッシュだしなあ。(MenuHacker でもとれないのさ。)


-