Hatena::Groupnadesiko

そっとなでしこ RSSフィード


メインのブログに書くまでもない、なでしこ学習帳【記事一覧】 【このブログは何?】


特設!→【目次】なでしこ用Twitter 連携ライブラリ「なこったー」で遊ぶ


2010-06-30

Operaの右クリックメニューを編集(2)

| Operaの右クリックメニューを編集(2) - そっとなでしこ を含むブックマーク はてなブックマーク - Operaの右クリックメニューを編集(2) - そっとなでしこ

 前回の記事では、右クリックメニューの設定INIファイルを編集するスクリプトを書いてみました。

 しかし、Operaを新規インストールした直後の状態では、この右クリックメニューの設定INIファイル(通称"menu.ini")は存在していません。このINIファイルは、[設定]メニュー>[詳細設定]>[ツールバー]>[メニュー]からメニューの編集・複製を行った時に自動生成されます。

 そこでさらに、この右クリックメニューの設定INIファイルの作成と、作成されたINIファイルをOperaが起動時に読み込むように設定することもスクリプト化してみたいと思います。

■自動化する処理内容の整理

■右クリックメニューの設定INIファイルの作成

 右クリックメニューの設定INIファイルは、次の場所に格納された初期設定のINIファイルをコピーして自動生成されているようです。

C:\Program Files\【インストールフォルダ】\ui\standard_menu.ini

 この初期設定のINIファイルが以下の場所にコピーされるわけです(windows2000での例)。

C:\Documents and Settings\【ユーザー名】\Application Data\Opera\【インストールフォルダ】\menu\standard_menu (1).ini
■Operaが起動時に読み込むINIファイルの指定

 Operaが起動時に読み込む右クリックメニューの設定INIファイルの指定は「operaprefs.ini」で行っています。

 このファイルは以下の場所にあります(windows2000での例)。

C:\Documents and Settings\【ユーザー名】\Application Data\Opera\【インストールフォルダ】\operaprefs.ini

INIファイル「operaprefs.ini」の「User Prefs」セクションにあるキー「Menu Configuration」の値を「{SmallPreferences}menu\standard_menu (1).ini」と指定することで、上記のコピーされた右クリックメニューの設定INIファイルをOperaが起動時に読み込んでくれるようです。

■ソースコード

 上記の処理を自動化しようとすると、こんな感じ。

#-----------------------------------------------------------------------
# 定数の定義
#-----------------------------------------------------------------------
!インストールフォルダは「Opera_1060_3444」。
!Menuパスは「{アプリ設定フォルダ}Opera\{インストールフォルダ}\menu\」。
!Menuファイル名は「standard_menu (1).ini」。
#-----------------------------------------------------------------------
# メイン処理
#-----------------------------------------------------------------------
Menuパスにフォルダ作成。
「{PROGRAMFILESパス}{インストールフォルダ}\ui\standard_menu.ini」から「{Menuパス}{Menuファイル名}」へファイルコピー。

ハンドルは「{アプリ設定フォルダ}Opera\{インストールフォルダ}\operaprefs.ini」のINI開く。
ハンドルで「User Prefs」の「Menu Configuration」に「{波カッコ}SmallPreferences{波カッコ閉じ}menu\standard_menu (1).ini」をINI書く。
ハンドルのINI閉じる。

「完了しました」と言う。
母艦を閉じる。


【参考リンク】

■更に楽ちんなOperaバージョンアップ作業を求めて

 さて、次は更に、Operaを上書きせずクリーンインストールする際に毎回設定ダイアログから手動設定している以下の作業を自動化してみたい。

 「operaprefs.ini」を編集するだけなので、今回のスクリプトと同じことをすれば良い。ただ、今度はINIファイルに設定する値をスクリプト内で固定的に記述するのではなく、外部ファイルに記述し、それをスクリプトが読み込むようにし、スクリプトの汎用性を高めてみたい。

Operaの右クリックメニューを編集

