Rapid Express

Rapid Express

中小企業を支援するLinuxベースのWebアプリケーション開発

Rapid Express RSS Feed
 
 
 
 

Androidマーケットに登録してみた

AndroidマーケットはiPhoneにくらべて40分の1の市場規模だとか。

だからかえって気安く登録できるのかもしれませんが、手習いで作った簡単なプログラムを、アイコンを整え、そして英文の説明をひねり出して登録してみました。

●Stopgap Brightness

This simple program quickly makes brightness that you wish.
In the daytime probably in the outdoor it is lightened, and in the night well in the bed it is darkened until the device suspends.

誰でも思いつきそうで、それでいて、同じ趣旨のものはなかったように思います。

アクティビティの背景を透明にできなかったのが残念です。

 

Googleケータイのある生活

スマートフォンでGmailを運用する点は以前からそうだったわけで、今さら新鮮なことは何もないはずでした。
javaによるアプリ開発の興味から乗り換えただけだったのですが・・・

それがいざ使ってみると、WM(Windows Mobile)のGmail運用とは、全然違うのでした!(嬉

WMやiPhoneでもGoogleのサービスは利用できます。

SMSを利用したプッシュメールをトリガーに、アプリがGmailの未読を取得する仕組です。
この仕組みだと、携帯に着信したメールは携帯で読まない限り、携帯の未読ランプは消えません。
そんなこと当たり前だと、今までは思っていたわけです。

ただ、携帯で読んだメールをPCでも読む(既読にする)必要に面倒を感じていました。

ところがGoogleケータイたるAndroidでは、届いた未読メールを、付属のGmailアプリを使わずにブラウザのGmailモバイルで読んでも未読ランプは消えます。

それどころか、パソコンのブラウザでGmailを開いてメールを読んでも、携帯の未読ランプが消えるワケです。

むろん、どこまで読んだかの情報も、携帯とPCで完全に共有しています。

おかげで、パソコンが傍にあるならわざわざ携帯でメールを読まなくなりました。
それで逆説的に気付くのです。

あれ、今まではわざわざ携帯で読んでたの?? なんか本末転倒してね?

と。

ということで、現在のホーム画面です。

PCとモバイルでデータを共有してどちらでも操作できる環境は、このAndroidではじめて実現したものです。
WMやiPhoneのPCとのデータリンクとは、全く次元が違います。

画面キャプチャ

面白いのは、ここまでPCとシームレスであるのに、PCがなくても携帯だけでも完結することです。

ただし・・・

サービス アプリ名 備考
Gmail Webショートカット 標準アプリは使い物にならない
マップ 標準アプリ 唯一まともな標準アプリ
カレンダー 標準アプリ 今一の出来。Web版に変えようか・・・
タスク Webショートカット
ドキュメント Webショートカット アプリではExcel編集ができない
リーダー NewsRob Web版よりだんぜん使いやすい
ニュース Webショートカット
2ちゃん Webショートカット 自宅サーバーにrep2を設置

こうして一覧にすると分かるように、今のところ大半をブラウザ経由のWebサービスに頼っています。
WebならOSに依存しないので、iPhoneでも真似できるかもしれません(笑

肝心のメールアプリが使い物にならず(HTMLメール固定で、返信引用が削除できない等)、Web版をブラウザで使わざるをえないのが最大の難点ですね。

まともなアプリはGoogleリーダー用のNewsRobだけといって良いでしょう。
はやく何とかしてもらいたいものです。

 

OfficeオートメーションのセットアップをClickOnce

OfficeオートメーションのアプリケーションのセットアップをClickOnceで作るときに躓いたのでメモ。

今回、PowerPointのオートメーション機能に新たに加えたのですが、開発環境上での動作確認で問題なくても、他のクライアントからClickOnceセットアップを実行すると次のエラーが・・・

このアプリケーションをインストールまたは実行できません。このアプリケーションでは、まずグローバル アセンブリキャッシュ (GAC) にアセンブリ Microsoft.Office.Interop.PowerPoint バージョン 11.0.0.0 をインストールする必要があります。

システム管理者に問い合わせてください。

そういや、もともとWordとExcelのオートメーションプログラムとして作成して、まったく同じエラーでネットを検索して対策したのでした。ちゃんと覚えてられないこの鳥頭め・・・

ということで、ClickOnceの「アプリケーション ファイル」にて、OfficeのCOMコンポーネントをデフォルトのままの「必須コンポートネント」から「追加」に変更して、無事、回避しました。

画面キャプチャ

 

PowerPointを非表示でオートメーションする

Visual C# .NETでPowerPointをオートメーションする必要が出ました。

ところがアプリケーションウィンドウを非表示にできず困ったので、その顛末です。

まあ、概ね以下のようなコードでプレゼンテーションファイルを開くんですが、

PowerPoint.Application objApp;
PowerPoint.Presentations objPresSet;
PowerPoint._Presentation objPres;

objApp = new PowerPoint.Application();
objApp.Visible = MsoTriState.msoTrue;
objPresSet = objApp.Presentations;

objPres = objPresSet.Open(path, MsoTriState.msoTrue,
  ? MsoTriState.msoTrue, MsoTriState.msoTrue);

objApp.Visible を Falseにすると、次のエラーが出てしまいます。

System.Runtime.InteropServices.COMException (0×80048240): Application (不明なメンバー):無効な要求です。アプリケーションウィンドウを非表示することはできません。

それで、ネットを検索してみたのですが、PowerPointのオートメーションなんてあまり流行ってなくて、Excelに比べて情報量が圧倒的に少なく困りました。

ようやく見つけたがVB.NETのFAQで、Openの引数WithWindowsをFalseにすればOKとありました。

しかし、C#でそれをやっても依然と同じエラーとなります。さて、困った。

条件を変えてさらにググってみたところ、NamazuのFAQにたどり着きました。

Application.Visible : 無効な要求です。アプリケーションウィンドウを非表示に設定することはできません。

の例外が起きます。ところが、この例外メッセージが出てもインデックスは正常に作成されるようです。ということで、この例外メッセージを nul に送って無視してやれば、うまくインデックスできるようになります

なるほど?ってことで・・・

PowerPoint.Application objApp;
PowerPoint.Presentations objPresSet;
PowerPoint._Presentation objPres;

objApp = new PowerPoint.Application();
try {
    objApp.Visible = MsoTriState.msoFalse;
}
catch (Exception e) {
    //エラーを無視
}
objPresSet = objApp.Presentations;

objPres = objPresSet.Open(path, MsoTriState.msoTrue,
?   MsoTriState.msoTrue, MsoTriState.msoFalse);

こんなんで、いいんでしょうか(汗

 

Androidのお天気ウィジット

Windows Mobileではお天気表示のスクリプトを自分で書いたりしましたが、Androidだとフリーで十分実用的なウィジットがあって、私のような者の出る幕はありません。

使用しているのは、Weather forecast widget v2 です。

画面キャプチャ 画面キャプチャ

私は2マスのウィジットを使用してますが、情報量によっていろんなサイズを選択できます。

画面キャプチャ

天気データはGoogleから取得していて、東京だと23区レベルで場所を指定できます(表示は“東京”になるように設定で書き換えてます)。

ご覧のように日本語で天気情報を表示するようにできるのですが、残念ながら選択肢には含まれないので、多くの人が気付いてないように思います。

言語はohterを選択して“ja”を入力、エンコードもotherを選択して“sjis”を入力する必要があります。

画面キャプチャ

ついでに気温単位は“Celsius”ですね。

設定を変更したら最下段の「Save and exit」で抜けますが、そのときホームのウィジットにはすぐに反映せず、文字化けのままだったするので、混乱するかもしれません。
もう一度設定を開いて保存すれば、ウィジットにも設定が反映されます。

 

自鯖持ちなら2chビューアはrep2

Android用の2chビューアにはAnChanを初期の頃から使ってきました。
PC上で使っていたJane Styleとは同期が取れないので、自ずとモバイルでのみ閲覧するようになりました。

しかし、閲覧も書き込みもすべてモバイルで、というのはやっぱり苦痛なわけで、PCとの同期が取れる方法はないかなあ、とずっと思っていたのです。

ふと、サーバーはあるし、datを取り込んで表示するPHPスクリプトを自分で書くしかないかなあ・・・と。

待て待て、そんなこと考えるのは自分だけじゃないはずで、既にあるはずだと検索してみると、p2およびその発展版のrep2を見つけ、早速サーバーにインストールしてみました。

いまさら、こんなことに気付くような間抜けじゃあ、「情弱」のそしりは免れないですねえ。orz

画面キャプチャ

PC上ではこんな表示で・・・

画面キャプチャ

画面キャプチャ

モバイルではこうなります。

レス番号の参照リンクもPCと同様にポップアップで内容表示できますし、何よりPCとデータを完全共有できるのは、Androd Googleケータイの王道ではないかと。

公開されている最新版 Ver.1.8.56ではAndroidには対応してなかったので、lib/UA.phpを少し書き換えて、AndroidもiPhoneとみなすようにしました。

if (preg_match('/(iPhone|iPod|Android)/', $ua)) {
    return true;
}

未公開の1.8.58ではAndroid対応済みのようですね。
タイトルバーに“rep2iPhone”と表示されるのは気に入らないので(w、正式対応に期待してます。

 

GoogleマップのマーカーをカスタムPOI用CSVに変換

Googleマップの「マイマップ」や「ルート・乗換案内」で定義したマーカーから、GARMIN nuviシリーズ等で利用可能なカスタムPOIに変換可能なCSVファイルを一発生成するPHPスクリプトを書いてみました。

Googleマップ POI・CSVコンバーター

出力したCSVからカスタムPOIを作成するには POI Loader を使用します。

GARMINのnuvi 250は案内ルートを作成するのに、経由地を1箇所しか登録できません。
nuvi 205wでも経由地こそ複数登録できますが、ルートを1セットしか記憶できません。

いずれの場合も、事前にルート計画を立てておいて、ツーリング当日に臨機応変に使い分けるような使い方ができません。

そこで、使用するのが「カスタムPOI」です。

カスタムPOIはお気に入りとは独立していますから、一連のルート経由地を1つのPOIセットとして登録し、使い分けすることができます。
nuvi 250でも、登録した経由地を1つずつ消化していくことで、綿密なルート取りが可能となります。

GoogleマップのマーカーをそのままCSVに出力できたら楽だなあ?と、マップのHTMLソースを見てみたら別に難しいことじゃないようなので、さくさくっと書いてみました。

試しに作ってみた、ルートのサンプルです。
八王子から箱根峠まで、ほぼ全線ウネウネな渋滞回避・貧乏下道ルートです。

このルートで伊豆半島にアクセスし、そして西伊豆スカイラインを爆走したあと、帰りは道志・秋山経由で帰還すると、くたくたになってビールが旨いです(笑)

139.34352200000001,35.685127999999999,A 八王子IC,いつもの集合場所
139.31822,35.638710000000003,B 都道506号線,
139.27636000000001,35.571800000000003,C 県道65号線,
139.22092000000001,35.546909999999997,D 県道513号線,
139.21798000000001,35.428910000000002,E 県道70号線,
139.22432499999999,35.372452000000003,F 県道704号線,
139.20625000000001,35.361750000000001,G 名称のない道路,
139.160777,35.338408999999999,H 名称のない道路,
139.095901,35.313054000000001,I 県道723号線/足柄街道,
139.114991,35.289135999999999,J 足柄街道,
139.116478,35.260846000000001,K 名称のない道路,
139.12420399999999,35.243586999999998,L 名称のない道路,
139.10810000000001,35.231929999999998,M 旧東海道/県道732号線,
139.04947999999999,35.202232000000002,N 旧東海道/県道732号線,
139.01549700000001,35.186557999999998,O 箱根峠,

変換済みのバイナリデータです。

八王子・箱根峠.gpi (右クリックして、名前をつけて保存してください)

 

日本郵政の郵便番号データの見方(とテストパターン)

住所入力フォームでよくある、郵便番号から住所を検索するシステムでは、日本郵便の郵便番号データを利用しています。

検索ボタンを押してから検索結果を住所欄に貼り付ける処理には、Ajaxを使うとポップアップウィンドウを開かずにスムーズに処理できます。

同じ郵便番号に複数の住所が割り当てられている場合はユーザーに選択を促すわけですが、問題は候補選択のインターフェースなどではなく、日本郵政の郵便番号データをどう解釈してデータベースを構築するかにあります。

なぜなら、このデータがCSVとは名ばかりのとんでもないデータ構造をしているからです(笑)

ダウンロードしたデータは次のようなカンマ区切りですが・・・

01209,"06805","0680546","ホッカイドウ","ユウバリシ","ナンブアオバチョウ","北海道","夕張市","南部青葉町",0,0,0,1,0,0

ここでは次のように必要部分だけを抜き出したデータとして扱います。

0680546 北海道 夕張市 南部青葉町

この郵便番号データから、住所検索システム用のデータベースに変換するプログラムが肝になるわけですが、私が作成したものは次のデモプログラムの入力フォームで確認できます。

ユーザー管理デモプログラム
業務プログラムのユーザー管理のサンプルとして、年賀状あて名印刷を業務に見立てたデモプログラムです。

このページで解説するテストパターンの郵便番号を入力してみて、他の同じような入力フォームと比較してみてください。・・・えっ、自分の住まいは都会で、郵便番号から出てくる住所は一つだから関係ない?

それはまあそうなんでしょうが、プログラミングに対する配慮と技術のサンプルということでお願いします(w


A.実際にデータが2行あるパターン

0680546 北海道 夕張市 南部青葉町
0680546 北海道 夕張市 南部菊水町

説明不要かもしれませんが・・・郵便番号から住所を自動入力する機能があるサイトで、まずはこの番号を入力してみてください。

有無を言わさず「南部青葉町」が自動入力されたり、「夕張市」までが入力されて町名が入らないなら、ユーザー選択はさせないと割り切った方針で作られたプログラムで、それはそれでアリだと思います。そのココロザシ、イサギヨシと言ったところです。

むしろ、このパターンでは選択肢が出るのに、後述するCパターンでは選択肢が出ないとしたら、郵便番号データの構造を理解していない中途半端なプログラムだと言えます。

B.カッコつきの住所

データの中には住所にカッコが付いているものがあります。

0880108 北海道 釧路市 音別町音別原野基線(二俣川向)
0780186 北海道 旭川市 神居町西丘(8?22番地)

専門用語は知りませんが・・・法的には不要な通名のようなものながら、普通に住居表示として利用されている表記だそうです。ということで、カッコ記号を取って「音別町音別原野基線二俣川向」や「神居町西丘8?22番地」としてあげるものです。

C.カッコの中が選択肢になるもの

カッコの中に読点があって、複数の住所が示されるものがあります。javascriptで複数候補を選択させるのはAパターンだけでないと、最初に説明したものです。

0410842 北海道 函館市 滝沢町(57、97、98番地)

「滝沢町57」、「滝沢町97」、「滝沢町98番地」と分けるが正解です。・・・「番地」をそれぞれに振り分けるがベストですが、読点区切りは番地だけでなく小字などと混在することもあるので難しいです。

D.カッコの中が範囲指定であるパターン

0690867 北海道 江別市 元野幌(1?440番地)

本来は1番地から440番地まで展開されるものですがそれを選択肢にするのは不可能です。かと言って、これをそのまま住所として貼り付けても、ユーザは自分で削除する羽目になりますから、カッコ以下を丸ごと削除して使用するのが親切です。

1320013 東京都 江戸川区 江戸川(1?3丁目、4丁目1?14番)

読点区切りと範囲指定が混在するものもあります。データを切り出すロジックにもよりますが、処理をすり抜けてしまわないように、この番号もテストが必要です。

E.地割と小字の併記パターン

東北のほうには住所表記に「地割」というのが出てきます。

0240341 岩手県 和賀郡西和賀町 杉名畑44地割(湯田ダム管理事務所、後口山、当楽)

Cパターンと同様に処理すれば良いようにも思いますが、次のようなパターンも多いので扱いに困ります。

0287903 岩手県 九戸郡洋野町 種市第1地割?第3地割(八木南町、八木北町)

どうも地割と小字を併記しているようですが、東北には詳しくないので実態はわかりません。まあ、前半が範囲指定ですからカッコ内は2つに分けず削除します。

さらに、範囲指定である「第○地割」を削除しても「種市」は残りますから、「九戸郡洋野町種市」までを住所欄に貼り付けるべきでしょう。

F.その他のカッコの使われ方

カッコは次のような使われ方もしています。

8993203 鹿児島県 日置市 日吉町吉利(その他)
9800021 宮城県 仙台市青葉区 中央(次のビルを除く)
9806190 宮城県 仙台市青葉区 中央アエル(地階・階層不明)

住所から郵便番号を特定するには必要な情報ですが、郵便番号から住所を逆引きするときは不要です。削除して使用するべきものですね。

G.データは1行で終わるとは限らない

そろそろ郵便番号データの真髄に触れます(笑)

これって本当にCSVデータなんでしょうか?

0660005 北海道 千歳市 協和(88?2、271?10、343?2、404?1、427?
0660005 北海道 千歳市 3、431?12、443?6、608?2、641?8、814、842?
0660005 北海道 千歳市 5、1137?3、1392、1657、1752番地)

開いたカッコが閉じていないときは、データが次の行まで続いていることになります。そして、読点区切りも見事に分断されているのです。

「協和88?2」、「協和271?10」・・・そして「協和427?3」や「協和842?5」と展開されるべきものです。候補は全部で15ですね。

この郵便番号を入力したときに、「千歳市協和88?2」と「千歳市3」、「千歳市5」の3候補が出るお粗末なシステムは、期待にたがわず少なくないです(汗)

選択肢が日本一多くなるのは次の郵便番号ではないかと思われますが、どうでしょう。

9218046 石川県 金沢市 大桑町(ア、イ、ヰ、ウ、上野、ヲ、オ乙、鐘搗山、上川原、上猫下、
9218046 石川県 金沢市 ク、ケ、御所谷、小寺山、シ、下上野、下西欠、平、チ、ツ乙、ツ丙、テ、ト、
9218046 石川県 金沢市 中上野、中尾山、中平、中ノ大平、ニ、西ノ山、猫シタイ、ノ、ハ、開、ヘ、
9218046 石川県 金沢市 ホ、法師山、坊山、マ、鱒川淵、ム、元末、元涌波庚、ヤ、リ、ル、レ乙、
9218046 石川県 金沢市 レ甲、ロ乙、ロ甲、和)

H.カッコの外でリストになるパターンも

読点区切りによるリストはカッコの中だけ作られるとは限りません。

0295503 岩手県 和賀郡西和賀町 穴明22地割、穴明23地割

これもきちんと候補選択に展開させる必要があります。

I.かぎカッコによる例外表記のパターン

かぎカッコは例外表記に使われていますので、かぎカッコは丸ごと削除するようにします。

かぎカッコは2行にわたることもありますから、1行ずつ処理するスクリプトでは配慮が必要になります。

0330071 青森県 上北郡六戸町 犬落瀬(内金矢、内山、岡沼、金沢、金矢、上淋代、木越、権現沢
0330071 青森県 上北郡六戸町 四木、七百、下久保「174を除く」、下淋代、高森、通目木、坪毛沢「2
0330071 青森県 上北郡六戸町 5、637、641、643、647を除く」、中屋敷、沼久保、根古橋、堀切
0330071 青森県 上北郡六戸町 沢、南平、柳沢、大曲)

かと思うと、“「○○」以外”という表記もありますから、かぎカッコを削除する前にこちらを削除しておかないと、変なことになります。

0482402 北海道 余市郡仁木町 大江(1丁目、2丁目「651、662、668番地」以外、3丁目5、1
0482402 北海道 余市郡仁木町","3?4、20、678、687番地)

かぎカッコを削除した残りが範囲指定となり、結果としてカッコ内をすべて削除することになることもあります。

3842304 長野県 北佐久郡立科町 茂田井(1?500「211番地を除く」「古町」、2527?2529
3842304 長野県 北佐久郡立科町 「土遠」)

例外表記には通常のカッコが使われているところもあります。これはFパターンとして削除するべきものですね。

3812241 長野県 長野市 青木島町青木島乙(956番地以外)

.

以下、思いつきでよそ様のサイトをテストしてみました。

0680546 0880108
楽天会員登録 ()削除 すべて共通部分までの候補なしですが、破綻はありません。

 

窓使いの憂鬱でファイルの並びをトグルする(Explorer, WinSCP)

Windowsのリストビューはカラムヘッダをクリックするだけで各種の並び替えができますが、たまに独自のリストビューでカラムヘッダによるソートに対応しないソフトがあると、古臭さと不便を感じるものです。

しかし、別の視点でこのインターフェースを考えると、わざわざキーボードから手を離してマウスにもち手を換えてカラムヘッダをクリックしなければならいわけで、ほんとに便利かと問われれば首を傾げざるを得ません。

ファイルリストでよく使うのは、「ファイル名順」と「新しい順」です。

というか、それ以外の並び順はほとんど使いませんね。たまにファイルの種類順にすることがあるかどうか。

?

にもかかわらず、あろうことかExploreでは「ファイル名順」の状態から「更新日時」のカラムヘッダをクリックすると「更新日時正順=古い順」に並び、「更新日逆順=新しい順」に並ばせるにはもう一度「更新日時」のカラムをクリックしなければなりません。

ソフトウェアによっては更新日時ヘッダのクリックだけは逆順をデフォルトにするものもありますから、1回のクリックでどう並ぶかが余計にわかりません。

?

Emacsのdiredでは、キーボードの「S」を押すたびに「ファイル名順」と「新しい順」とでトグルして、これがとっても使いやすかったりします。その割り切り方は徹底していて、「ファイルの種類順」だとか、ましてや「古い順」などありません。

ExplorerやWinSCPでも同じようにトグルできればなあ・・・

?

と以前から思っていたのですが、このたび、窓使いの憂鬱のヘルプを眺めていて、&Toggleという関数があることに気づきました。

ということで、Ctrl+Alt+Sに割り当ててみました。

Ctrl+Alt+Sを押すたびに「ファイル名順」と「新しい順」が交互に切り替わります。

?

.mayu

## Explorer, Internet Explorer ....................................

window	ExplorerList /EXPLORER.*:SHELLDLL_DefView:.*SysListView32$/ \
			: SysListView32

 key C-A-S         = A-V I M A-V I M &Toggle(Lock8)
 key L8-C-A-S      = A-V I N &Toggle(Lock8)

## WinSCPへ .......................................................

window WinSCP /WinSCP\.exe/ : EmacsMove

 key C-A-S      = C-F5 C-F5 &Toggle(Lock9)
 key L9-C-A-S   = C-F3 &Toggle(Lock9)

?

他にも何か使い道がないか考えてみようっと♪

 

Mailtoプロトコルfor Gmail via Chrome

Gmailを愛用していると、据わりの悪いことが2つあります。

  1. スタートメニューに表示される「電子メール」にGmailを登録できないこと。
  2. ブラウザ上でmailtoリンクをクリックしたときにGmailが起動しないこと。

どちらも規定のプログラムに関わることで同根ですが、とりあえず分けておきます。

1のほうは、「電子メール」のメニュー項目をDeleteキーで消して、スタートメニューに作成したGoogle Chromeのアプリケーションショートカットを同じ場所にD&Dすることで、見た目を同じようにすることができます。ただし規定のプログラムを変更するわけではないので、2のmailtoリンクには影響しません。

?

規定のプログラムは、レジストリエディタでHKLM?SOFTWARE?Clients?Mail にエントリーを追加すれば実現できます。

インターネットオプションのダイアログには、このレジストリから読み出されたメールソフトがリストされ、選択すると、HKCR?mailto にコピーされる仕組みになっています。

あて先アドレスを指定してGmailを開く方法さえ分かれば、自分で簡単に実現できるのです。

?

ネットを調べると、mailtoリンクを実現するフリーソフトやハウツーをいくつか見つけることができました。

しかし、mailtoを実現するだけで規定のプログラムを定義してなく、1のほうがおざなりだったり、そのくせ、たかがmailtoを実現するためにご大層なアプリケーションに仕立てられていたりして、ブラックボックス化された仕組みをインストールするものは好みに合いません。

アプリケーション化はエンドユーザには必要なのかもしれませんが、どうやって実現しているのか、何がインストールされるか分かるオープンなものが、こういうちょっとしたことで実現できそうなアイテムには似合っています。

?

問題は、Gmailにメールのあて先をパラメータで与えるURLは何か?・・・です。

アドレスバーで確認できる「メールを作成」画面のアドレスは?http://mail.google.com/mail/#compose ですが、これに「?to=hoge@hogehoge.com」などを加えてもうまくいきません。

悩んでいると、その画面の「送信」「すぐに保存」「破棄」のラインの右端・・・そこにあるボタンをクリックすることで独立ウィンドウとなり、URLが引数付きのものになることをブログ記事で知りました。

試行錯誤の末、どうやら最低限の引数は次のようです。

?

http://mail.google.com/mail/?view=cm&fs=1&tf=1&to=hoge@hogehoge.com

?

mailtoリンクをクリックしたときに、mailtoプロトコルの %1 に与えられる引数は、mailto:hoge@hoge.com?subject=xxxxxx のようなものなので、「mailto:」を「to=」に、「?」を「&」に置換するためのプログラムかスクリプトは必要です。

  1. %USERPROFILE% を展開してChrome.exeの実行パスを得る。
  2. mailto引数の置換をして、GmailのURLと結合する。
  3. chrome.exe –app={{新規メールのULR}} を実行する。

というだけのものですが。

せっかくなのでブログで公開するため、WSHスクリプトで書いてみました。Windows XPとVistaで共通のコードです。・・・が、Vistaではテストしてません。動作したらお知らせください(汗

?

? * Mailtoプロトコル for Gmail via Chrome
mailto_gmail.exe
gmail.vbsとgmail.regを含む自己解答書庫です?

?

Chromeのプログラムは、

【XPの場合】
C:?Documents and Settings?ユーザ名?Local Settings?Application Data?Google?Chrome?Application
【Vistaの場合】
C:?Users?ユーザ名?Local Settings?Application Data?Google?Chrome?Application

にインストールされていますので、これと同じフォルダに gmail.vps とgmail.reg を解凍します。

解凍後に gmail.reg が自動実行されて、規定のプログラムに「Gmail via Chrome」が追加されます。インターネットオプションで規定のプログラムを変更してください。

?

インストール後、regファイルに関してはいつでも削除してかまいません(vpsファイルは残してください)。

?

■アンインストール

「プログラムの追加と削除」には対応しません。 以下を手作業で削除してください。

  • 上記gmail.vpsとgmail.regをファイル削除
  • レジストリエディタにて、HKLM?Software?Clients?Mail?Gmail via Chrome を削除

?

※補足

Google Chromeさえインストールされていれば、使用するブラウザがInternet ExplorerやFireFoxであってもmailtoリンクのクリックでGmailが起動します。