本発明は、インターネットブラウザを用いてウェブサイトへの自動ログインを容易に行うことを目的とするものである。本発明の一実施形態によれば、サーバから、ユーザのインターネットブラウザに或る機能を追加するユーザ用コンピュータへコンピュータコードが伝送される。これによって本発明は、ユーザがボタンおよび/またはツールバーをブラウザ・インターフェイスに選択的に追加出来るようにし、さらに、ブラウザに特徴と機能とを追加出来るようにすることにより、インターネットブラウザ・インターフェイスの動的制御を提供するものである。好ましい実施形態では、コンピュータコードによって、ユーザが、インターネットブラウザ・インターフェイスにインターフェイス・オブジェクトの選択的追加によりブラウザ・インターフェイスの変更を行う事が出来るようになる。インターフェイス・オブジェクトは、既存のツールバーの一部として、またはブラウザ・インターフェイスに追加された新たなツールバーの一部としてブラウザ・インターフェイスに追加出来るボタンを備えたものであってもよい。このボタンによって、ユーザはマーチャント・リストにアクセスする事が出来るようになり、さらに、ブラウザに自動ログイン機能が追加される。マーチャント・リストへのアクセスによって、ユーザは、自動ログイン用のマーチャントの追加、マーチャントの編集、および、マーチャントの選択を行う事が出来るようになる。一度ブラウザ・インターフェイスにボタンが追加されると、ユーザはこの追加されたボタン(本願明細書では広義に自動ログインボタンと呼ぶ)上をクリックして、マーチャント・リストとして1以上のマーチャントを表示するプルダウンメニューへアクセスする事が出来る。マーチャント・リストのマーチャントの1つを選択することにより、本発明に基づいてブラウザに追加された機能によって、ユーザは選択したマーチャントに自動的にログインされ、ユーザのブラウザはマーチャントのウェブサイトへナビゲートされる。当該処理はユーザにとって実質的に透過的な処理であり、ユーザがマーチャント・リストからマーチャントを選択すると共に開始される。
本発明はまた、ショッピング・アシスタント・ボタンおよび機能を提供するブラウザ・インターフェイスの変更によりオンライン・ショッピングを簡便化する方法およびシステムを提供するものである。本発明のこの実施形態に基づいて提供される変更済みブラウザ・インターフェイスは、個々の買物客即ちユーザ用のウォレットを作成することによりオンライン・ショッピングを単純化するものである。このウォレットはセキュリティ保護処理を施したサーバのデータベースに格納され、ユーザが与えるセキュリティ保護キーでしか、そして、ユーザしかアクセスや、変更を行う事は出来ない。このウォレットには、サポートされたマーチャント・チェックアウトのウェブページへ直接ポートすることが可能なユーザによる供給情報が含まれる。従って、ユーザが、サポートされたマーチャントのウェブサイトでオンライン・ショッピングをしていて、そのマーチャントから或る商品および/またはサービスの購入を希望する時、本発明は、自分のウォレットに対するアクセスをユーザに提供して、そのウォレットの中に含まれているデータのポートを容易にし、迅速にかつ努力することなく、マーチャントのチェックアウト・ウェブページに設けられたマーチャントの注文用紙への記入が行われるようにするものである。
次に図面を詳細に参照すると、図10は、本発明を実現することが可能なインターネット90と接続されたコンピュータ50のブロック図である。コンピュータ50は、コンピュータ50の種々の装置間の情報の通信を容易にし、通信用インターフェイス68を介して、コンピュータと外部装置とシステムとの間の通信を容易にする内部バス64を備えている。バス64と接続されたプロセッサ66はコンピュータ50内部の情報を処理する。コンピュータ50は、プロセッサ66から伝送された命令を受け取り、格納するための、バス64と接続された、例えばランダムアクセスメモリ(RAM)または別の等価な動的記憶素子などのようなメインメモリ60を更に備えている。また、メインメモリ60は、プロセッサ66が命令を実行している間、変数やその他の中間情報を一時的に格納するために使用してもよい。また、リードオンリメモリ(ROM)62は、プロセッサ66が使用する静的データと命令とを格納するためにバス64と接続されている。本発明を限定しない例として、例えば、ディスプレイ54(たとえばブラウン管(CRT)、液晶ディスプレイ(LCD)など)、キーボードなどの入力装置56、マウスやトラックボールなどのカーソル制御装置58を含む種々の入出力装置がコンピュータ50の一部として設けられている。例えば、磁気ディスクドライブと磁気ディスク、CD−ROMドライブとCD−ROM、または、別の等価な装置並びにデータ記録媒体などのデータ格納装置52が、プロセッサ66、メインメモリ60、通信用インターフェイス68と通信を行うためのバス64と接続されている。格納装置52は、好適にはオペレーティングシステム70と、オペレーティングシステム70に格納されたインターネットブラウザ用ソフトウェアプログラム72(即ちブラウザ)とを格納することが望ましい。以下さらに詳細に論じるように、ライブラリファイル74をデータ格納装置52に格納してもよい。本願明細書で使用されている、“コンピュータ”という用語はその最も広義の解釈を有するものとして意図されるものであり、いずれの物理的サイズや構造、またはいずれのアーキテクチャの構成にも限定されるものではない。むしろ、本願明細書で用いられる“コンピュータ”という用語は、デジタルデータの伝送および/または受信能力、デジタルデータの格納および/または検索能力、デジタルデータの処理能力を有する任意の装置であって、例えば、インターネットなどネットワークと任意の態様で、また、任意の手段により接続可能な装置を意味するものとして使用されている。コンピュータは、任意のスタイル、大きさおよび構成のコンピュータであってもよく、限定を伴うことなく、サーバ、ワークステーション、デスクトップ、ラップトップ型、インターネット機器、ノートブック型、個人用情報機器(PDA)、インターネットと接続される携帯電話、あるいは現在公知の、または今後開発される装置を含むものであってもよい。コンピュータは以下の構成要素の全部または一部を含むものであってもよい:ソフトウェア(オペレーティングシステム、アプリケーションプログラムなど)と接続して作動可能な中央演算処理装置(CPUまたはプロセッサ)、ハードディスクユニット(HDU)、固定記憶装置(ROMなど)、一時メモリ(RAMなど)、取り外し可能データ格納装置(CD−ROM、フロッピードライブなど)、入力装置(キーボード、マウス、トラックボールなど)、出力装置(モニタやディスプレイなど)およびI/O装置(モデム、赤外線送受信機、無線(セルラ)送受信機など)。リストされていない構成要素と併せて、コンピュータがこれら構成要素の全部または一部を含み得るものであることは当業者には公知である。
コンピュータ50は、同軸ケーブル、銅線、光ファイバケーブルを含む(但しこれらに限定されるものではない)送信媒体を通して通信用インターフェイス68を介してインターネット90と接続する事が出来る。コンピュータ50とインターネット90との間の通信は無線やセルラ・インターフェイスを介してもよい。通信用インターフェイス68は、コンテンツ・プロバイダ100、200により提供されるサーバコンピュータ(図示せず)などのコンピュータ50と別の電子装置やシステム間との双方向通信を容易にする。
コンピュータ50を使用するインターネットユーザ(図示せず)は、ブラウザ72を起動させることによりインターネット90へのアクセスを行う事が出来、これによって、インターネット・サービス・プロバイダ(ISP)80を介して、コンピュータ50の通信用インターフェイス68とコンテンツ・プロバイダ100のインターネットサイト130との間の通信リンクが開かれる。ブラウザ72は、ブラウザ・ベンダがブラウザ72内に予め設定されたウィンドウ30のレイアウト(色、大きさ、数、位置など)および機能とを有するブラウザ・インターフェイス20(図1などを参照のこと)をコンピュータ・ディスプレイ54に提供する。インターネット・コンテンツはコンピュータ50へ伝送され、コンテンツ・プロバイダ100ブラウザ・インターフェイス20のコンテンツ・ウィンドウ32に表示される。
本発明の一実施形態によれば、第1のインターネット・コンテンツ・プロバイダ100は、ブラウザ72とブラウザ・インターフェイス20とを制御するためのプログラム120へのアクセスをインターネットユーザに提供することも可能である。ユーザが処理を実行すると、制御プログラム120により、例えば、ダイナミックリンクライブラリ(DLL)などのようなライブラリファイル74がインターネットユーザのコンピュータ50のデータ格納装置52にダウンロードされ、あるいは作成される。ライブラリファイル74はアクティブXコントロールやプラグイン機能を含むことが望ましい。その後、インターネットユーザがブラウザ72を用いてインターネットにアクセスする時、ブラウザ72はライブラリファイル74を開き、好ましくはコンテンツ・プロバイダのインターネットサイト130との接続を自動的に確立することが望ましい。コンテンツ・プロバイダは、ブラウザ72によりを確立された接続に応答して、ライブラリファイル74により作成された、ブラウザ内で作動するシェルの中へ情報および/または機能データをロードする。例えば、ユーザがコンテンツ・プロバイダ100のアカウントを持っていれば、カスタマイズされた情報および/または機能をライブラリファイル74の中へロードしてもよい。ユーザがアカウントを持っていなければ、さらに一般化された情報および/または機能をロードしてもよい。
本発明の種々の実施形態によれば、本願でさらに詳細に説明するように、コンピュータ間での(サーバとユーザまたはクライアントコンピュータなどの間での)データ通信を行う事が出来る。本発明では、任意の現在公知のあるいは以後開発される媒体または方法を用いて、任意の媒体を用いる任意の方法で、このようなデータ通信(または送信/受信、ダウンロード/アップロードなど)を行う事が出来ることが想定されている。
ライブラリファイル74は、本質的には、インターネットブラウザ72とブラウザ・インターフェイス20との制御を行うことが可能なアクティブXコントロールやプラグインコードを含むブラウザ72内の1つのシェル(または複数のシェル)を開くものである。アクティブXコントロールやプラグインと共にロードされるとき、ライブラリファイル74は、ブラウザ74とブラウザ・インターフェイス20の制御に利用する事が出来る関数、オブジェクト、データおよびその他のソフトウェアを含むことが望ましい。本願明細書ではこれらを広義に情報と呼ぶ。本発明は、インターネットユーザがインターネットサイト130からインターネットサイト230へ移動する時、ライブラリファイル74(およびシェル)が閉じないことを保証するものである。これによって、インターネットユーザがアクティブXコントロールやプラグインをロードしたインターネットサイトから切断し、別のインターネットサイトと接続した時でも、当該アクティブXコントロールやプラグインを介して得られた情報および/または機能は失われない。
次に、図1を参照すると、それぞれのウィンドウがインターネットユーザに種々の機能を与える複数のウィンドウを持つ従来のインターネットブラウザ・インターフェイス20が示される。ブラウザ・インターフェイス20は、ブラウザ・インターフェイスの一般的な大きさ、色およびレイアウトを通常規定し、当該ウィンドウ30用のウィンドウ制御ボタン28(最少化する、閉じるなどを行う)を含む第1の親ウィンドウ30を備える事が出来る。ブラウザ・インターフェイス20は、第1の親ウィンドウ30内に第2の親ウィンドウ36(第1の親ウィンドウの子)、および、第2の親ウィンドウに従属する1以上のウィンドウ38を更に備えることも可能である。第2の親ウィンドウ36および子ウィンドウ38は、一般に、インターネットにアクセスしたり、ナビゲートしたりする時、インターネットユーザを補助する情報および/または機能を規定する。例えば、第2の親36およびその従属ウィンドウ38は、ツールバー、プルダウンメニュー、プラグイン、アプリケーションを提供してもよい。
例えば、インターフェイス20の(図中)上部に設けられた3つのウィンドウ38は3つのツールバー22を規定し、これらのツールバーには、例えばプルダウンメニュー、ファンクションボタン(停止、戻り、次へ、ホームなど)およびファンクションボタンとウィンドウとの組み合わせ(探索ボタンとウィンドウなど)のような種々のインターフェイス・コントロール24を含むものであってもよい。最上部のツールバー22は複数のプルダウンメニュー24を提供し、中段のツールバー22は複数のファンクションボタン24を提供し、最下段のツールバー22はプルダウンメニューおよびウィンドウ26(URLアドレスウィンドウ)を提供する。コンテンツ・ウィンドウ32も、インターネット・コンテンツ・プロバイダ100(図10などを参照)からのコンテンツが表示出来るインターフェイス20の一部として設けられる。インターネットユーザは、第2のツールバー22に設けられた表示ツールバーオブジェクト24(プルダウンメニュー)を用いて、下方の3つの(図中)ツールバー22のうちのいずれかをオンとオフに切り替える事が出来る。しかし、インターネットユーザはここではブラウザ・インターフェイス20を追加、削除あるいは他の方法で変更する事は出来ない。
本発明の種々の実施形態により構成されたインターネットブラウザ20が図2〜図4に示される。図2では、ブラウザ・インターフェイス20には、コンテンツ・プロバイダ100によりライブラリファイル74にロードされたアクティブXコントロールやプラグインにより規定されるインターフェイス・オブジェクト40が含まれる。インターフェイス・オブジェクト40は、プルダウンメニュー44を有し、ブラウザ72が提供するインターフェイス・コントロール(即ちブラウザ・ツールバー・オブジェクト)24と共にブラウザ・ツールバー22に表示される。図3では、インターフェイス・オブジェクト40は、ブラウザ・インターフェイス20に別のウィンドウ48として表示されたインターフェイス・オブジェクト・ツールバー42とプルダウンメニュー44とを有する。図4では、インターフェイス・オブジェクト40は、ブラウザ・インターフェイス20内の別の48ウィンドウ内に表示された複数のプルダウンメニュー44およびサーチウィンドウ46を含むインターフェイス・ツールバー42を備える。本発明の種々の実施形態によるインターフェイス・オブジェクト40は、ブラウザを介して利用可能な任意のタイプの情報および/または機能を仮想的に備える事が出来る。従って、本発明を限定しない例として、インターフェイス・オブジェクト40は、プルダウンメニューや、ツールバーおよびプルダウンメニューや、文字情報(例えば広告、クーポン券、新たなHTMLリンクなど)、文字および/または音声情報(同時に生じる音を伴うテキストによる広告など)や、文字、音声および/または画像(動画であるか否かを問わない)情報や、ビデオや、ビデオおよびオーディオや、オーディオなどを含むものであってもよい。
図2〜図4により示される本発明によるインターネットブラウザ・インターフェイス20の種々の実施形態は単に本発明の例示であって、本発明を限定する例ではない。本願明細書に示す教示によりブラウザ・インターフェイス20への変更が可能である。
次に図5を参照すると、本発明の一実施形態によるインターネットブラウザ・インターフェイス20を制御する方法がこの図に示され、全体が500として指定されている。ステップ510で、インターネットユーザは、インターネット・ウェブサイト130、ISP80またはユーザのコンピュータ50を介して制御プログラム120にアクセスする。制御プログラム120は、インターネットユーザが処理を実行すると、さらに詳細に以下論じるように、ユーザのインターネットブラウザ・インターフェイス20をその後制御する能力を当該ユーザに与えるものである。制御プログラム120は、ステップ520で、インターフェイス・オブジェクトを規定するアクティブXコントロールやプラグインコードを含むインターネットユーザのコンピュータ50に、ライブラリファイル74のダウンロードや作成を行う。ステップ530と540に示されているように、インターネットユーザがブラウザ72を開始即ち起動する度に、ライブラリファイル74が開かれ、所定のインターネットのウェブサイト110との接続が自動的に確立される。このウェブサイト110は、インターフェイス・オブジェクト用のアクティブXコントロールやプラグインコードをインターネットユーザのコンピュータ50へ伝送するように好適に構築されている。開かれたライブラリファイル74は、アクティブXコントロールやプラグインが提供する機能をブラウザ・インターフェイス20に追加する事が出来るブラウザ70内にシェルを提供する。ブラウザ72が閉じられるまで、ライブラリファイル74とシェルのいずれも閉じない。ステップ550で、ブラウザ・インターフェイス20に表示されるインターフェイス・オブジェクト40が作成される。インターフェイス・オブジェクト40の情報および/または機能は、アクティブXコントロールやプラグインにより規定される。本発明の種々の実施形態によれば、インターフェイス・オブジェクト40は、ステップ560に示されるように、ユーザがネットサーフィンを続けている限り、即ち、ブラウザ72が起動されている限り、ブラウザ・インターフェイス20と共にブラウザ72により表示された状態のままになる。従って、本発明によりブラウザ72およびブラウザ・インターフェイス20に追加された機能は、インターネットユーザがネットサーフィンをしている間は失われることはない。
本発明は、図5を参照して概要を説明したようなブラウザ72およびブラウザ・インターフェイス20を制御する種々の実施形態を提供するものであり、これら実施形態のそれぞれについて以下詳細に説明する。
次に図6、続けて図10を参照しながら、本発明によるブラウザ72とブラウザ・インターフェイス20とを制御し、これらを表示する方法を示す実施形態について全体を600として次に説明を行う。本願明細書で解説するように、図6の目的のために、および、この図に向けられた以下の解説を目的として、ライブラリファイル74がインターネットユーザのコンピュータ50に予めダウンロードまたは作成されているものとする。ステップ610で、インターネットユーザはブラウザ72を開始即ち起動し、インターネット90へのアクセスを開始する。ステップ620で、ライブラリファイル74が開かれ、ステップ630に示すように所定のコンテンツ・プロバイダとの接続が自動的に確立される。BIOライブラリのアクティブXコントロールまたはプラグインコードにより規定された機能が、コンテンツ・プロバイダによりユーザのコンピュータ50へ伝送されて、ブラウザ・インターフェイス20に追加出来るインターフェイス・オブジェクト40が作成される。ステップ640に示すように、インターフェイス・オブジェクト40は、インターネットブラウザ・インターフェイス20と共に表示される。インターフェイス・オブジェクト40の機能は、アクティブXコントロールまたはプラグインコードにより規定されているが、インターネットユーザがインターネット90を巡回している間、ユーザが訪れたインターネットサイトの数や種類に関係無く、また、ユーザが、ブラウザ・ソフトウェア・プログラム72を用いてインターネット90にアクセスしている限り、インターネットブラウザ・インターフェイス20と共に残っている。ステップ650に示すように、インターネットユーザが1つのインターネットサイトから別のインターネットサイトへ移動する時、本発明は、インターフェイス・オブジェクト40が当該移動により現存しているかどうか、即ち、ステップ652に示すように、該オブジェクト40が、ブラウザ・インターフェイス20にブラウザ72によりまだ表示されているかどうかの判定を行う。インターフェイス・オブジェクト40がブラウザ・インターフェイス20に表示されていなければ(即ち、ブラウザ・インターフェイス20から削除されたか、他の理由により終了されていれば)、ステップ660に示すように、インターフェイス・オブジェクト40は再描画される。インターフェイス・オブジェクト40が1つのインターネットサイトから別のインターネットサイトへユーザの移動によっても現存して、ブラウザ・インターフェイス20内に表示された状態のままであれば、ステップ654で、ブラウザ72が操作可能な状態であるかどうかの判定も行われる。何故なら、ブラウザ72が操作可能な状態にあれば、インターフェイス・オブジェクト40はブラウザ・インターフェイス20にのみ表示されるからである。ブラウザ72が操作可能な状態でなければ、ステップ670に示すように、インターフェイス・オブジェクト40は終了され、ライブラリファイル74は閉じられる。ブラウザ72が操作可能な状態のままであれば、本発明は、ステップ652で、インターフェイス・オブジェクト40がブラウザ・インターフェイス20と共に表示されることを保証し続ける。インターネットユーザがインターネットサイト間で移動している時、本発明はインターフェイス・オブジェクト40の状態をモニタし、ユーザがインターネット90を巡回している限り、インターフェイス・オブジェクト40がブラウザ72によりブラウザ・インターフェイス20と共に表示されることを保証する。
図6に示される実施形態によれば、本発明は、BIOライブラリを初めに呼び出し、ユーザのコンピュータ50へロードしたインターネット・ウェブサイト130からインターネットユーザが出るとき、ブラウザ72がブラウザ・インターフェイス20と共にインターフェイス・オブジェクト40を表示することを保証するものである。例えば、ユーザがブラウザ72を開始即ち起動した時、第1のコンテンツ・プロバイダ100により保守管理される第1の所定のインターネットサイト130との接続が自動的に確立され、BIOライブラリがユーザのコンピュータ50にロードされる。次いで、BIOライブラリにより提供される機能が、ライブラリファイル74により作成されたシェルを介してブラウザ72に利用可能になる。インターネットユーザが、第2のコンテンツ・プロバイダ200により保守管理されている第2のインターネットサイト230と接続した時、インターフェイス・オブジェクト40用の機能はブラウザ・インターフェイス20に存在し続けることになる。本実施形態では、第1のインターネットサイト130とのリンクが終了した時、コンピュータ50のブラウザ72またはオペレーティングシステム70が、ライブラリファイル74のアンロードを行うことによりBIOライブラリの機能を使用禁止にすることを本発明により防止するものである。
例えば、ブラウザ72がインターネットサイト130と最初に接続した時、当該サイト130は、ライブラリファイル74の中へロードされるBIOライブラリとして、アクティブXコントロールソフトウェアコードの形で機能情報をインターネットユーザのコンピュータ50へ伝送する。もし、第1のインターネットサイト130との接続終了時に、ライブラリファイル74がオペレーティングシステム70またはブラウザ72により、閉じるやアンロードのような明確な命令を受けていなければ、第1のインターネットサイト130との接続が閉じられた後であっても、ライブラリファイル74はロードされた状態を保つことになり、ブラウザ・インターフェイス20内のインターフェイス・オブジェクト40用の所望の機能が提供されることになる。インターネットユーザが種々のインターネットサイト間を移動している間、ライブラリファイル74がロードされたままの状態を保つことにより、ライブラリファイル74の内部を除いて、(第1のインターネットサイト130によりインターネットユーザ50へ伝送されるだけの)アクティブXコントロールの外部のデータ、関数およびオブジェクトのロードを行うことが可能となる。ライブラリファイル74がロードされたままの状態を保っている限り、ライブラリファイル74で、および、アクティブXコントロールの外部で作成されたいずれのデータやオブジェクトもロードされたままの状態となり、ブラウザ・インターフェイス20内で機能し続けることになる。
ブラウザ72が第1のインターネットサイト130と接続した後、かつ、その接続が終了する前に、サーフィンの間ライブラリファイル74を開いた状態に保つことにより、グローバルオブジェクトA(オブジェクトA)が、呼び出し関数のヒープではなく、インターネットユーザのコンピュータ50のプログラムのヒープに作成される。このようにして、グローバルオブジェクトは呼び出し関数の終了を生き延びることになる。C++の新しい演算子を用いて、または、包括的宣言でグローバルオブジェクトを宣言することによりグローバルオブジェクトの作成を行う事が出来る。いずれの場合にせよ、グローバルオブジェクトはブラウザ72と第1のインターネットサイト130との間の接続が終了しても存在し続けることになる。
このように規定されたグローバルオブジェクトは、第1のインターネットサイト130により提供されるアクティブXコントロールが閉じた後、即ち第1のインターネットサイト130との初期接続が終了した後も、機能し続けることになる。一度グローバルオブジェクトが作成されると、このグローバルオブジェクトを用いてインターフェイスが作成される。当該インターフェイスは、例えば、機能の削除、置換および/またはブラウザ72とブラウザ・インターフェイス20への機能の追加を行うために機能する。このインターフェイスは、グローバルオブジェクトの一部として、あるいは、新たなインターフェイス・オブジェクト40を割り当てるグローバルオブジェクトにより作成してもよい。例えば、ブラウザ・ウィンドウ38内にインターフェイス・オブジェクトウィンドウ48(図3と図4などを参照のこと)を作成すること等により、インターフェイス・オブジェクト40を作成してもよい。上記とは別に、ブラウザ・インターフェイス20は、例えば、ブラウザ・インターフェイス20内にブラウザ・ツールバー22またはブラウザ・ツールバー・オブジェクト24の追加または変更等を行うことにより直接変更してもよい。さらに別の代替例として、図4に示されるブラウザ・インターフェイス20から切り離されたオブジェクト・インターフェイス・ツールバー42の作成がある。
さらに、ブラウザ72を制御して、例えば、所定のインターネットサイト130との接続の確立をブラウザ72に命令するのに用いるポインタが必要となる。このポインタを広範囲に格納することが望ましく、それによってブラウザ72へコマンドを送信するライブラリファイル74内の任意の関数またはオブジェクトにより上記ポインタのアクセスが可能となる。例えば、マイクロソフト・インターネットエクスプローラ(商標)では、IWebBrowser、IWebBrowser2またはIWebBrowserAppオブジェクトリンク&組み込み(OLE)インターフェイスコマンドを用いてポインタを作成する事が出来る。例えば、マイクロソフト・ファウンデーション・クラス(MFC)、を利用して、COleControlクラスのGetClientSiteメンバーを使用し、第1のインターネットサイト130、即ちBIOライブラリをロードしたインターネットサイトからポインタを検索するポインタを作成する事が出来る。GetClientSiteはブラウザ72がBIOライブラリと交信するためのエントリポイントとして機能する。前回のステップにより返されたIOleClientSiteクラスのGetContainerメンバーを用いてBIOライブラリ用コンテナへのポインタを取得する事が出来る。BIOライブラリのコンテナは、アクティブXコントロールをロードするコンテナである。インターネットブラウザ・インターフェイス20は一般にブラウザ・ツールバー22とコンテンツ・ウィンドウ32とを含むいくつかの部分から構成される。ドキュメントオブジェクトは、インターネットユーザがアクセスし、ある特定のウェブページに現れる全てのデータを含む全てのウェブページ用としてブラウザ72により作成される。ドキュメントオブジェクトはBIOライブラリ用のコンテナでもある。従って、ドキュメントオブジェクトをBIOライブラリのコンテナと呼ぶ場合もある。
前回のステップにより返されたIOleContainerクラスのQueryInterfaceメンバーを用いて、IServiceProviderインターフェイスへのポインタを取得する事が出来る。このポインタを用いて、ブラウザ72が示す別のインターフェイスの所在位置を検知する事が出来る。最後に、BIOライブラリを呼び出したブラウザ72により提供される固有インターフェイスに対応して、前回のステップにより返されたIServiceProviderクラスのQueryServiceメンバーを用いて、IWebBrowserApp、IWebBrowserまたはIWebBrowser2インターフェイスへのポインタを取得する事が出来る。
ある代替実施形態では、本発明を用いてブラウザ・ウィンドウ30全体の変更を行う事が出来る。ブラウザ・ウィンドウ30全体を変更する場合、インターフェイス・オブジェクト40を既存のブラウザ・ウィンドウ38の中へ統合化するのとは対照的に、変更したブラウザ・ウィンドウ30用のクラス全体をサブクラス化したり、或いは、固有ブラウザ・ウィンドウ38をサブクラス化したりすることが可能となる。ここで用いられている、ウィンドウ・フッキング(hooking a window)とも呼ばれる“ウィンドウのサブクラス化”という用語は、ユーザ規定ウィンドウ・メッセージ・ハンドリング・プロシージャを用いて、ウィンドウへ送信される全てのメッセージ処理と元のブラウザ・ウィンドウ・メッセージ・ハンドリング・プロシージャを置き換えることを意味する。例えば、ウィンドウはマイクロソフト・ファウンデーション・クラス(MFC)CWnd:SubclassWindow ()関数を用いてサブクラス化する事が出来る。上記とは別に、GWL_WNDPROC引数(マイクロソフト・ウィンドウズ定数)と共にSetWindowLong関数(マイクロソフト・ウィンドウズ関数)呼び出しを用いて、ウィンドウをサブクラス化することも可能である。サブクラスのウィンドウ用の元のブラウザ・ウィンドウ・メッセージ・ハンドリング・プロシージャにSetWindowLong関数呼び出しにより返されたポインタを格納してもよい。これによって、ウィンドウ30または38へ渡される全てのメッセージをBIOライブラリがインターセプトすることが可能となる。さらに、BIOライブラリは、ブラウザ72から提供された、ボタン、メニューなどを含むインターフェイス・コントロール24からのコマンド、または、本発明に準拠するBIOライブラリにより追加されたインターフェイス・オブジェクト40からのコマンドを翻訳することが可能となる。
BIOライブラリにより与えられるユーザ規定ウィンドウ・メッセージ・ハンドリング・プロシージャであって、元のブラウザ・ウィンドウ・メッセージ・ハンドリング・プロシージャを置き換える上記ユーザ規定ウィンドウ・メッセージ・ハンドリング・プロシージャは、BIOプロシージャ(BIO Procedure)と呼ばれる。ブラウザ72に対してBIOプロシージャを用いて、ブラウザ72用として意図されたメッセージ(コマンドなど)をインターセプトし、変更することも可能である。あるいは置き換えまたは新たなメッセージ(インターフェイス・オブジェクト40用メッセージハンドラなど)をBIOプロシージャによりブラウザ72へ伝送することも可能である。
本発明はまた、ブラウザ・インターフェイス20からのインターフェイス・オブジェクト40の削除を保証するものでもある。例えば、インターネットユーザが新たなウェブサイトにアクセスすると、インターネットブラウザ72のなかにはブラウザ・インターフェイス20全体を再描画するものもある。ユーザが行う上記のようなインターネットでの移動に従いながらグローバルオブジェクトがまだ機能可能な間、インターフェイス・オブジェクト40がブラウザ・インターフェイス20から削除される結果、インターフェイス・オブジェクト40はブラウザ・インターフェイス20により表示されなくなる。このような事態が生じるのを防ぐために、ブラウザ・インターフェイス20をリペイントするブラウザ72からのメッセージをBIOプロシージャによりインターセプトすることが可能であり、ブラウザ・インターフェイス20が再描された直後にインターフェイス・オブジェクト40を再描画することが可能となる。上記とは別に、ブラウザ・インターフェイス20におけるインターフェイス・オブジェクト40の存在を周期的にテストすることが可能であり、インターフェイス・オブジェクト40が存在しなければ、ブラウザ・インターフェイス20内にインターフェイス・オブジェクト40を再描画することが可能となる。ほぼ1秒未満の間隔でこのような周期的テストを行うことが望ましい。
上述の実施形態の一例(図6に図示)として、アクティブXコントロールがBIOライブラリとしてロードされ、メニュー項目(および機能)がブラウザ・インターフェイス20に追加される。本発明は、新たなグローバルオブジェクトを動的に作成するアクティブXコントロールを作成するものであり、この新たなグローバルオブジェクトによって、ブラウザ・インターフェイス20に追加すべき所望の機能を備えた新たなメニューオブジェクト(このオブジェクトはインターフェイス・オブジェクト40であってもよい)が作成される。命令AfxGetMainWnd ()- GetMenu ()- AppendMenu ()を用いてメニューオブジェクト40をブラウザ・インターフェイス20に追加することも可能である。この場合、ブラウザ・インターフェイス20の追加メニューはメニューオブジェクト40を指示するポップアップメニューを含むことになる。次いで、ブラウザ・インターフェイス・ウィンドウがサブクラス化され、このブラウザ・インターフェイス・ウィンドウにより、BIOプロシージャにより処理されたメニューオブジェクト40用としてメッセージが処理され、ブラウザ・インターフェイス20用のメッセージはブラウザ72用メッセージハンドラへ渡される。インターネットユーザが第1のインターネットサイト130から切断する(アクティブXコントロールを含むウェブページから出る)と、アクティブXコントロールは閉じることになるが、グローバルオブジェクトはプログラムのヒープ(program heap)内に残り、ブラウザ・インターフェイス20へ所望の機能を提供し続ける。
インターフェイス・オブジェクト40が追加されるブラウザ・ウィンドウをサブクラス化する代わりに、オブジェクトAまたはその子孫のうちの1つは、インターフェイス・オブジェクト40の所有者である状態を保持することが可能である。次いで、インターフェイス・オブジェクト40用のメッセージハンドラを作成する事が出来る。例えば、マイクロソフト・ファウンデーション・クラスを用いて、オブジェクトAまたはその子孫のうちの1つになるようにセットするということを除いて、インターフェイス・オブジェクト40の所有者が、上述の本発明の実施形態に準拠するブラウザ・ツールバー22にインターフェイス・オブジェクト40を追加する事が出来る。
次に図7から図10までを続けて参照しながら、本発明によるブラウザ・インターフェイス20を制御し、表示する方法(700として全体を示す)、の別の実施形態について説明を行う。本願明細書に記載のように、図7の目的として、また、図7へ向けられる以下の説明のために、ライブラリファイル74がインターネットユーザのコンピュータ50に予め作成されている。ステップ710で、インターネットユーザはブラウザ72を開始即ち起動して、インターネット90にアクセスする。ステップ720で、ライブラリファイル74がユーザのコンピュータ50で開かれ、ステップ730に示されるように所定のインターネットサイト130との接続が自動的に確立される。ステップ740で、BIOライブラリのアクティブXコントロールまたはプラグインコードにより規定された機能が、コンテンツ・プロバイダによりユーザのコンピュータ50へ伝送されて、インターフェイス・オブジェクト40の表示を制御する連続ループを用いて、ブラウザ・インターフェイス20で表示出来るインターフェイス・オブジェクト40が作成される。連続ループの終了時にインターフェイス・オブジェクト40を削除する(即ちその機能を終了させる)だけでよい。アクティブXコントロールまたはプラグインコードにより規定されているようなインターフェイス・オブジェクト40の機能は、ユーザが訪れたインターネット・ウェブサイトの数やタイプに関係無く、また、インターネットユーザがブラウザ・ソフトウェア・プログラムを用いてインターネットにアクセスしている限り、そして、ブラウザ72が起動状態のままである限り、インターネットユーザがインターネット90を巡回する時のインターネットブラウザ・インターフェイス20の場合の状態のままである。インターネットユーザが1つのウェブサイトから別のウェブサイトへ移動する時、ステップ750に示すように、本発明は、インターフェイス・オブジェクト40がその移動により現存しているかどうかの判定、即ち、ステップ752に示すように、上記オブジェクト40がブラウザ・インターフェイス20にまだ表示されているかどうかの判定を行うものである。インターフェイス・オブジェクト40がブラウザ72によりブラウザ・インターフェイス20に表示されていなければ、ステップ760に示すように、インターフェイス・オブジェクト40は再描画される。インターフェイス・オブジェクト40が1つのウェブサイトから別のウェブサイトへユーザの移動を生き延びて、ブラウザ・インターフェイス20に表示された状態のままであれば、ステップ754で、ブラウザ72が操作可能な状態であるかどうかの判定も行われる。何故なら、ブラウザ72が操作可能な状態にあれば、インターフェイス・オブジェクト40はブラウザ72によりブラウザ・インターフェイス20のみに表示されるからである。ブラウザ72が起動していなければ、ステップ770に示すように、インターフェイス・オブジェクト40は終了し、ライブラリファイル74は閉じられる。ブラウザ72が操作可能な状態のままであれば、本発明は、ステップ756で、連続ループが終了しているかどうかの判定を行う。ループが終了していれば、ステップ770に示すように、インターフェイス・オブジェクト40も終了する。ステップ752に示すように、ループがまだ処理を実行していれば、本発明は、インターフェイス・オブジェクト40がブラウザ・インターフェイス20にまだ表示されているかどうかの判定を行う。
図7に示される本発明の実施形態では、たとえオペレーティングシステム70またはブラウザ72がライブラリファイル74のアンロードまたは終了を行う命令を生成しても、(アクティブXコントロールコードが中でロードされる)ライブラリファイル74の処理をフリーズさせることによりアクティブXコントロールのアンロードを防止するようにするものである。ライブラリファイル74がフリーズし、アンロードを終了させなくすることに起因して、アクティブXコントロールが作成したライブラリファイル74の内部のデータ、関数およびオブジェクトの全ては、ライブラリファイル74がアンロード命令を受けた後も存在し、機能し続ける。
いくつかのオペレーティングシステム70および/またはブラウザ72では、アクティブXコントロールがもうインターネットサイトに存在しなくなったとき、BIOライブラリは閉じられる。このことは、図10のインターネットサイト130などの、アクティブXコントロールを持つ1つのインターネットサイトから、図10のインターネットサイト230などの、アクティブXコントロールを持たない別のインターネットサイトへインターネットユーザが移動する時生じる場合がある。アクティブXコントロールが存在しないとき、インターフェイス・オブジェクト40の作動の継続を可能にするために、BIOライブラリ(およびライブラリファイル74)が閉じないようにする必要がある。
これを達成するために、ブラウザ72の制御に用いるポインタが作成される。このポインタはグローバルに格納することが望ましく、それによってブラウザ72へコマンドを送信する必要があるライブラリファイル74内の任意の関数またはオブジェクトにより上記ポインタのアクセスが可能となる。例えば、マイクロソフト・インターネットエクスプローラ(商標)では、IWebBrowser、IWebBrowser2またはIWebBrowserAppOLEインターフェイスコマンドを用いてポインタを作成する事が出来る。マイクロソフト・ファウンデーション・クラス(MFC)を利用してこれを行うために、(BIOライブラリとの交信に用いる事が出来る)COleControlクラスのGetClientSiteメンバーを用いて、BIOライブラリのインターネットサイト、即ち、アクティブXコントロールを行うそのインターネットサイトへのポインタの検索を行う事が出来る。前回のステップにより返されたIOleClientSiteクラスのGetContainerメンバーを用いて、BIOライブラリ用コンテナへのポインタを取得する事が出来る。前回のステップにより返されたIOleContainerクラスのQueryInterfaceメンバーを用いて、IServiceProviderインターフェイスへのポインタを取得する事が出来る。IServiceProviderインターフェイスを用いて、ブラウザ72が示す別のインターフェイスのうちのいずれでも容易に見つける事が出来る。BIOライブラリを呼び出したブラウザ72のバージョンにより示されるインターフェイスに応じて、前回のステップにより返されたIServiceProviderクラスのQueryServiceメンバーを用いて、IWebBrowserApp、IWebBrowserまたはIWebBrowser2インターフェイスへのポインタを取得する事が出来る。
ライブラリファイル74が閉じないようにするために、ライブラリファイルの動作は停止される。ライブラリファイル74の処理のフリーズまたは停止を行うために、BIOライブラリがアンロードされた時にのみ終了する連続するプログラムループを作成し、処理を実行することも可能である。その時点でプログラムループはメッセージキューのポンピングも行う。このプログラムループは、本願明細書ではメッセージポンプと呼ばれ、ループ内のPeekMessage、GetMessage、TranslateMessageおよびDispatchMessageコマンドを用いてこのプログラムループを作成することが可能である。メッセージポンプを実行する例示のC++コードを以下に示す:
但し、m_Continueは停止時点をループに命令するのに用いる論理変数であり、PeekMessage, GetMessage, TranslateMessage, and DispatchMessageは全てのウィンドウズ関数である。m_Continueが偽ならば、ループは終了し、メッセージポンプを終了させる。msg引数はウィンドウズMSG構造に対する基準値である。
メッセージポンプが好適に作動する方法として、いずれかのPeekMessage関数を用いてメッセージキュー内で待機しているいずれかのメッセージがあるかどうかを調べるためにチェックを行う方法が挙げられる。メッセージが存在すれば、メッセージポンプは、GetMessage関数を用いてメッセージキューからメッセージを取得し、TranslateMessage関数を用いてバーチャル・キーメッセージからこのメッセージを変換し、キャラクタ・メッセージに変える。最後に、メッセージポンプは、DispatchMessage関数を用いてメッセージを受け取るようになっている初期のウィンドウ・メッセージ・ハンドリング・プロシージャへメッセージを送信する。
オペレーティングシステム70の組み込まれた能力を利用して、メッセージキューをポンプするメッセージポンプを構成することも可能である。例えば、MFCコマンドCWnd:: MessageBox ( "マイモーダル",MB_OK)などのコマンドを用いるモ―ダル・ダイアログ・ボックスやメッセージボックスはこの目的を果たすのに十分に役立つものとなり、さらに、このボックスはライブラリファイル74の処理のフリーズや停止を行うために利用される。
メッセージポンプが連続ループ処理を実行している限り、インターネットユーザが別のインターネットサイトをアクセスしている時でもアクティブXコントロールが終了することはない。
図7により示される本発明の実施形態は、(例えばサブクラス化、メッセージ処理などの場合)図6の上述の実施形態と同様に実施される。
上述の実施形態(図6と図7)の双方の場合、必要というわけではないが、インターフェイス・オブジェクト40用の出口関数を設けて、オブジェクトAとその子孫の全てを閉じるようにすることが望ましい。出口関数を呼び出すための実施可能な例示シナリオには、BIOプロシージャ内のブラウザ・ウィンドウを閉じるためにメッセージをインターセプトするステップや、アクティブXコントロールを終了させるステップが含まれる。
次に図8を参照すると、本発明の方法のさらに別の実施形態が示され、その全体が800として指定されている。図8の目的として、また、図8へ向けられる以下の説明のために、ライブラリファイル74がインターネットユーザのコンピュータ50に予め作成されている。ステップ810で、インターネットユーザはブラウザ72を開始即ち起動して、インターネット90にアクセスする。ステップ820で、ライブラリファイル74がユーザのコンピュータ50で開かれ、ステップ830に示されるように、所定のインターネットサイト130(図10などを参照のこと)との接続が自動的に確立される。ステップ832で、ブラウザ72により提供される初期のブラウザ・インターフェイスの複製である新たなブラウザ・インターフェイスが作成される。ステップ840で、プラグインの機能が最初にロードされた元のブラウザ・インターフェイスを表す機能ウィンドウが作成される。
本発明のこの実施形態に準拠する機能ウィンドウの作成ステップが図8aに示され、全体が840として指定されている。ステップ842で、最初のブラウザ・インターフェイス・ウィンドウ用のハンドルが特定される。最初のブラウザ・インターフェイス・ウィンドウ(現在、機能ウィンドウである)は、ステップ844で隠し状態および/または使用禁止の状態にされているため閉じる事は出来ない。これを閉じれば、BIOライブラリをクラッシュさせることになる。ステップ846で、ブラウザ72の制御に用いるポインタが作成される。最後に、ステップ848で、インターネットを巡回するためにインターネットユーザが使用出来る新たなブラウザ・インターフェイス・ウィンドウが作成される。
図8を再び参照すると、ステップ850から始めて、制御の対象とする任意のブラウザ・ウィンドウ、または、ブラウザが使用する任意のウィンドウの第1のサブクラス化、次いで、以下さらに詳細に説明するようなウィンドウの追加、削除および/または変更により、今度はブラウザ・インターフェイスの制御を行うことが可能となる。元のブラウザ・ウィンドウ・メッセージ・ハンドリング・プロシージャは(上記で規定したように)BIOプロシージャにより置き換えられる。ステップ860で、本発明は、いずれかの新たなブラウザ・ウィンドウ(即ち予めサブクラス化されていない可能性のあるウィンドウ、または、本発明に準拠して制御されていない可能性があるウィンドウ)が開かれているかどうかの判定を行う。新たなウィンドウが開かれていれば、本発明は、ステップ870で、インターフェイス・オブジェクト40をこれらの新たなウィンドウに追加すべきかどうかの判定を行う。新たなウィンドウが開かれていなければ、本発明は、ステップ880で示すように、インターネットユーザがブラウザ72を閉じることを望んでいるかどうかの判定を行う。望んでいれば、本発明は、ステップ890で、機能ウィンドウを含む全てのブラウザ・ウィンドウを閉じる。ユーザがブラウザ72を閉じることを望んでいなければ、ステップ880で判定されるように、本発明はステップ860へ戻り、新たなブラウザ・ウィンドウが開かれているかどうかの判定を再び行う。
図8、図8aおよび図10を続けて参照しながら、上述の本発明の実施形態についてさらに詳細に解説することにする。インターネットサイト130を介してコンテンツ・プロバイダ100によりアクティブXコントロールがロードされると、一般に、ブラウザ72によるそのウェブサイト130との接続の確立とアクティブXコントロールの呼び出しとに応答して、ユーザのコンピュータに配置されているライブラリファイル74が開かれ、ブラウザ72内にシェルが作成される。このブラウザ72内でアクティブXコントロール用コードをロードする事が出来る。アクティブXコントロールが閉じられるとき(ユーザがインターネットサイト130との接続を終了させるとき)、アクティブXコントロールを含むライブラリファイル74がアンロードまたはクローズを行うようにオペレーティングシステム70またはブラウザ72により明示的に命令されていれば、ライブラリファイル74がアンロードされた時、アクティブXコントロールの外側で、しかも、ライブラリファイル74内で作成されたいずれのデータ、関数またはオブジェクトも破壊されることになる。ライブラリファイル74のアンロードを防止するために、命令されるまでブラウザ72はアクティブXコントロールのクローズを妨げられる。アクティブXコントロールがクローズ命令を受けることがなければ、ライブラリファイル74がアンロードされることは決してない。
これを達成する好適な方法として、アクティブXコントロールをロードした最初のブラウザ・インターフェイス・ウィンドウを隠し状態および/または使用禁止状態にして、インターネットユーザが中で作業を続け、インターネットを巡回することが可能なその同一のウィンドウの新たなコピーを作成する方法がある。最初のブラウザ・インターフェイスが好適に隠し状態および/または使用禁止状態にされているため、ライブラリファイル74が、最初のブラウザ・インターフェイス用ウィンドウ(ライブラリファイル74をロードしたウィンドウ)を示すまで、このウィンドウを作動可能にするまで、あるいは、このウィンドウを閉じるまでアクティブXコントロールを閉じる事は出来ない。
図8の上述の方法として、例えば、ウェブページ130内に、または、バンドオブジェクトとして通常含まれているタグを利用して、および、マイクロソフト・インターネットエクスプローラ(商標)4.x用ソフトウェア開発キットに記載のように、ブラウザ74内の標準的アクティブXコントロールとしてBIOライブラリを好適にロードする方法が挙げられる。これは、BIOライブラリ用コードを含むライブラリファイル74の初期化と実行とをブラウザ72に命令するものである。
BIOライブラリを初期化し、呼び出した最初の時点で、機能ウィンドウが作成され、インターネットユーザが別のインターネット・ウェブサイト210、即ち別のウェブページを訪問している間、この機能ウィンドウは、アクティブXコントロール自身とのセッションを開いた状態に保つことによりBIOライブラリは開いた状態に保たれる。この機能ウィンドウによって、開いているBIOライブラリのコピーを持っていないブラウザ・ウィンドウが、ブラウザ72と接続するOLEインターフェイスにアクセスすることも可能となる。
機能ウィンドウを作成するために、最初のブラウザ・インターフェイス・ウィンドウ(即ちBIOライブラリをロードしたウィンドウ)を隠し状態および/または使用禁止状態にすることが望ましい。これは、BIOライブラリのハンドルから始めて、最初のブラウザ・インターフェイス・ウィンドウ用のハンドルを特定することにより達成する事が出来る。BIOライブラリのハンドルから最初のブラウザ・インターフェイス用ウィンドウ・ハンドルを検索するために、GetParent関数の呼び出し用の現在値がデスクトップウィンドウより1つ下のレベルを表すまで、GetParent関数(ウィンドウズ関数)が連続して呼び出される。例えば、ループ内で実行される“m_Handle=GetParent(m_Handle)”などの宣言により所望の機能と結果を得る事が出来る。但しm_Handleの値はBIOライブラリのハンドル値に等しく最初セットされ、次いで、この値は、最終的に最初のブラウザ・インターフェイス・ウィンドウへこのハンドルを返す。
次のステップは、最初のブラウザ・インターフェイス・ウィンドウ(今度は機能ウィンドウと呼ばれる)を隠すおよび/または使用禁止にし、その結果インターネットユーザが、(例えばブラウザ72を閉じることにより)機能ウィンドウを閉じる事が出来ないようにし、それによって、BIOライブラリにアンロードを行わせ、BIOライブラリにより提供された機能をブラウザ・インターフェイス20から削除するステップである。ユーザから最初のブラウザ・インターフェイス・ウィンドウを隠すおよび/またはユーザ駆動イベントからそのブラウザ・ウィンドウを使用禁止にするために、ブラウザ・ウィンドウを隠すおよび/またはブラウザ・ウィンドウを使用禁止にする値と共に、WM_SHOWWINDOWおよび/またはWM_ENABLEメッセージ(双方ともウィンドウズ定数)を最初のブラウザ・インターフェイス・ウィンドウへ送信する事が出来る。例えば、ブラウザウィンドウ・ハンドルを用いて最初のブラウザ・インターフェイス・ウィンドウへメッセージを送信するために、PostMessageまたはSendMessage関数(既存のウィンドウズ関数)を利用する事が出来る。上記とは別に、ShowWindowおよびEnableWindow関数(既存のウィンドウズ関数)を用いて同じ結果を得ることも可能である。
ブラウザ72を制御するポインタが作成される。ブラウザ72へコマンドを送信する、ライブラリファイル74内の任意の関数またはオブジェクトによりアクセス可能となるように、このポインタをグローバルに格納することが望ましい。例えば、マイクロソフト・インターネットエクスプローラ(商標)では、IWebBrowser、IWebBrowser2またはIWebBrowserAppOLEインターフェイスを用いて前記ポインタを作成する事が出来る。例えば、マイクロソフト・ファウンデーション・クラスを利用して上記を行うために、ブラウザ72用のエントリポイントとして役立つCOleControlクラスのGetClientSiteメンバーを用いて、BIOライブラリと交信して、BIOライブラリのインターネットサイト、即ち、アクティブXコントロールをロードしたインターネットサイト130へのポインタの検索を行う事が出来る。前回のステップにより返されたIOleClientSiteクラスのGetContainerメンバーを用いて、BIOライブラリ用コンテナへのポインタを取得する事が出来る。前回のステップにより返されたIOleContainerクラスのQueryInterfaceメンバーを用いて、IServiceProviderインターフェイスへのポインタを取得することが可能であり、IServiceProviderインターフェイスを用いて、ブラウザ72が示す別のインターフェイスのうちのいずれのインターフェイスでも見つけられるようにすることが望ましい。BIOライブラリを呼び出したブラウザ72のバージョンにより示されるインターフェイスに応じて、前回のステップで返されたIServiceProviderクラスのQueryServiceメンバーを用いて、IWebBrowserApp、IWebBrowserまたはIWebBrowser2インターフェイスへのポインタを取得してもよい。
最後に、インターネットユーザがネットサーフィンを続ける(即ち、種々の異なるインターネットサイトにアクセスし続ける)事が出来る新たなブラウザ・ウィンドウが作成される。何故なら、機能ウィンドウを作成するために前に使用したブラウザ・ウィンドウが隠し状態および/または使用禁止状態にされているからである。好ましくは、IWebBrowser、IWebBrowser2またはIWebBrowserAppOLEインターフェイスのうちのいずれかを用いて(例えばそのOLEインターフェイスのナビゲートメンバーまたはナビゲート2メンバーを用いて)、新たなブラウザ・ウィンドウを作成することが望ましい。上記とは別に、New WindowやOpen In New Windowコマンドなどの、ブラウザ72を用いて新たなブラウザ・ウィンドウを開く事が出来るような、任意のコマンドに対応するWMCOMMANDメッセージをブラウザ72へ送信することも可能である。ブラウザ72により提供される動的データ交換(DDE)サポートを用いて新たなウィンドウを開くようにしてもよい。
BIOライブラリは、様々なブラウザ・インターフェイスの特徴と機能およびこれらの特徴と機能とを制御する必要がある。第1のステップとして、本発明に準拠して制御の対象となるブラウザ・ウィンドウのうちのいずれかまたはブラウザが使用するウィンドウ(即ち子ウィンドウ)のうちのいずれかのサブクラス化を行うステップがある。BIOウィンドウ・メッセージ・ハンドリング・プロシージャを用いて、本願明細書で以後BIOプロシージャと呼ぶ元のウィンドウ・メッセージ・ハンドリング・プロシージャの置き換えが行われる。
一度ブラウザ・ウィンドウ、または、その子ウィンドウのうちのいずれかのサブクラス化が行われると、GetMenu関数を用いてブラウザ・ウィンドウ・メニューへのポインタを検索することによりサブクラスメニューへの追加が可能となる。一度メニューのハンドルへのポインタを取得すると、ModifyMenu, AppendMenu, InsertMenuなどのメニュー関数を用いて、任意の所望のメニューをブラウザ・ウィンドウに追加する事が出来る。メニューに割り当てられたいずれのコマンドも、BIOウィンドウのサブクラス化に用いるBIOプロシージャにより処理する必要がある。メニュー作成時にブラウザ内に含まれるコマンド識別子と同じコマンド識別子を使用してはならない。
標準的ウィンドウズ関数を用いてツールバー42の追加先であるウィンドウのハンドル(本願明細書では以後フレームハンドルと呼ぶ)を検索することにより、インターフェイス・オブジェクト・ツールバー42をブラウザ・インターフェイス20に追加する事が出来る。一般に、上記ウィンドウは、BIOウィンドウまたはBIOウィンドウの子であるフレームウィンドウになる。次いで、親ウィンドウとしてフレームハンドルを用いてウィンドウが作成される。例えば、(ツールバーの1つの形である)ダイアログバーをインターフェイス・オブジェクト40として追加するために、タイプCDialogBar(マイクロソフト・ファウンデーション・クラス)から導き出されたり、タイプCDialogBarのオブジェクトが作成されたりするが、これがフレームハンドルを用いて呼び出すCreate法である。例えば、画像、ツールバー、ダイアログなどのようなリソースが使用され、かつ、ブラウザ72がBIOライブラリと同じリソースを共有していない場合、BIOライブラリ・リソースからいずれかのデータをロードする事が出来るようになる前に、ブラウザのリソースはBIOライブラリ・リソースより一時的に置き換えられる。その後、ブラウザの原リソースよってBIOライブラリ・リソースの置き換えが可能となる。
新たなブラウザ・ウィンドウが開かれると、この新たなウィンドウにインターフェイス・オブジェクト40を追加することが望ましい場合がある。ユーザ定義関数を呼び出すSetTimerウィンドウズ関数を用いてタイマを作成してもよい。上記ユーザ定義関数は、機能ウィンドウと同じクラス名を持つデスクトップウィンドウの全ての子ウィンドウのチェックを行うFindWindowEx関数(ウィンドウズ関数)を利用することになる。予め変更されていないブラウザ・ウィンドウ、即ち、インターフェイス・オブジェクト40を有していないブラウザ・ウィンドウについては、必要なハンドルを検索することが可能であり、元のBIOウィンドウに対して行われた変更と同じ変更を行う事が出来る。
最後に、インターネットユーザがブラウザ72を閉じることを望む場合、機能ウィンドウを除いてブラウザ・ウィンドウの全てが閉じているかどうかの判定を行う必要がある。そして、他の全てのブラウザ・ウィンドウが閉じていれば、この機能ウィンドウも閉じなければならない。BIOメッセージ処理手順内のWMCLOSEメッセージ(ウィンドウズ定数)をリスンすることにより、あるいは、開かれているブラウザ・ウィンドウ数を周期的にチェックするタイマをセットすることにより、上記を達成することが可能となる。元の機能ウィンドウを閉じるために、WMCLOSEメッセージをそのウィンドウへ送信する事が出来る。
次に図9を参照すると、本発明によるインターネットブラウザ・インターフェイス20を制御し、これを表示する方法の別の代替実施形態が示され、全体が900として指定されている。
ステップ910、920および930は図6〜図8の上述の実施形態の場合とほぼ同じである。ステップ940で、新たなブラウザ・インターフェイス・ウィンドウを作成し、最初のブラウザ・インターフェイス・ウィンドウを隠し状態および/または使用禁止状態とする。このブラウザ・インターフェイス・ウィンドウは機能ウィンドウと呼ばれる。プラグインは最初のブラウザ・インターフェイス・ウィンドウ用ハンドルを特定し、このウィンドウを隠すおよび/または使用禁止にし、インターネットユーザが使用出来る新たなブラウザ・インターフェイス・ウィンドウを作成する。ステップ950で、全てのブラウザ・ウィンドウがサブクラス化され、次いで、ステップ960で示されているように、全ての開かれたウィンドウに対してブラウザ・インターフェイスを制御することが可能となる。ステップ962で、本発明はいずれかの新たなブラウザ・ウィンドウが開かれているかどうかを判定し、開かれていれば、本発明はステップ960へ戻る。新たなブラウザ・インターフェイス・ウィンドウが開かれていない場合、ステップ962はステップ964へ進み、インターネットユーザがブラウザを閉じることを望んでいるかどうかが判定される。機能ウィンドウを閉じる前に全てのウィンドウを閉じる必要があり、それはステップ966で判定される。ステップ970で示されているように、全てのウィンドウが閉じられた場合、機能ウィンドウが閉じられる。全てのウィンドウが閉じられていない場合、ステップ966はステップ964へ戻る。
本発明のさらに別の代替実施形態では、本発明は、ブラウザプラグインを用いてインターネットブラウザ・インターフェイスを制御して、呼び出しブラウザ72の機能を制御し、プラグインをロードしたインターネットサイト130からユーザが出た後プラグイン機能を保持する方法を提供するものである。
ブラウザ72とインターネットサイト130との接続の確立と、プラグインの呼び出しとに応答して、ブラウザプラグインがインターネットユーザのコンピュータ50にロードされると、ライブラリファイル74はブラウザ72内にシェルを確立し、このブラウザ72内にプラグイン用コードをロードする事が出来る。プラグインが閉じられた場合、ライブラリファイル74のアンロードを行うことがオペレーティングシステム70またはブラウザ72により明白に指示されていれば、ライブラリファイル74がアンロードされた時、プラグインの外側にあり、しかも、ライブラリファイル74内で作成されたいずれのデータ、関数またはオブジェクトも破壊されることになる。ライブラリファイル74がアンロードしないようにするために、プラグインのクローズ命令を受け取るまで、ブラウザ72によるプラグインのクローズは妨げられる。プラグインがクローズ命令を受けることがなければ、ライブラリファイル74もアンロード命令を受けることは決してない。プラグインをロードした最初のブラウザ・ウィンドウを隠すおよび/または使用禁止にすることにより、さらに、インターネットユーザがインターネットにアクセスし、インターネットを巡回するのに使用するために、その同じウィンドウの新たなコピーを作成することにより、上記を達成する事が出来る。最初のブラウザ・ウィンドウは隠された状態および/または使用禁止状態にされていることが望ましいため、プラグインは、ライブラリファイル74が表示、起動またはクローズを選ぶまで、プラグインをロードした最初のブラウザ・ウィンドウを閉じる事は出来ない。
例えば、ブラウザプラグインが、好適にはウェブページ110内のタグ(図10などを参照)を用いて、標準プラグインとしてブラウザ72にロードされる。このプラグインは、プラグイン(即ちBIOライブラリ)用コードを含むライブラリファイル74の初期化とロードとを行うようにブラウザ72に命令する。
BIOライブラリが最初に初期化され、呼び出された時点で、元のブラウザ・ウィンドウを隠すおよび/または使用禁止にすることにより機能ウィンドウが作成され、これによって、プラグイン自身とのセッションを開いた状態に保つことによりBIOライブラリのアンロードが防止される。この機能ウィンドウによって、開いているBIOライブラリのコピーを持っていないブラウザ・ウィンドウが、プラグイン用組み込み型アプリケーションプログラミングインターフェイス(API)にアクセスすることも可能となる(即ち、ネットスケープ・ナビゲータ(商標)とマイクロソフト・インターネットエクスプローラ(商標)とにより提供されるようなブラウザ・インターフェイス20を通じて、および、プラグイン機能を介して機能がインターネットユーザに利用可能となる)。
ブラウザ72が最初に呼び出された時点で、最初のブラウザ・ウィンドウを使用禁止にするか、隠す(この場合プラグインは常駐している)ことにより機能ウィンドウが好適に作成される。これを行うために、プラグインは最初のブラウザ・ウィンドウのハンドルを最初に特定する必要がある。NPWindow構造のウィンドウメンバーが、NPPSetWindow関数への第2の引数としてブラウザ72からBIOライブラリへ渡される。このウィンドウメンバーはプラグイン・ウィンドウへのハンドルである(NPWindowとNPP_SetWindowはプラグイン用のネットスケープおよびインターネットエクスプローラ(商標)APIの一部である)。このウィンドウメンバーから最初のブラウザウィンドウ・ハンドルを検索するために、GetParent関数を呼び出すための現在値がデスクトップウィンドウより1つ下のレベルを表すまで、GetParent関数(ウィンドウズ関数)が連続して呼び出される。例えば、ループ内で実行される“m_Handle=GetParent(m_Handle)”などの宣言により所望の機能と結果とを得る事が出来る。但しm_Handleの値はNPWindow構造のハンドル用の値に等しく最初セットされ、次いで、この値は、最終的に最初のブラウザ・ウィンドウへこのハンドルを返す。
次いで、インターネットユーザが機能ウィンドウを閉じて、BIOライブラリをクラッシュさせる事が出来ないように、最初のブラウザ・ウィンドウを隠し状態および/または使用禁止状態にする。ユーザから最初のブラウザ・ウィンドウを隠すおよび/またはユーザ駆動イベントからそのウィンドウを使用禁止にするために、ブラウザ・ウィンドウを隠すおよび/またはブラウザ・ウィンドウを使用禁止にする値と共に、WM_SHOWWINDOWおよび/またはWM_ENABLEメッセージ(双方ともウィンドウズ定数)を最初のブラウザ・ウィンドウへ送信する事が出来る。これは、例えば、PostMessageまたはSendMessage関数(ウィンドウズ関数)を利用して、ブラウザウィンドウ・ハンドルを用いて最初のブラウザ・ウィンドウへメッセージを送信することにより達成出来る。上記とは別に、ShowWindowおよびEnableWindow関数(ウィンドウズ関数)を用いて同じ結果の達成が可能である。
最終ステップは、最初のブラウザ・ウィンドウを隠し状態および/または使用禁止状態にした後、ネットサーフィンを続けるためにインターネットユーザが使用出来る新たなブラウザ・ウィンドウを作成することである。例えば、_new、_blank、または、予め存在しない任意のウィンドウ名にターゲットパラメータをセットして、以下のネットスケープとインターネットエクスプローラ(商標)のプラグインAPI関数:NPN_GetURL, NPN_PostURL, NPN_GetURLNotify, NPN_PostURLNotifyのうちのいずれかを呼び出すことにより上記を達成する事が出来る。上記関数のNPP引数は、ブラウザ72により機能ウィンドウ用プラグインへ提供されたNPP構造である。これを行う別の方法として、例えば、New_WindowコマンドまたはOpen_In_New_Windowなどの新たなウィンドウを開くために用いる事が出来るような任意のコマンドに対応するブラウザ72へWMCOMMANDメッセージを送信する方法がある。ブラウザにより提供される動的データ交換(DDE)サポートを用いて新たなウィンドウを開く事が出来る。NPN_GetURL, NPN_PostURL, NPNGetURLNotify, NPNPostURLNotifyおよびNPP構造はプラグイン用ネットスケープおよびインターネットエクスプローラ(商標)APIの一部であり、WMCOMMANDはウィンドウズ定数である。
BIOプラグインは、ブラウザ72の特徴と機能とを制御する事が出来る。第1のステップとして、本発明に準拠して制御の対象となるブラウザ・ウィンドウのうちのいずれかまたはブラウザが使用するウィンドウ(まとめてBIOウィンドウ)のうちのいずれかのサブクラス化を行うステップがある。
ブラウザ・ウィンドウまたはその子ウィンドウをサブクラス化した後、GetMenu関数(ウィンドウズ関数)を用いてブラウザ・ウィンドウ・メニューへのポインタを検索することによりブラウザ・インターフェイス20にメニューを追加する事が出来る。一度メニューのハンドルへのポインタを取得すると、ModifyMenu, AppendMenu, InsertMenuなど(ウィンドウズ関数)のメニュー関数を用いて、任意の所望のメニューをブラウザ・ウィンドウに追加する事が出来る。ブラウザ72内に含まれるいずれかの同じコマンド識別子と同じコマンド識別子をメニュー作成時に使用しないように注意しながら、BIOウィンドウのサブクラス化に用いるBIOメッセージ処理手順によって、メニューに割り当てられたいずれのコマンドも処理しなければならない。
上記とは別にまたはこれに追加して、標準的ウィンドウズ関数を用いてツールバー42の追加先であるウィンドウのハンドル(本願明細書では以後フレームハンドルと呼ぶ)を検索することにより、インターフェイス・オブジェクト・ツールバー42をブラウザ・インターフェイス20に追加する事が出来る。上記ウィンドウはBIOウィンドウまたはBIOウィンドウの子ウィンドウであるフレームウィンドウになる。次いで、親ウィンドウとしてフレームハンドルを用いてウィンドウが作成される。例えば、(ツールバーの1つの形である)ダイアログバーをインターフェイス・オブジェクト40として追加するために、タイプCDialogBar(マイクロソフト・ファウンデーション・クラス)から導き出されたオブジェクトまたはタイプCDialogBarのオブジェクトを作成する事が出来る。これがフレームハンドルを用いて呼び出すCreate法である。例えば、画像、ツールバー、ダイアログなどのようなリソースが使用され、かつ、ブラウザ72がBIOライブラリと同じリソースを共有していない場合、BIOライブラリ・リソースからいずれかのデータをロードする事が出来るようになる前に、ブラウザのリソースはBIOライブラリ・リソースにより一時的に置き換えられる。その後、ブラウザの元のリソースによってBIOライブラリ・リソースを置き換えることが可能となる。
新たなブラウザ・ウィンドウが開かれたとき、この新たなウィンドウにインターフェイス・オブジェクト40を追加する事が出来る。ユーザ定義関数を呼び出すSetTimerウィンドウズ関数を用いてタイマを作成することにより上記を達成する事が出来る。上記ユーザ定義関数は、機能ウィンドウと同じクラス名を持つデスクトップウィンドウの全ての子ウィンドウのチェックを行うFindWindowEx関数(ウィンドウズ関数)を利用する。変更されたインターフェイスを予め含まない新たなウィンドウ(インターフェイス・オブジェクト40を含まない)については、必要なハンドルが検索され、元のBIOウィンドウに対して行われた変更と同じ変更が行われる。
最後に、インターネットユーザがブラウザ72を閉じることを望む場合、機能ウィンドウを除いてブラウザ・ウィンドウの全てが閉じているかどうかの判定を行う必要がある。そして、他の全てのブラウザ・ウィンドウが閉じていれば、この機能ウィンドウを閉じる事が出来る。例えば、BIOメッセージ処理手順内のWMCLOSEメッセージ(ウィンドウズ定数)をリスンすることにより、あるいは、開かれているブラウザ・ウィンドウの数を周期的にチェックするタイマをセットすることにより、上記を達成することが可能となる。WM_CLOSEメッセージを送信することにより元の機能ウィンドウを閉じることも可能である。
本発明によれば、BIOライブラリ(即ちプラグイン)をロードすることが可能となり、ブラウザ・インターフェイス20内に自動的にBIOライブラリの機能を提供する事が出来る(ユーザが、特定のインターネットサイトへ積極的にアクセスする、即ちプラグインを呼び出すウェブページへサーフィンする必要は無くなる)。例えば、ネットスケープは、自動スタートアップとして特定されるキーをそのウィンドウ・レジストリ内に備えている。起動時に、ネットスケープは、自動スタートアップキー内にリストされているOLEの制御機能の全てをロードする。自動スタートアップキー内のライブラリファイル74への(従って、BIOライブラリとインターフェイス・オブジェクト40を規定するプラグインへの)リファレンスまたは呼び出しを行うことにより、ネットスケープブラウザを開始する即ち起動する度にライブラリファイルのロードを行う事が出来る。ブラウザ・インターフェイス20でインターフェイス・オブジェクト40のインスタンスを作成する命令と、所定のインターネットサイト130との接続を確立するブラウザ72用の命令とを上記ライブラリファイル74の中に含める事が出来る。この技法を用いることにより、ユーザがある特定のインターネットサイト130を訪問してBIOライブラリをロードする必要は無くなる。少なくともブラウザ72内にプラグインをロード出来るようになるまで、ブラウザ・インターフェイス20を介して表示とアクセスを行うためにライブラリファイル74を開いた状態に保つ必要がある。これを行う1つの方法として、ライブラリファイル74と関連するリファレンスカウンタの増分を行い、それによって、ネットスケープが自動スタートアップキーにリストされたOLEコントロール機能のアンロードを行う時、ライブラリファイル74が、より大きなリファレンス番号を持っているためにアンロードされないようにする方法がある。
ライブラリファイル74をプラグインとしてロードして、タイマまたはループを用いてネットスケープDDEサーバを周期的に探すようにする事が出来る。ブラウザ72によりネットスケープDDEサーバから返信を受信した時、ネットスケープはコマンドを受け取る準備ができており、プラグインを共にロードすることが可能となる。次いで、DDEを用いて、WWW_OPENURLなどのコマンドをブラウザ72へ送信してもよく、このコマンドは本願明細書で論じているようにプラグインをロードさせることになる。
BIOライブラリ用として用いるネットスケープ・プラグイン・ウィンドウを隠す別の方法として、(“スタート”ボタンが配置されている)タスクバーからネットスケープ・プラグイン・ウィンドウを削除して、可視スクリーンから見えなくするという方法がある。上記ネットスケープ・プラグイン・ウィンドウをタスクバーから取り除く1つの方法として、SetWindowLongを呼び出して、プラグイン・ウィンドウのウィンドウ・スタイルをツールボックス・ウィンドウに変更する方法がある。ツールボックス・ウィンドウはタスクバーには現れることはない。ネットスケープ・プラグイン・ウィンドウは、MoveWindowを呼び出し、ユーザのデスクトップの可視範囲にはない座標を与えることによりスクリーンから外して配置する事が出来る。
元のブラウザメッセージ処理手順を置き換えるために用いるBIOウィンドウ・メッセージ・ハンドリング・プロシージャは、メッセージの指定する届け先がどのウィンドウであるか、および、一度BIOウィンドウ・メッセージ・ハンドリング・プロシージャがメッセージを受け取った場合、当該メッセージを用いて何をすべきかを知っていなくてはならない。これを行う好適な方法として、情報を互いにリンクするマップを作成する方法がある。本発明の場合、そのウィンドウにとって重要な情報を含む構造とウィンドウ・ハンドルとをリンクするマップを利用することが望ましい。例えば、BIOライブラリが新たなブラウザ・ウィンドウにインターフェイス・オブジェクト40を追加する時、そのBIOウィンドウにとって有益な情報を含む構造とBIOウィンドウのハンドルをリンクさせるマップ内の新たなエントリが作成される。この構造内に含まれる数々の情報の1つとして、BIOウィンドウ用のブラウザの元のウィンドウ・メッセージ・ハンドリング・プロシージャが含まれることが望ましい。ブラウザの元のウィンドウ・メッセージ・ハンドリング・プロシージャを保持することによって、BIOウィンドウ・メッセージ・ハンドリング・プロシージャがメッセージの処理方法が分からない場合、ブラウザの元のウィンドウ・メッセージ・ハンドリング・プロシージャへメッセージを渡す事が出来るようにする必要がある。
BIOウィンドウ・メッセージ・ハンドリング・プロシージャによりメッセージが受信されると、処理手順へ渡される第1の引数は上記メッセージを受信したウィンドウのハンドルである。このウィンドウ固有の全てのデータを含む構造を検索するために、キーとしてウィンドウ・ハンドルを用いてマップ内の検索が行われる。返された構造には元のウィンドウ・メッセージ・ハンドリング・プロシージャなどの格納済みウィンドウ固有の情報が含まれる。
ブラウザ・インターフェイス20の制御時に、本発明ではブラウザ72の作動方法が変更される。ブラウザのウィンドウまたは子ウィンドウへメッセージを送信することにより、ブラウザの機能に関してインターネットユーザはほとんどどんなことでも行うことが可能となる。メッセージを送信するオブジェクトまたはウィンドウには、インターネットユーザが直接リアルタイムで通信出来る相手先であるメニュー、ボタン、コンボボックスおよびその他のほとんどあらゆる手段(即ちインターフェイス・コントロール手段)が含まれる。例えば、メッセージは4つの構成要素に分解する事が出来る:1)メッセージの受信を意図するウィンドウのハンドル、2)メッセージのmsg値、3)通常msg値に従属する用途を持つwParam、4)やはり通常msg値に依存する値を持つIParam。
例えば、ブラウザのウィンドウ内のボタンをクリックすると、ブラウザ・ウィンドウのウィンドウ・メッセージ・ハンドリング・プロシージャへウィンドウズ定数であるWMCOMMANDを含むメッセージ(msg値)を送信する事が出来る。この場合、上記メッセージ内のwParam変数の下位2バイトはどのボタンが押されたかを特定するために用いる数となる。
上述のように、ブラウザのウィンドウまたは子ウィンドウのサブクラス化を行うことにより、ユーザがインターフェイス・コントロール手段のいずれかとリアルタイムで伝送する際に送信されるいずれのメッセージもインターセプトする事が出来る。一度メッセージがインターセプトされると、BIOウィンドウ・メッセージ・ハンドリング・プロシージャが上記メッセージを翻訳し、このメッセージに対して反応する事が出来る。インターフェイス・コントロール機能が同じ状態のままにする(即ち本発明への追加、本発明からの削除または本発明による変更を行わない)ことである場合、上記メッセージは元のウィンドウ・メッセージ・ハンドリング・プロシージャへ戻す事が出来る。このようにして、ブラウザ72内に存在するほとんど全てのインターフェイス・コントロール機能を制御することが可能となる。さらに、ブラウザ・インターフェイス20にインターフェイス・コントロール機能を追加し、(wParamの形で渡される)コマンド識別子を割り当てる事が出来る。次いで、BIOウィンドウ・メッセージ・ハンドリング・プロシージャにより、上記wParamを翻訳し、追加すべきインターフェイス・コントロール機能の提供が可能となる。さらに、ブラウザから削除すべきインターフェイス・コントロールと関連するコマンド識別子を受け取った場合、単に本発明によるウィンドウ処理手順に何もさせることなく機能の削除を行う事が出来る。これによって、上記コマンドがブラウザ・ウィンドウの元のメッセージハンドリングプロシージャへ渡されないようにする事が出来る。
上記に詳しく論じたように、本発明の種々の実施形態を用いて、インターネットユーザは、ユーザ定義インターフェイス・コントロール機能を備えたブラウザ・インターフェイス20の作成が可能となる。この場合、上記ブラウザ・インターフェイス20のウィンドウの親をサブクラス化されたウィンドウにセットすることにより、新規の(即ち制御対象の)ウィンドウから出されるいずれのメッセージでもBIOウィンドウ・メッセージ・ハンドリング・プロシージャで処理することになる。これを利用して、ツールバー、ダイログバー(dialogbar)、フローティング・ダイアローグ(floating dialog)などの任意のインターフェイス・オブジェクト40をブラウザ・インターフェイス20に追加することが可能となる。
本発明についてさらなる説明を行うために、本発明を限定しない以下の例示の利用例を示す。インターネットユーザがインターネットを巡回する時持続して存在するプラグインまたはアクティブXコントロールによって、ユーザが、インターネットに配置されているデータベースから得られる自分の“ブックマーク”や“お気に入り”のダウンロードを可能にするブラウザ・インターフェイス20にインターフェイス・オブジェクト40を追加することが可能となる。このインターフェイスはブラウザ・インターフェイスの中へ直接追加され、このインターフェイスによってプラグインまたはアクティブXコントロールにより提供されたインターフェイス・オブジェクト40を用いて、ユーザはダウンロードした“ブックマーク”や“お気に入り”のリンクを訪れることが可能となる。このインターフェイス・オブジェクト40は、既存のブラウザ上の現在の“お気に入り”や“ブックマークマーク”メニュー項目と同様の機能を果たすものである。有利な相違点として、このブックマークはインターネット上のデータベースからダウンロードされるため、ユーザは、プラグインまたはアクティブXコントロールをロード出来る自分のブックマークに任意のコンピュータのブラウザ上でアクセス出来るという利点が挙げられる。
本発明は、プラグインまたはアクティブXコントロールを介して、ブラウザ・インターフェイス20の“お気に入り”や“ブックマーク”に設けた広告“リンク”に基づいて広告収入を生むために利用することも可能である。広告対象のターゲット消費者は、例えば、氏名、年齢、性別、収入、人種、学歴および地理上の所在地などのデータベースに格納された情報に基づいて、また、データベースに格納されているまたはブラウザ72に存在するお気に入りとブックマークなどの好みに基づいて行うことも可能である。
ユーザがインターネットを巡回する時持続して存在するプラグインまたはアクティブXコントロールを用いて、ユーザが、インターネットに配置されているデータベースから得られる自分の“アドレス帳”のダウンロードを可能にするブラウザ・インターフェイス20にインターフェイス・オブジェクト40を追加することが可能となる。このようなインターフェイス・オブジェクト40は、ブラウザ・インターフェイス20のインターフェイスの中へ直接追加することが可能であり、このインターフェイス・オブジェクト40は、電子メールの送信並びに自分の“アドレス帳”にリストされている連絡先用の格納済み情報の検索をユーザが行う事が出来るようにするものである。
本発明は、プラグインまたはアクティブXコントロールのインターフェイス・オブジェクト40の“アドレス帳”に設けた広告“リンク”に基づいて広告収入を得ることを目的として利用することも可能である。広告対象のターゲット消費者は、例えば、氏名、年齢、性別、収入、人種、学歴および地理上の所在地などのデータベースに格納された情報に基づいて、また、データベースに格納されているまたはブラウザに存在するお気に入りとブックマークなどの好みに基づいて行うことも可能である。
本発明は、ユーザの探索を可能にするウェブページを訪問する必要なく、プラグインまたはアクティブXコントロールを利用して、ユーザがブラウザの中へ直接探索語をタイプ出来るようにする、ブラウザ・インターフェイス20の編集ボックスの追加を可能にするものである。
さらに、持続して存在するプラグインまたはアクティブXコントロールによって、たとえユーザが異なるウェブサイトをサーフィンしていても、ユーザ側で、ウェブサイトで、あるいは、プログラムで選択された間隔で、ポーリング即ち周期的に好適なウェブサイトから情報の探索を行うことが可能となる。好適なウェブサイトのポーリングを行う時、この好適なウェブサイトによって、メールや、株価の連続する更新や、例えば、ニュースをフィード・ヘッドラインや、ひいきのスポーツチームのスポーツ得点、等のその他の時間に敏感に反応する情報のリアルタイムに近い受信通知などの更新済み情報の送信をユーザのブラウザのインターフェイス・オブジェクトに対して行うことが可能となる。好適なウェブサイトは、ピーク時の利用期間中、好適なウェブサイトでのトラフィックを制御するために、ポーリング間の時間間隔を延ばすことにより、所望の場合ポーリングのタイミング制御を行う事が出来る。
本願明細書に記載のように、ライブラリファイルが作成したシェルは、アプリケーションを実行したり、情報を表示したりすることが可能な1つの環境であるため、本発明を利用して任意の情報またはプログラムをブラウザのインターフェイスに追加することが可能となる。上記シェルは、ブラウザ・インターフェイス、ブラウザの内容、さらにはシェル自体の内容さえからも独立している。要するに、シェルは適応可能な1つの機能であり、この機能は極端な場合ユーザにとって可視である必要さえ無い。従って、使用中、シェルは空であってもよく、ウェブサイトからその内容を受け取る事が出来る。あるいは、シェルはプラグインを取得することも可能である。もしくは、シェルがウェブサイトまたはユーザから新しい内容を受け取るとき、シェルは新たなライブラリファイルを取得して、“リアルタイムで”新たな情報の構文解析を学習することさえ可能である。従って、本発明は、ユーザが別のサイトを訪問している時でさえ、好適なサイトからユーザへ所望の情報を直接送る重要な機会を提供するものである。言うまでもなく、本発明のカスタム可能なインターフェイスを介してウェブサイトにより提供されるユーザ固有機能が多ければ多いほど、そのウェブサイトが発生させる事が出来るユーザロイヤルティはさらに大きくなる。
図11〜図17を参照すると、本発明の別の実施形態で、インターネットブラウザ・インターフェイスのツールバーへショッピング・アシスタント・ボタンを追加して、サポートされたマーチャント・ウェブサイトでのオンライン・ショッピングを簡便化する事が出来る。ショッピング・アシスタント・ボタンの規定を含むこの実施形態の機能は、サーバから送信されたコンピュータコードにより提供され、ユーザのコンピュータに格納される。コンピュータコードはインターネットブラウザのインターネット・ナビゲーションをモニタして、ブラウザが、サポートされたマーチャント・ウェブサイトに在るかどうかの判定を行い、インターネットブラウザがサポートされたマーチャント・ウェブサイトに在れば、ショッピング・アシスタント・ボタン用のインジケータを提供し、サポートされたマーチャント・チェックアウト・ウェブページに記入を行う。
本願明細書のユーザのように、“オンライン・ショッピング”という用語は、インターネットブラウザのユーザが、インターネットで商品および/またはサービスを購入する事が出来る処理プロセスを意味する。オンライン・マーチャント(インターネット上の商品および/またはサービスの販売者など)は、マーチャントサーバが主催するウェブサイトを提供する事が出来る。このウェブサイトを介してユーザはインターネットブラウザを用いて1以上のウェブページにアクセスする事が出来る。マーチャントは1以上のウェブページを介して販売用として種々の商品および/またはサービスの提供を行う事が出来る。買物客は商品、サービスについての説明を閲覧し、電子ショッピングカートの中へ入れる種々の商品および/またはサービスを選択し、ショッピングカートの内容を見て、チェックアウトする事が出来る(以下さらに詳細に説明する)。
図11に示されるブラウザ・インターフェイス20にはインターフェイス・オブジェクト40が含まれ、このインターフェイス・オブジェクト40には、インターフェイス・オブジェクト・ツールバー42とショッピング・アシスタント・ボタン144とが設けられている。このショッピング・アシスタント・ボタン144は、ブラウザ・インターフェイス20に種々の機能を提供するものであるが、この種々の機能の中には、本発明を限定しない例として、ブラウザ・インターフェイス20のユーザ(ユーザおよび買物客という用語は本願明細書では交換可能に用いられている)が、電子ウォレット(さらに詳細に以下解説する)を作成し、この電子ウォレットを編集し、ショッピング・アシスタント・ボタン144(およびブラウザ・インターフェイス20からのショッピング機能)を使用禁止にし、サポートされたマーチャントをリストし、ショッピング・アシスタント・ボタン144と、プルダウンメニュー44と、ショッピング・アシスタント・ボタン144が提供する機能とについて問い合わせを行い、ショッピング・アシスタント・ボタン144およびショッピング・アシスタント・ボタン144が提供する機能の利用方法について助けを求める問い合わせを行う能力が含まれる。ショッピング・アシスタント用コンピュータコードまたはソフトウェア(例えばdllファイルやexe.ファイル、JavaScriptなど)がサーバにより提供され、ユーザのコンピュータ50に格納され、ショッピング・アシスタント・ボタン144および本発明に準拠して提供されるその他の機能を規定し、提供するために、ブラウザおよびブラウザ・インターフェイス20と接続して実行可能である。これらについてはさらに詳細に以下説明する。
好ましい実施形態では、本発明の種々の実施形態に関して上記詳述したように、インターフェイス・オブジェクト40がブラウザ・インターフェイス20に追加されると、ショッピング・アシスタント・ボタン144およびショッピング・アシスタント・ボタン144により与えられる機能が提供される。即ち、インターフェイス・オブジェクト40がブラウザ・インターフェイス20に追加されると、ショッピング・アシスタント・ボタン144および関連するコンピュータコードがユーザのコンピュータ50へ送信またはダウンロードされる。上記とは別に、インターフェイス・オブジェクト40が追加された前後にユーザが要求した時、ショッピング・アシスタント・ボタン144と機能とをブラウザ・インターフェイス20に選択的に追加する事が出来る。
本発明のこの実施形態に準拠して提供されるショッピング・アシスタント機能は、少なくとも第1の例では、サーバ102(このサーバは物理的に互いに近い位置に配置された、あるいは、物理的に互いに別々の位置に配置された1以上のコンピュータを備えたものであってもよい)(図10などを参照のこと)によって提供される。ユーザがブラウザ・インターフェイス20のURLアドレスウィンドウ26内に所定のインターネットアドレスまたはURLを入力すると、上記サーバ102にアクセスする事が出来る。サーバ102は、セキュリティ保護が施されたサーバ(即ちセキュリティ保護ソケット層(SSL)接続を介してのみアクセス可能なサーバ)であることが望ましい。この所定のインターネットアドレスで、ユーザは1以上のウェブページにアクセスすることが可能となる。これらのウェブページのうちの少なくとも1つのウェブページによって、ユーザは本発明のこの実施形態に準拠するウォレットを設定することが可能となる。例示のウォレット設定ウェブページが図12〜図14に示される。このウォレット設定ウェブページについて以下さらに詳細に解説する。
このショッピング・アシスタント機能は、サーバ102によりユーザのコンピュータ50へダウンロードされるショッピング・アシスタント・コンピュータコードまたはソフトウェアによっても提供され、この機能はブラウザ・インターフェイス20とショッピング・アシスタント・ボタン144と接続して実行可能である。ショッピング・アシスタント・コードは、例えば、dllファイルや.exeファイル、JavaScriptあるいはその他の公知のタイプのコンピュータコードファイルやソフトウェアファイルであってもよい。ショッピング・アシスタント・コードは、異なるインターネットアドレスへのナビゲーションをユーザがブラウザに行わせる度に、インターネットアドレス(またはドメインやURL)をインターセプトすることによりインターネットブラウザのインターネット・ナビゲーションのモニタを行う。ショッピング・アシスタント・コードは、サポートされたマーチャントのインターネットアドレスを含むサポートされたマーチャント・ファイルとインターセプトされたアドレスとの比較を行うことにより、インターセプトされたインターネットアドレスと、サポートされたマーチャントのインターネットアドレスとの比較を行う。サポートされたマーチャント・ファイルは、サーバ102によりダウンロードされ、ユーザのコンピュータ50に格納されていることが望ましい。ユーザがサーバ102内へログを行う度に、サーバ102はサポートされたマーチャント・ファイルのそのバージョンと、ユーザのコンピュータ50に格納されたバージョンとの比較を行う(例えば、このバージョン情報はログイン処理中ユーザが送信することも可能である)。サーバ102は、必要に応じて、サポートされたマーチャント・ファイルの更新バージョンをユーザのコンピュータへダウンロードする。ショッピング・アシスタント・コードも、ブラウザが受信した個々のウェブページをインターセプトし、ウェブページの種別(例えば、課金ウェブページ、マーチャントホームページ、商品ページなど)をhtmlコードとHTTP要求ヘッダとにより判別する。
ショッピング・アシスタント・コードは、ショッピング・アシスタント・ボタン144とプルダウンメニュー44との規定も行い、ブラウザと、サーバ102と、オンライン・ショッピング用マーチャントサーバとの間の通信の制御を行う。
本発明の種々の実施形態に準拠するインターフェイス・オブジェクト40の一部としてショッピング・アシスタント・ボタン144を設けることも可能である。しかし、ユーザがショッピング・アシスタント機能を利用し、アクセスするためには、ユーザは最初ウォレットの設定を行わなければならない。本願明細書で用いられる、“ウォレット”という用語は、(符号化または暗号化を施すことが可能な)当該ユーザ固有のファイルであって、(本願本願明細書でデータとも呼ばれる)情報から構成されるファイルを意味し、上記ファイルは当該ユーザにより設けられ、サーバ102(図10など参照)のデータ格納装置106(ハードドライブ、光ディスク)に設けられたウォレット・データベース104に格納される。ウォレットの設定時にユーザが提供した情報が予め設定したフィールドまたはフィールド名に格納されるようにウォレット・データベース106は構造化される。同様に、サポートされたマーチャント・データファイルも、マーチャント・チェックアウト・ウェブページがウォレット設定処理中に提供された情報と同じ情報を必要とする程度まで同じフィールドまたはフィールド名を用いて構造化される。
ウォレットを設定するために、ユーザは、サーバ102が提供した一定のウォレット設定ウェブページに応答して一定情報を提供する必要がある。インターネットブラウザが、ブラウザ・インターフェイス20による表示を行うためにサーバからデータ(典型的にはHTMLデータ)を受け取ることは当業者には公知である。従って、サーバがウェブページを提供するという本願明細書での言及は、インターネットブラウザにより表示するための、サーバからのダウンロードまたはデータ伝送を意味するものである。
例示のウォレット設定ウェブページが図12に示され、全体が1000として指定されている。例えば、ショッピング・アシスタント・ボタン144のプルダウンメニュー44の“ウォレット編集”オプションを介して上記ウェブページ1000にアクセスする事が出来る。例えば、“ウォレット設定”リンク1002のような、ウォレット設定ウェブページ1000の所定のリンクを選択することにより、図13に示されるようなウォレットデータ入力ウェブページ1010がサーバ102によりダウンロードされる。ウォレットデータ入力ウェブページ1010で、ユーザは複数のフィールド1012に一定情報の入力(プルダウンメニューまたは英数字エントリ)を行う。この情報は、本発明を限定しない例として、クレジットカードタイプ、クレジットカード番号、クレジットカードの有効期限、ユーザの姓名、料金請求先、電話番号、ユーザID、ユーザパスワード並びにユーザ固有のその他の種々の情報となることが考えられる。ウォレットの設定時に、個々のユーザは、ユーザのウォレットを利用するために、ユーザIDとパスワードの他に、必要なセキュリティ保護キー(図16などを参照のこと)の入力も求められる。ウォレットデータ入力ウェブページ1010内の必要なフィールド1012の全てに記入を行うと、ユーザは“終了”ボタン(図示せず)を選択する事が出来る。これによって、ユーザ入力情報がサーバ102へ送信される。これに応答して、サーバ102は、図14に示されるように、最終的にユーザのウォレットを設定する前にユーザが再査するために、新しく入力されたユーザのアカウント情報の要約1022を含むウォレット・サマリ・ウェブページ1020のダウンロードを行う。ユーザ情報が正しければ、ユーザは、例えば、“続ける場合にはここをクリック”と指示されたリンク1024などのウォレット・サマリ・ウェブページ1020のリンクを選択する事が出来、ユーザ情報(データ)はサーバ102へ送信され、データ格納装置106のウォレット・データベース104に格納される。今説明したウォレット設定処理手順中、データはサーバ102とユーザのコンピュータ50(図10などを参照のこと)との間で送信される。例えば、ユーザが“ウォレット設定”リンク1002を選択した時、ウェブページ1000(図12)と1010(図11)の双方をサーバ102により送信して、ユーザはブラウザ・インターフェイス20にこれらのウェブページを表示する事が出来る。ユーザがウォレットデータ入力ウェブページ1010で必要な情報の入力を終了し、“終了”ボタン(図示せず)を選択した時、ユーザ情報即ちユーザデータをサーバ102へ送信する事が出来る。ユーザのコンピュータ50からのユーザ情報の受信時に、サーバ102はウォレット・サマリ・ウェブページ1020を送信する事が出来る。上記とは別に、サーバ102は、(ユーザによるリンクまたはボタンの選択時などの)ユーザ開始アクションに応答して別々に上述のウェブページの各々を送信することも可能である。
サーバ102は、コンテンツ・プロバイダ100や、検索エンジンプロバイダやISPなどのような別のインターネット・サービス・プロバイダのサーバであってもよい。本願明細書ではこれらのサーバは一括してプロバイダ100と呼ばれる。プロバイダ100によりオンライン・マーチャントが選択され、このプロバイダ100と接続して本発明のショッピング機能を利用することが可能となる。サポートされているマーチャント・ファイルには、マーチャントのそれぞれのインターネットアドレスを含む全てのサポートされたマーチャントのリストが含まれる。ショッピング・アシスタント用コンピュータコードはこのファイルを利用して、URLアドレスウィンドウ26の中へ入力された(またはリンク内に設けられた)URLを、サポートされているマーチャント・ファイル内に含まれているURLと比較することにより、ユーザは、サポートされたマーチャント・ウェブサイトへナビゲーションを行ったかどうかの判定を行う事が出来る。
一度マーチャント(マーチャントは図10で全体が200で指定されている)が選択されると、プロバイダ100は、チェックアウト・ウェブページのレイアウト(図17を参照のこと)と、マーチャントのチェックアウト処理およびチェックアウト・ウェブページの終了に必要な情報とを含むマーチャントのチェックアウト処理を確認する。プロバイダ100は、サポートされたマーチャント・ルールと、選択された個々のマーチャント(本願明細書ではやはりサポートされたマーチャントと呼ぶ)用のマッピングファイルとを作成する。このマッピングファイルによって、個々のマーチャントのチェックアウト処理中にマーチャントが必要とするユーザデータと、個々のマーチャントのチェックアウト・ウェブページとに対応する複数のマーチャント・フィールド名とが規定される。例えば、図17を参照すると、サポートされたマーチャント・チェックアウト・ウェブページ2100では、買物客が、例えば、支払い方法、クレジットカード番号、クレジットカードの有効期限を含む料金請求先を含む料金請求先情報、並びに、買物客の個人情報(氏名、住所および電話番号など)の提供が要求される。マーチャント・フィールド名は、ユーザのウォレット内に規定されたウォレット・フィールド名に対応する。個々のマーチャントはそのチェックアウト処理中異なる情報を必要とする場合も考えられるので、個々のサポートされたマーチャント・ルールとマッピングファイルとは、異なるマーチャント・フィールド名を含むものであってもよい。しかし、全てのマーチャント・フィールド名はウォレット・フィールド名に対応する。
サポートされたマーチャント・ルールとマッピングファイルとは、ウォレットデータ(即ちウォレット・フィールド名)を必要なマーチャントデータ(即ちマーチャント・フィールド名)と対応づける。例えば、姓フィールドと名フィールドとを規定するマーチャント・ルールとマッピングファイルでのエントリとは以下のように構造化することも可能である。
但し、"wallet_b_fname_first"はユーザの名前用のウォレット・データベースフィールド名である。これに対して、サポートされたマーチャント・ファイルではユーザの第1の名前は"contactFirstName"と特定される。従って、本発明は、ウォレット・データベース内のフィールドを、サポートされたマーチャント・ファイル内のフィールドに対応づけて、ユーザがサポートされたマーチャント・ウェブサイトで買い物をする時、個々のマーチャントの注文用紙に自動的に記入が出来るようにするものである。
図15〜図17を参照しながら、例示のチェックアウト処理について以下説明する。異なるマーチャントは異なるチェックアウト処理を含み、異なるチェックアウト・ウェブページを提供する場合もあるので、以下の説明は単に例示的なものであり、本発明の範囲を限定したり、本発明の範囲を画定したりすることを意図するものではない。さらに、以下の説明はオンライン・ショッピング処理(この処理マーチャント毎に変動する可能性がある)の全体を追跡するものではなく、専らチェックアウト処理のみを追跡するものである。このチェックアウト処理は一般に、ユーザが“チェックアウト”またはマーチャント・ウェブページの別の類似のボタンを選択した後開始される。
ユーザが自分のインターネットブラウザを開始すると、インターフェイス・オブジェクト40はユーザのコンピュータ50とサーバ102との間で自動的に接続を確立する。種々のユーザデータがサーバ102によりユーザのコンピュータ50へダウンロードされる。ユーザは、URLアドレスウィンドウ26(図11を参照のこと)内にアドレスをタイプすることにより、または、ウェブページ上のリンクを選択することにより、任意のインターネットアドレスへインターネットブラウザのナビゲーションを行わせる事が出来る。ブラウザによるインターネットのナビゲーション方法に関係無く、ショッピング・アシスタント・コードは、ユーザが行うナビゲーションの行き先である個々のインターネットサイトのURLをインターセプトし、サポートされたマーチャント・データファイルとそのURLとの比較を行う。一致が発見された場合、ショッピング・アシスタント・コードは、例えば、ユーザがサポートされたマーチャント・ウェブサイトへナビゲーションを行っていることを示す黄色い円などのショッピング・アシスタント・ボタン144でユーザに知覚出来るインジケータを示す。ショッピング・アシスタント・コードはまた、サーバ102に対して、当該マーチャント用のルールおよびマッピング用データを含むファイルであって、当該マーチャントのチェックアウト処理に関する詳細情報を提供するファイルのダウンロード要求も行う。
ショッピング・アシスタント・コードも、ブラウザが受信した個々のウェブページをインターセプトし、htmlコードとHTTP要求ヘッダを見ることにより、課金ページ、電子メールアドレス要求、クレジットカード情報要求などのウェブページの種別を判別する。上記情報は、マーチャントのプロバイダの選択中、および、サポートされたマーチャント・データファイルの作成中に取得したものである。マーチャントのルールとマッピングファイルとを用いて、ショッピング・アシスタント・コードは、サービスを受ける専用ページと、そのページでのユーザ情報の提供方法とを決定する事が出来る。
図15に示されるように、ユーザのウォレットがある特定のページ用として必要である旨がショッピング・アシスタント・コードにより決定された場合、ショッピング・アシスタント・コードは、ユーザのブラウザ・インターフェイス20内でセキュリティ保護キーウィンドウ3000を開いて、データ・エントリ・ウィンドウ3020にセキュリティ保護キー(SK)を入力するようにユーザに求める。一度ユーザがSKを入力し、“継続”ボタン3030を選択すると、上記セキュリティ保護キーは、ユーザのコンピュータ50により好適にはhttpを用いてサーバ102へ安全に送信される。サーバ102は、ウォレット・データベース106上の当該ユーザのウォレットに予め格納されているデータと、ユーザデータ(IDとSKなど)とを比較する。データが一致すれば、SKが検証され、サーバ102により認証がショッピング・アシスタント・コードへ送信される。データが一致しなければ、拒絶が送信される。図16に示されるようなウォレット情報ウィンドウ3100として認証を出力してもよい。SKがサーバ102により首尾よく検証された場合、SSLを介して“セキュリティ・クッキー”がセキュリティ保護を施したサーバへ送信され、“セキュリティ・クッキー”がセットされると、ユーザのウォレットを利用するユーザのオンライン・ショッピングセッションが始まる。“セキュリティ・クッキー”は強制的に(aggressively)タイムアウトされ、好適には1時間まで有効とすることが望ましい。
本発明のショッピング・アシスタント機能を用いてユーザがチェックアウト処理の継続を望む場合、ユーザは“継続”ボタン3130を選択する事が出来る。ユーザがマーチャントのチェックアウト処理を用いてチェックアウトを望む場合、ユーザは“取り消し”ボタン3140を選択する事が出来る。ユーザが継続ボタン3130を選択すると、ショッピング・アシスタント・コードは、サーバ102上のウォレット・データベース104からユーザのウォレットを検索し、図17に示されるようにマーチャントのチェックアウト・ウェブページ2100に自動的に記入を行う。ユーザのウォレットはサーバ102により好適にはhttpを用いて安全に送信される。ユーザのウォレット、従ってユーザの個人データは、ユーザのデータ格納装置52に格納する必要は無く、一時メモリ60(本願明細書でメインメモリまたはRAMと呼ぶ)内に格納するだけでよい。そしてこの個人データは、本発明のこの実施形態のショッピング・アシスタント・コードおよび機能によって、およびこれらと接続されて利用される。このユーザのデータは自動的に時間切れにしたり、ユーザがブラウザを閉じるとき、メモリ60からフラッシュさせて消したりする事が出来る。
ブラウザが表示するウェブページの種別に応じて、ショッピング・アシスタント・コードは、ユーザのウォレット(RAM内に一時的に格納されたデータ)から適切なユーザデータをウェブページへ提供する。例えば、ウェブページが“料金請求先”用ウェブページであるとショッピング・アシスタント・コードが判断した場合、料金請求先データがRAMからコピーされて、料金請求先ウェブページ内のフィールドにポピュレートされ、最終的にマーチャントのサーバへ伝送される。チェックアウト処理中、ショッピング・アシスタント・コードは、マーチャント・ルールとマッピングファイルおよびユーザのウォレットと接続して処理を行い、種々のマーチャント・チェックアウト・ウェブページにより求められるユーザデータを自動的に提供する。
ウォレット・データベース106はウォレットデータだけを含むものであってもよい。あるいは、ウォレットデータは別のデータと共にデータベース内に配置されたものであってもよい。ショッピング・アシスタント・ボタン144および機能によって、およびこれらと接続してウォレットを好適に利用しながら、例えば、ショッピング・アシスタントを使用しない料金支払いやショッピング、および、ユーザが個人データの入力を要求されるほとんどあらゆるオンライン取引に関して、ショッピング・アシスタント以外のアプリケーションによってこのウォレットを使用することも可能である。このウォレットによって、ユーザのデータにセキュリティ保護を施した送信と処理とが行われ、そのデータのセキュリティに不必要な疑いを招くことなく、様々なオンライン取引に関してユーザがそのデータを利用出来るようになる。
一度ユーザがウォレットを設定すると、ユーザがオンライン・ショッピングを行う時、本発明のこの実施形態に準拠して提供される機能がユーザに利用可能となる。好適には、ユーザが(インターネットブラウザを介して)接続しているインターネットサイトに関係無く、サポートされたマーチャントと接続してオンライン・ショッピング機能を利用出来ることが望ましい。従って、ユーザはプロバイダのインターネットサイトと接続する必要は無く、あるいは、サポートされたマーチャントのウェブサイトと接続する必要さえ無い。ショッピング・アシスタント・コードは、ユーザ(ユーザのコンピュータ50)と、サーバ102と、ウォレット・データベース104と、マーチャントのインターネットサイトおよびチェックアウト・ウェブページ間での全ての通信を処理するものである。
本発明の別の実施形態によれば、プロバイダ102以外のパーティが、インターフェイス・オブジェクト・ツールバー42(図4を参照のこと)のようなブラウザ・インターフェイス・ツールバーにボタン44(即ちインターフェイス・オブジェクト)を追加することも可能である。例えば、ある企業のウェブサイトにリンクを設け、この企業ウェブサイトへの訪問者が、ブラウザ・インターフェイス20から、この企業ウェブサイトとワンクリックでつながるリンクを設けた自分のインターフェイス・オブジェクト・ツールバー42にボタン44を追加出来るようにすることも可能である。企業、あるいは、ウェブサイトを主催しているいずれのエンティティもプロバイダ100のスポンサとなる可能性がある。何故なら、インターフェイス・オブジェクト・ツールバー42に企業のボタンを追加することにより、ただ1回のマウスクリックで別の任意のウェブサイトからその企業のウェブサイトへ戻る事が出来るようになるからである。このようにして、ブラウザ・インターフェイス(即ちツールバー42)へ企業ボタンを追加することにより、ユーザと企業ウェブサイト間の親近性が確立されることになる。企業スポンサは、ボタン(外観(ワンクリックボタンやプルダウンメニュー)、アイコン、など)の設計を行い、プロバイダにより保守管理され、ブラウザ・インターフェイスと関連づけられるデータベース内へ組み込むためにこのボタンの設計とURLデータとをプロバイダ100へ提供する。このようにして、企業スポンサはプロバイダのデータベース内に規定されたボタンを持つ事が出来るようになる。
その企業ウェブサイトへの訪問者が自分のブラウザ・インターフェイス20内にその企業のボタンのインストールを望むものの、ブラウザ・インターフェイス・ツールバー42をまだインストールしていない場合、本発明によって、ブラウザ・インターフェイス20内のブラウザ・インターフェイス・ツールバー42と企業ボタン44とのインストールも可能となる。その一方で、ブラウザ・インターフェイス20のツールバー22へ企業ボタン44を追加することも可能となる。あるいは、インターフェイス・オブジェクト・ツールバー42のボタン44として企業ボタン44を追加することも可能である。
また教示用ツールとして本発明を利用することも可能である。例えば、インターフェイス・オブジェクト・ツールバー42は、色、点滅、ハイライトなどを変化させることが可能な複数のボタン44を備えているため、そのボタンや、そのボタンが提供する機能へユーザの注意を向けさせる事が出来る。
ユーザが競合するウェブサイトを訪問している時、プロバイダや企業スポンサの或る特色についてプロバイダや企業スポンサがユーザに通知出来るようにすることも本発明では可能である。例えば、ユーザがある自動車会社のウェブサイトを訪問している時、対応するプロバイダの特色(プロバイダの自動車など)のハイライト表示を行って、その特色の利用可用性についてプロバイダウェブサイトでユーザに警告する事が出来る。ユーザがブラウザに或るウェブサイトへのナビゲーションを行わせる度に、そのURLをインターセプトするソフトウェアをユーザのコンピュータに設けることも可能である。そのインターセプトされたURLを、プロバイダのプロパティ用の複数のURLが含まれるファイルと比較する事が出来る。
重要なことは、ユーザが任意の特定時点にナビゲーションを行った行き先ウェブサイトの検出がユーザのコンピュータのみで検出出来るという点である。これによって、インターネットでのユーザの活動に関する情報がどのサーバへも伝送されないことになる。
一般に、ユーザのマーチャント・リストにマーチャントを追加するには2つのステップが要求される。第1に、ユーザは、当該マーチャントのウェブページを介してマーチャントとオンライン・アカウントを確立しなければならない。これを行う際、ユーザはユーザのログインIDと、パスワードとアカウント番号の入力を求められる場合がある。一度当該データがマーチャントにより受け付けられると、ユーザ用としてオンライン・アカウントが設定される。第2に、ユーザは、セキュリティ保護が施されたデータベースでこのオンライン・マーチャントアカウントを当該ユーザ用のデータとリンクしなければならない。例えば、ユーザは、マーチャントを選択する事が出来るウェブページにアクセスして、ユーザとマーチャントとに固有のデータ(当該ユーザのログインID、パスワード、アカウント番号など)を入力する事が出来る。次いで、(マーチャント・ウェブサイトと交信することにより)当該データを照合し、セキュリティ保護が施されたデータベースに該データを当該ユーザ用として格納する事が出来る。別のウェブページ(即ち上記マーチャントと関連しないウェブページ)を用いてこれらのステップを実行してもよい。一度上記2つのステップが終了すると、ユーザはマーチャント・リストにそのマーチャントを追加する事が出来、単にマーチャント・リストから当該マーチャントを選択するだけで、ある特定のマーチャントのユーザ用アカウントへ自動的にログインすることが可能となる。
ユーザが自分のブラウザを起動(開始)する度に、本発明に基づいて提供されるコンピュータコードは所定のインターネットサイトと自動的に交信し、当該ユーザに固有のデータが検索される。この検索されたデータを全体的にまたは部分的に利用してブラウザに機能を与え、ブラウザ・インターフェイスにインターフェイス・オブジェクトを追加することが可能となる。このようにして、上記検索されたデータにより、最新のマーチャント・リストを含む自動ログインインターフェイス・オブジェクトが規定されることになる。
次に図18a〜18bを参照しながら、本発明の自動ログイン方法の好ましい実施形態について詳細に論じることにする。図18a〜18bに示され、以下詳細に論じる方法は、上記に詳述したように、自動ログイン・インターフェイス・オブジェクトがブラウザ・インターフェイスに予め追加されているとみなす方法である。当該方法はまた、本発明による自動ログイン(およびその他の)機能を提供するコンピュータコードがユーザ用コンピュータへ伝送され、該コンピュータのプロセッサおよびユーザのインターネットブラウザと接続して実行可能であるとみなすものである。ステップ1810で、ユーザは、ボタンとプルダウンメニューを備えたものであってもよい自動ログイン・インターフェイス・オブジェクトを介して提供されるマーチャント・リストからマーチャントを選択する。ステップ1820で、コンピュータコード(クライアントとも呼ばれる)は、自動ログイン処理が内部で実行され、隠されたウィンドウをブラウザに開かせる。コンピュータコードはまたマーチャントIDとクッキーとを含む第1リクエストも、サーバ(好ましくは、図19に示されるような、および、以下さらに詳細に論じるような機密保護を施したサーバ)へ伝送する。機密保護を施したサーバは第1リクエストを受け取り、ステップ1822でクッキーがセキュリティ・クッキーであるかどうかを判定する。クッキーがセキュリティ・クッキーでなければ、ユーザは、現在のインターネットセッションについては安全にログインしていないか、ユーザが安全にログインしてから所定の時間が経過していることになる。いずれの場合にせよ、機密保護を施したサーバは、ステップ1830で、安全にログインするために或るデータを入力するように促すユーザのブラウザへ、1以上のウェブページ(ユーザのブラウザ内に新たなブラウザ・ウィンドウとして開く)を伝送する。ステップ1832で、ユーザが入力しなければならないデータの1つはセキュリティ保護キーであり、機密保護を施したサーバはこのきーを受け取って、当該ユーザ用として正しいおよび/または有効なセキュリティ保護キーであるかどうかを判定する。不正しくないセキュリティ保護キーが入力された場合、ステップ1834で、機密保護を施したサーバは、ユーザが所定の回数より多くセキュリティ保護キーの再入力を試みたかどうかを判定する。ユーザの再試行が許容回数を超えた場合、セキュリティ保護を施したログイン処理は終了する(機密保護を施したサーバにより終了されることになり、ユーザのブラウザは、ユーザが自動ログインインターフェイス・オブジェクト(ボタン)のマーチャント・リストからマーチャントを選択する前に表示されているウェブページへ戻る。ステップ1836で、ユーザが再試行の許容回数を超えていなければ、セキュリティ保護を施したログイン処理の取り消しを選択してなければ、ユーザはセキュリティ保護キーの再入力を試みてもよい。ステップ1832で、機密保護を施したサーバは正しいセキュリティ保護キーが入力されたかどうかを再び判定する。所定の試行回数後に、正しいセキュリティ保護キーが入力されなければ、または、ユーザが取り消しボタンを選択することによりセキュリティ保護を施したログイン処理の終了を選べば、セキュリティ保護を施したログイン処理は終了し(機密保護を施したサーバにより終了され)、ユーザのブラウザは、ユーザが自動ログインインターフェイス・オブジェクト(ボタン)のマーチャント・リストからマーチャントを選択する前に表示されているウェブページへ戻ることになる(ステップ1850)。
ユーザが正しいセキュリティ保護キーを首尾よく入力した場合、ステップ1840で、機密保護を施したサーバは承認メッセージをコンピュータコードへ伝送し、次いで、該サーバは、選択されたマーチャント固有の、ユーザのアクセス・クリデンシャルを求める第2リクエストをフィードサーバ1842へ伝送する。この第2リクエストは、フィードサーバがデータベース内にユーザおよびユーザのアクセス・クリデンシャルの所在位置を見つけるために翻訳する事が出来るユーザIDおよびマーチャントIDを含むものであってもよい。フィードサーバが、この第2リクエストとデータベースのエントリとの一致を見つけ出した場合、ユーザのアクセス・クリデンシャル(マーチャント用ログインIDおよびパスワード、マーチャント用ウェブサイトID(URLなど)およびマーチャント・ルール・ファイル)がフィードサーバによりユーザ用コンピュータへ伝送される。コンピュータコードはアクセス・クリデンシャルを受け取り、ユーザのブラウザに(URLにより特定されるような)マーチャントのウェブサイトへナビゲートさせ、ユーザのログインIDおよびパスワードと共に、および、マーチャント・ルール・ファイルに従ってログインフィールドを自動的にポピュレートさせ、マーチャント・ウェブサイトへのユーザの自動ログインを実行させる。
上述の自動ログイン処理は本発明に従って提供されるコンピュータコードにより透過的に実行される。さらに、本発明は、ブラウザ・インターフェイスを制御し、それによって、クライアント側の変更を伴うことなく、ナビゲーションを制御するルール(この場合では、マーチャント・ウェブサイトへの自動化ログインのためのルール)をサーバ側で変更出来るように、ユーザによるナビゲーションを制御する能力を提供するものである。本発明は、上述のルールへの変更を実行するためにブラウザが利用可能なドキュメントオブジェクトモジュール(DOM)を好適に利用することを可能とするものである。即ち、ユーザがマーチャント・リストからマーチャントを選択した後、コンピュータコードはユーザからのさらなる入力を必要とすることなく(ユーザが安全にログインされない場合を除いて)自動ログイン処理を実行する。図18a〜18bを続けて参照しながら、本発明に従ってコンピュータコードにより実行される自動ログインについてさらに詳細に論じることにする。ステップ1844で、コンピュータコードは第2リクエストに応答してアクセス・クリデンシャルを受け取ったかどうかの判定を行う。アクセス・クリデンシャルを受け取っていなければ、コンピュータコードはユーザのブラウザにより表示されるエラーメッセージ作成する(ステップ1860)。その後、コンピュータコードは(ステップ1820で開かれた)隠されたウィンドウを閉じさせ、自動ログイン処理を終了させる。次いで、ブラウザ内の表示は、ユーザがマーチャント・リストからマーチャントを選択する前に表示されているウェブページへ戻る。ステップ1844で判定されたように、コンピュータコードがアクセス・クリデンシャルを受け取っていれば、ステップ1870でコンピュータコードは自動ログイン処理の残り部分を実行するために別の隠されたウィンドウを開始する。自動ログイン処理が終了する前であればいつでも、ユーザは、コンピュータコード表示されている適当なボタン(コンピュータコードが自動ログイン処理を実行している間、表示されている取り消しボタン)を選択することにより、この処理を取り消す事が出来る。ステップ1872で、ユーザが自動ログイン処理の取り消しを選んだ場合、コンピュータコードは処理中に開かれた全ての隠されたウィンドウを閉じることになり、ブラウザによる表示は、ユーザがマーチャント・リストからマーチャントを選択する前に表示されているウェブページへ戻る。ユーザが手動で自動ログイン処理を終了させなかった場合、処理が終了される前に所定の時間が過ぎれば、コンピュータコードが処理を取り消してもよい。例えば、アクセス・クリデンシャルを受け取った後、装置やネットワーク上の問題に起因してコンピュータコードはブラウザにマーチャント・ウェブサイトへナビゲートさせる事が出来なくなる場合がある。その場合、コンピュータコードは自動ログイン処理を終了させ(ステップ1874)、自動ログインが終了できなかった旨のエラーメッセージをユーザに対して表示することになる(ステップ1878)。その時点で、コンピュータコードは、自動ログイン処理を再試行する機会をユーザに提供してもよい(ステップ1878)。この時点で、処理はステップ1844へ戻り、本願明細書に記載したように進む。
自動ログイン処理が自動的にタイムアウトしていないとコンピュータコードが判断した場合(ステップ1874)、コンピュータコードはマーチャント・ウェブサイトからログイン確認応答を受け取ったかどうかを判定する(ステップ1876)。これを行うために、コンピュータコードは隠されたウィンドウで受け取ったHTMLデータの評価を行い、所定の1ワード、複数のワード、メッセージまたはマーチャント・ウェブサイトでのログインが首尾よく終ったことを示す別のインジケータを探索する。例えば、ユーザが首尾よくログインした後、マーチャント・ウェブサイトはメッセージを表示してもよい。アクセス・クリデンシャルの一部としてコンピュータコードへフィードサーバが伝送したマーチャント・ルール・ファイルの一部として、当該メッセージを含めるようにしてもよい。このようにして、コンピュータコードは自動ログインが首尾よく終ったかどうかを判定する事が出来る。首尾よく終った場合、コンピュータコードはメインのブラウザ・ウィンドウでマーチャント・ウェブサイトからのウェブページを表示し(ステップ1890)、それによって効果的に、ユーザのブラウザにマーチャント・ウェブサイトへ、次いで当該ユーザのアカウント用ウェブページへ直接ナビゲートさせる。
次に図19を参照すると、ユーザがウェブサイトへ自動ログインを容易に行うシステムが示される。システムは、設計上の選択肢の定型としてサーバ(単一のサーバまたは複数のサーバ1900、1920、1940であってもよい)を備えたものである。好ましい実施形態では、システムはデータ格納装置を備え、該データ格納装置に格納されたソフトウェアを有するサーバを備える。本願明細書で詳述したように、ユーザのインターネットブラウザへの自動ログイン機能を追加するソフトウェアはコンピュータコードをユーザ用コンピュータへ伝送する。
図19に示された実施形態では、機密保護を施したサーバ1900がコンピュータコードと接続したセキュリティ保護を施したログイン処理実行する。機密保護を施したサーバ1900は複数のユーザデータおよびそれに対応するセキュリティ保護キー情報を持つデータベースを有する。機密保護を施したサーバ1900はユーザからのクッキーを受け取り、クッキーが有効なセキュリティ保護キーを持つセキュリティ・クッキーであるかどうかを判定する事が出来る。そうであれば、機密保護を施したサーバ1900はユーザ用コンピュータのコンピュータコードへ肯定応答または認証を伝送する事が出来る。
フィードサーバ1920は、ユーザにより提供された個々のマーチャント用のマーチャント・ログインおよびパスワードデータ、並びに、マーチャント・ルールデータを含む、複数のユーザデータが含まれているデータベースを有する。ユーザ用コンピュータのコンピュータコードは、機密保護を施したサーバから肯定応答または認証を受け取ると、コンピュータコードは、ユーザIDおよびマーチャントIDを含むクッキー有するフィードサーバへ第2リクエストを伝送する。フィードサーバは、フィードサーバのデータベース内で特定されるユーザIDおよびマーチャントが存在するかどうかを判定し、存在すれば、ユーザ用コンピュータへアクセス・クリデンシャルを伝送する。好ましい実施形態では、アクセス・クリデンシャルには、特定のマーチャントに固有の全てのユーザログインID、パスワード、およびマーチャント・ルール・ファイルを含む。コンピュータコードはアクセス・クリデンシャルを用いて、当該サイトのマーチャントのウェブサイトへおよびログイン・ウェブページへユーザのブラウザをナビゲートさせ、ログインフィールド(ログインIDとパスワード)を自動的にポピュレートさせ、マーチャント・ルール・ファイルに従って(“ログイン”や別の同様のボタンを選択するなど)ログインを実行する。この時点で、ユーザ用コンピュータはマーチャントのサーバ1940とインターネットを介して接続してもよい。一度コンピュータコードが自動ログインが首尾よく終ったことを確定すると、ユーザのアカウント用マーチャント・ウェブページはブラウザにより表示される。
当業者は、さらに、本願明細書で行われた開示から、ユーザのコンピュータ並びに種々のサーバに設けたソフトウェアを利用して、本発明の種々の実施形態が実施可能であることは明らかである。
任意の数のコンピュータ技術を利用して本発明を実施出来ることを理解されたい。例えば、インターネットと接続して作動可能なものとして本実施形態を開示したが、例えば、広域ネットワークを含む任意のコンピュータネットワークを介して本発明を利用することも可能である。同様に、ユーザのコンピュータ50は、例えば、個人用情報機器、ウェブ可能な携帯電話、ネットワークの中へダイヤル出来る有線電話、モバイルコンピュータ、パーソナルコンピュータ、インターネット機器等を含むネットワークと接続された任意の装置であってもよい。さらに、本願明細書に記載のサーバは、任意のソフトウェアを実行する任意のタイプのものであってもよく、さらに、本願明細書に記載のソフトウェアモジュール、オブジェクトおよびプラグインは任意のプログラム言語で書かれたものであってもよい。最後に、本願明細書に記載のデータベースと格納装置は、例えば、ローカルなコンピュータメモリ、ネットワークと接続された格納装置、並びに、磁気や光学などの任意の公知の記憶媒体を含む任意の格納技術を利用するものであってもよい。
以上、本発明の好ましい実施形態で適用されるような本発明の主要な新規の特徴を示し、説明し、指摘したが、当業者が、本発明の精神から逸脱することなく、開示された発明の細部および形態の様々な省略と代用と変更とを行うことも可能である。従って、本発明は、本願明細書に添付の特許請求の範囲によってのみ限定されるものである。