| Operaの右クリックメニューを編集 - そっとなでしこ を含むブックマーク はてなブックマーク - Operaの右クリックメニューを編集 - そっとなでしこ

 Operaの右クリックメニューに項目を追加するカスタマイズを施す場合は、iniファイルを手動で編集します。この編集作業をスクリプト化し、少しでも楽をしたいと思います。

■Operaのmenu.iniに書き込む

 右クリックメニューの設定INIファイルについては、次のリンク先記事にまとめられている通り。

 例えば、Operaのインストール先が

C:\Program Files\【インストールフォルダ】\

の場合、[設定]メニュー>[詳細設定]>[ツールバー]>[メニュー]から編集・複製して右クリックメニューの設定INIファイルが自動設定されるのは、以下の場所です(windows2000の例)。

C:\Documents and Settings\【ユーザー名】\Application Data\Opera\【インストールフォルダ】\menu\standard_menu (1).ini

 このINIファイルの「Document Popup Menu」セクションに、次のような3項目を追加する作業を、スクリプト化してみようと思います。

[Document Popup Menu]
Item, "Sleipnirで開く" = Execute program, "C:\tools\Sleipnir\bin\Sleipnir.exe","%u"
Item, "Firefoxで開く" = Execute program, "C:\Program Files\Mozilla Firefox\firefox.exe","%u"
Item, "Chromeで開く" = Execute program, "C:\tools\ChromePlus1.3.2.0\chrome.exe","%u"

そこで、以下のようなスクリプトを書いてみました。

インストールフォルダ=「Opera_1060_3444」。
ハンドルは「{アプリ設定フォルダ}Opera\{インストールフォルダ}\menu\standard_menu (1).ini」のINI開く。
ハンドルで「Document Popup Menu」の「Item, "Sleipnirで開く"」に「Execute program, "C:\tools\Sleipnir\bin\Sleipnir.exe","%u"」をINI書く
ハンドルで「Document Popup Menu」の「Item, "Firefoxで開く"」に「Execute program, "C:\Program Files\Mozilla Firefox\firefox.exe","%u"」をINI書く
ハンドルで「Document Popup Menu」の「Item, "Chromeで開く"」に「Execute program, "C:\tools\ChromePlus1.3.2.0\chrome.exe","%u"」をINI書く
ハンドルのINI閉じる
「編集終了」と言う。
母艦を閉じる。

■右クリックメニューを表示してみると文字化けが!

 上記のソースコードで確かにINIファイルに3項目が追加されました。

 ところが、Operaを起動して右クリックメニューを表示してみると、追加した項目の「~で開く」というマルチバイトな日本語の部分が文字化けしてしまいました…orz

 どうやら、Operaの設定ファイルの文字コードはUTF8と決められていたようなのです。ということで、追加する項目をUTF8に文字コード変換してから、INIファイルを書き込むように、次のようなソースコードに変更しました。また、編集した右クリックメニューの設定INIファイルが見分けがつくように、設定名称を「俺メニュー」にするINI書き込み処理も追加しました。

インストールフォルダは「Opera_1060_3444」。
Menuファイル名は「standard_menu (1).ini」
ハンドルは「{アプリ設定フォルダ}Opera\{インストールフォルダ}\menu\{Menuファイル名}」のINI開く
「Item, "Sleipnirで開く"」をUTF8変換
ハンドルで「Document Popup Menu」の「{それ}」に「Execute program, "C:\tools\Sleipnir\bin\Sleipnir.exe","%u"」をINI書く
「Item, "Firefoxで開く"」をUTF8変換
ハンドルで「Document Popup Menu」の「{それ}」に「Execute program, "C:\Program Files\Mozilla Firefox\firefox.exe","%u"」をINI書く
「Item, "Chromeで開く"」をUTF8変換
ハンドルで「Document Popup Menu」の「{それ}」に「Execute program, "C:\tools\ChromePlus1.3.2.0\chrome.exe","%u"」をINI書く
「俺メニュー」をUTF8変換。
ハンドルで「Info」の「NAME」に「{それ}」をINI書く。
ハンドルのINI閉じる。
「編集終了」と言う。
母艦を閉じる。

当然のことながら、このスクリプトは、対象となるOperaを終了してから実行します。


【参考記事】