(57)【要約】  少なくとも１つのグラフィカル・ユーザ・インターフェイス・オブジェクトを有するコンピュータプログラム内でどのようにタスクを実施するかを人に教えるためのシステムおよび方法が開示される。コンピュータプログラムの少なくとも１つのグラフィカル・ユーザ・インターフェイス・オブジェクトとインタラクトしてコンピュータプログラム内でどのようにタスクを実施するかを人に示すステップ・バイ・ステップ命令を含むスクリプトが定式化される。スクリプトはエンティティマップを参照して定式化され、それはタスクのステップを実施するプログラムの少なくとも１つのグラフィカル・ユーザ・インターフェイス・オブジェクトにアクセスするためのプログラミング命令を含んでいる。スクリプトはプログラムの実際のシミュレートされないグラフィカル・ユーザ・インターフェイスの上に部分的グラフィカル・オーバレイをディスプレイして実行される。各グラフィカル・ユーザ・オーバレイはコンピュータプログラムのグラフィカル・ユーザ・インターフェイス・オブジェクトへの関係するユーザ入力をどのように提供するかをユーザに教える。基本的コンピュータプログラムをなんら再プログラミングすることなくそのオブジェクトの位置に無関係に、部分的グラフィカル・オーバレイはプログラムの関係するグラフィカル・ユーザ・インターフェイス・オブジェクトに隣接配置される。
2008512783.tif 000002
【特許請求の範囲】
【請求項１】
ユーザ入力に応答して所望のアクションを実施する少なくとも１つのグラフィカル・ユーザ・インターフェイス・オブジェクトを有するコンピュータプログラム内でどのようにタスクを実施するかを人に教える方法を実施するためのコンピュータ実行可能命令を有するコンピュータ読取可能媒体であって、前記方法は、
エンティティマップを参照して、どのようにタスクを実施するかをコンピュータプログラムのユーザに示すステップ・バイ・ステップ命令を含むスクリプトを定式化するステップであって、エンティティマップはコンピュータプログラムの少なくとも１つのグラフィカル・ユーザ・インターフェイス・オブジェクトにアクセスするためのプログラミング命令を含むステップと、
コンピュータプログラムの実際の、シミュレートされないグラフィカル・ユーザ・インターフェイスの上に少なくとも１つの部分的グラフィカル・オーバレイを直接ディスプレイすることによりスクリプトを実行し、各部分的グラフィカル・オーバレイは関連付けられたグラフィカル・ユーザ・インターフェイス・オブジェクトへ与えられてコンピュータプログラムにタスクのステップを実施させる入力を視覚的に示し、
コンピュータプログラムのソースコードになんら修正を加えることなくグラフィカル・ユーザ・インターフェイス・オブジェクトの位置に無関係に、部分的グラフィカル・オーバレイを関連付けられたグラフィカル・ユーザ・インターフェイス・オブジェクトに隣接配置する、
ことによりスクリプトを実行するステップと、
を含むコンピュータ読取可能媒体。
【請求項２】
請求項１に記載のコンピュータ読取可能媒体であって、スクリプトの実行はエンティティマップをダイナミックに参照するステップを含むコンピュータ読取可能媒体。
【請求項３】
請求項２に記載のコンピュータ読取可能媒体であって、さらに、コンピュータプログラムの新しいバージョンに対して生成されたエンティティマップの新しいバージョンを含み、スクリプトの実行はエンティティマップの新しいバージョンを参照してコンピュータプログラムの新しいバージョンに関連して適切に実行するステップを含む、コンピュータ読取可能媒体。
【請求項４】
請求項１に記載のコンピュータ読取可能媒体であって、エンティティマップからの少なくとも１つのプログラミング命令はスクリプトに内蔵されるコンピュータ読取可能媒体。
【請求項５】
請求項１に記載のコンピュータ読取可能媒体であって、スクリプトの実行はコンピュータプログラムからコンピューティングプロセスを分離するステップを含むコンピュータ読取可能媒体。
【請求項６】
請求項１に記載のコンピュータ読取可能媒体であって、前記方法は、さらに、スクリプトの実行中に受信されたユーザ入力をモニタするステップを含むコンピュータ読取可能媒体。
【請求項７】
請求項６に記載のコンピュータ読取可能媒体であって、前記方法は、さらに、不正確なユーザ入力がコンピュータプログラムにより受信されるのを防止するステップを含むコンピュータ読取可能媒体。
【請求項８】
請求項６に記載のコンピュータ読取可能媒体であって、前記方法は、さらに、スクリプトの実行中に受信された不正確なユーザ入力に応答して修正命令をユーザに与えるステップを含むコンピュータ読取可能媒体。
【請求項９】
請求項１に記載のコンピュータ読取可能媒体であって、スクリプトの定式化はタスクのステップの遂行を記録するステップを含むコンピュータ読取可能媒体。
【請求項１０】
請求項９に記載のコンピュータ読取可能媒体であって、さらに、タスクのステップの遂行を記録しながらタスクのステップの遂行に応答して各部分的グラフィカル・オーバレイを発生するように構成されたスクリプト内でプログラミングコードを自動的に生成するステップを含むコンピュータ読取可能媒体。
【請求項１１】
請求項１に記載のコンピュータ読取可能媒体であって、スクリプトの実行は、さらに、グラフィカル・ユーザ・インターフェイス・オブジェクトをダイナミックに参照して部分的グラフィカル・オーバレイ内のテキストがディスプレイされる言語を決定するステップを含むコンピュータ読取可能媒体。
【請求項１２】
ユーザ入力に応答して所望のアクションを実施する少なくとも１つのグラフィカル・ユーザ・インターフェイス・オブジェクトを有するコンピュータプログラム内でどのようにタスクを実施するかを人に教える方法を実施するためのコンピュータ実行可能命令を有するコンピュータ読取可能媒体であって、前記方法は、
エンティティマップを参照して、どのようにタスクを実施するかをコンピュータプログラムのユーザに示すステップ・バイ・ステップ命令を含むスクリプトを定式化するステップであって、エンティティマップはコンピュータプログラムの少なくとも１つのグラフィカル・ユーザ・インターフェイス・オブジェクトにアクセスするためのプログラミング命令を含むステップを含み、
スクリプトは、
コンピュータプログラムの実際の、シミュレートされないグラフィカル・ユーザ・インターフェイスの上に少なくとも１つの部分的グラフィカル・オーバレイを直接ディスプレイし、各部分的グラフィカル・オーバレイは関連付けられたグラフィカル・ユーザ・インターフェイス・オブジェクトへ与えられてコンピュータプログラムにタスクのステップを実施させる入力を視覚的に示し、
コンピュータプログラムのソースコードになんら修正を加えることなくグラフィカル・ユーザ・インターフェイス・オブジェクトの位置に無関係に、部分的グラフィカル・オーバレイを関連付けられたグラフィカル・ユーザ・インターフェイス・オブジェクトに隣接配置する、
ように構成されたプログラミング命令を含む、コンピュータ読取可能媒体。
【請求項１３】
請求項１２に記載のコンピュータ読取可能媒体であって、スクリプトはその実行中にエンティティマップをダイナミックに参照するように構成されるコンピュータ読取可能媒体。
【請求項１４】
請求項１３に記載のコンピュータ読取可能媒体であって、さらに、コンピュータプログラムの新しいバージョンに対して生成されたエンティティマップの新しいバージョンを含み、スクリプトは新しいエンティティマップの新しいバージョンを参照してコンピュータプログラムの新しいバージョンを適切に実行するように構成されるコンピュータ読取可能媒体。
【請求項１５】
請求項１２に記載のコンピュータ読取可能媒体であって、エンティティマップからの少なくとも１つのプログラミング命令はスクリプトに内蔵されるコンピュータ読取可能媒体。
【請求項１６】
請求項１２に記載のコンピュータ読取可能媒体であって、スクリプトはタスクのステップの遂行を記録して定式化されるコンピュータ読取可能媒体。
【請求項１７】
ユーザ入力に応答して所望のアクションを実施する少なくとも１つのグラフィカル・ユーザ・インターフェイス・オブジェクトを有するコンピュータプログラム内でどのようにタスクを実施するかを人に教えるシステムであって、前記システムは、
コンピュータプログラムの少なくとも１つのグラフィカル・ユーザ・インターフェイス・オブジェクトにアクセスするためのプログラミング命令を含むエンティティマップと、
エンティティマップを参照して、コンピュータプログラム内でどのようにタスクを実施するかをコンピュータプログラムのユーザに示すステップ・バイ・ステップ命令のスクリプトを発生するスクリプト定式化コンポーネントと、
スクリプトを実行するスクリプト実行コンポーネントであって、
コンピュータプログラムの実際の、シミュレートされないグラフィカル・ユーザ・インターフェイスの上に少なくとも１つの部分的グラフィカル・オーバレイを直接ディスプレイするディスプレイコンポーネントであって、各部分的グラフィカル・オーバレイは関連付けられたグラフィカル・ユーザ・インターフェイス・オブジェクトへ与えられてコンピュータプログラムにタスクのステップを実施させるディスプレイコンポーネントと、
コンピュータプログラムのソースコードになんら修正を加えることなくグラフィカル・ユーザ・インターフェイス・オブジェクトの位置に無関係に、部分的グラフィカル・オーバレイを関連付けられたグラフィカル・ユーザ・インターフェイス・オブジェクトに隣接配置する位置決めコンポーネントと、を含むスクリプト実行コンポーネントと、を含むシステム。
【請求項１８】
請求項１７に記載のシステムであって、エンティティマップはスクリプトの実行中にスクリプト実行コンポーネントによりダイナミックに参照されるシステム。
【請求項１９】
請求項１７に記載のシステムであって、さらに、スクリプトの実行中に受信されたユーザ入力をモニタする入力モニタリングコンポーネントを含むシステム。
【請求項２０】
請求項１９に記載のシステムであって、さらに、スクリプトの実行中に受信された不正確なユーザ入力に応答してユーザに修正命令を与える修正命令コンポーネントを含むシステム。
【請求項２１】
請求項１７に記載のシステムであって、さらに、記録コンポーネントを含み、スクリプト定式化コンポーネントは記録コンポーネントがアクティブである間にタスクのステップの遂行を記録することによりスクリプトを定式化するシステム。
【請求項２２】
請求項１７に記載のシステムであって、スクリプト実行コンポーネントはデスクトップコンピュータ上で実行されるシステム。
【請求項２３】
請求項１７に記載のシステムであって、スクリプト実行コンポーネントは無線電話機上で実行されるシステム。
【請求項２４】
請求項１７に記載のシステムであって、スクリプト実行コンポーネントはパーソナル・データ・アシスト（ＰＤＡ）上で実行されるシステム。
【請求項２５】
ユーザ入力に応答して所望のアクションを実施する少なくとも１つのグラフィカル・ユーザ・インターフェイス・オブジェクトを有するコンピュータプログラム内でどのようにタスクを実施するかを人に教える方法であって、前記方法は、
エンティティマップを参照して、どのようにタスクを実施するかをコンピュータプログラムのユーザに示すステップ・バイ・ステップ命令を含むスクリプトを定式化するステップであって、エンティティマップはコンピュータプログラムの少なくとも１つのグラフィカル・ユーザ・インターフェイス・オブジェクトにアクセスするためのプログラミング命令を含むステップと、
コンピュータプログラムの実際の、シミュレートされないグラフィカル・ユーザ・インターフェイスの上に少なくとも１つの部分的グラフィカル・オーバレイを直接ディスプレイし、各部分的グラフィカル・オーバレイは関連付けられたグラフィカル・ユーザ・インターフェイス・オブジェクトへ与えられてコンピュータプログラムにタスクのステップを実施させる入力を視覚的に示し、
コンピュータプログラムのソースコードになんら修正を加えることなくグラフィカル・ユーザ・インターフェイス・オブジェクトの位置に無関係に、部分的グラフィカル・オーバレイを関連付けられたグラフィカル・ユーザ・インターフェイス・オブジェクトに隣接配置する、
ことによりスクリプトを実行するステップと、を含む方法。
【請求項２６】
請求項２５に記載の方法であって、スクリプトの実行はエンティティマップをダイナミックに参照するステップを含む方法。
【請求項２７】
請求項２６に記載の方法であって、さらに、コンピュータプログラムの新しいバージョンに対して生成されたエンティティマップの新しいバージョンを含み、スクリプトの実行はエンティティマップの新しいバージョンを参照しコンピュータプログラムの新しいバージョンに関連して適切に実行するステップを含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願）
本出願は、その全体が本開示の一部としてここに組み入れられている、発明者デービットエル．アドキンス、マークアール．アドキンス、およびジェフリーダブリュ．アルトン、の２００４年９月８日に出願された米国仮特許出願第６０／６０８，３６０号“Ａ  Ｓｏｆｔｗａｒｅ  Ｔｏｏｌ  Ｔｈａｔ  Ｐｒｏｖｉｄｅｓ  ｆｏｒ  Ｉｎｔｅｒａｃｔｉｎｇ  ｗｉｔｈ  Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ  Ｏｂｊｅｃｔｓ  ｔｈｒｏｕｇｈ  Ｃｏｍｐｕｔｅｒｉｚｅｄ  Ｕｓｅｒ  Ｅｍｕｌａｔｉｏｎ”に関連しておりそこから優先権を主張するものである。
【０００２】
（発明の分野）
本発明はグラフィカル・ユーザ・インターフェイス（ＧＵＩ）を実現する装置に関し入力装置を利用してユーザが装置とインターフェイスできるようにする。特に、本発明はこのような装置上で実行されるソフトウェアアプリケーションの操作においてユーザを教育するのに使用されるソフトウェアツールに関する。
【背景技術】
【０００３】
（発明の背景）
ソフトウェアアプリケーションは毎日何百万人もの人々の生活に関わっている。それらは非常に多くの重要なビジネスおよび個人的なタスクおよび機能に対して使用される。その増大する複雑さと相まったソフトウェアの偏在性により、ソフトウェアのユーザが自分達のソフトウェアを迅速に学習して使用できることが避けられなくなってきている。次第に、この課題はオンラインおよびコンピュータベース訓練および教育を使用して満たされている。
【０００４】
ソフトウェアの操作においてユーザを訓練するためのオンラインおよびコンピュータベース教材の一つの欠点は、それが一般的に受身の学習経験を提供しより高いレベルの学習を刺激するのに十分なインタラクティビティをユーザに保証しないことである。ハイエンド教育ソフトウェアはグラフィックス、ビデオ、アニメーションおよび音声を含んでプロフェッショナルで魅力的なプレゼンテーションを作り出すことができるが、内容はしばしば必要なユーザインタラクションと実際のジョブパフォーマンスとの関連性の両方を欠くことが多い。
【０００５】
訓練内容は通常ブラウザその他の外部アプリケーション内で配信され、ユーザは訓練する者の間で前後に切り替わる必要があり、それはユーザにとって退屈で、混乱を招き、時間を消費し、効果の無いものとなることがある。
【０００６】
より進んだ形のこのような訓練材料は「シミュレーション」技術を使用し、ユーザがあたかもプロダクトを実際に使用しているかのようにタスクを実施できるようにするために、訓練環境においてソフトウェアアプリケーションがシミュレートされる。この技術はよりインタラクティブではない教材の多くの欠点を克服するが、生成および維持コストが非常に高い。一つの特定インターフェイスに従って初期シミュレーションが構成されると、ソフトウェアアプリケーションのインターフェイスが修正されるたび（ユーザまたはソフトウェアプロデューサにより）、またはソフトウェアの新バージョンがリリースされるたびに更新しなければならない。また、シミュレートされた環境においてソフトウェアアプリケーションの各機能および能力を再生成するコストは途方もないものであるため、シミュレーションは通常最も基本的な機能およびプロセスに限定される。その結果、ソフトウェアの新バージョンへ投資は少なくなり、熟練度の低い従業員が会社に残り、最先端技術の発見および実験が減る可能性がある。
【０００７】
さらに、ユーザはシミュレーションの限定によりソフトウェアプロダクトの全能力を利用することができない。シミュレートされた教育プロダクトの開発者もこのような大きさの機能および能力を提供するシミュレーションを生成し維持するためのコストおよび困難さによりこの制限を克服できない。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
したがって、生成し維持するのに効率的かつコスト効果的な方法でマルチメディア通信のパワーとインタラクティブ学習の有効性を組み合わせるソフトウェア教育を提供することが必要とされている。
【課題を解決するための手段】
【０００９】
（発明の概要）
本発明の利点を容易に理解するために、添付図に示す実施例を参照して前記した本発明をより詳細に説明する。これらの図面は本発明の典型的な実施例しか示していないため、その範囲を限定するものではなく、添付図を使用して本発明がより詳細に記述され説明される。本発明は現在の技術状態、特に、現在利用可能な教育ツールにより完全には解決されていない技術問題およびニーズに応えて開発されている。したがって、本発明は従来技術の多くの欠点を克服する教育ツールを提供するために開発されている。
【００１０】
特に、本発明はコンピュータプログラムをどのように操作するかをユーザに教育するために、一部、エミュレートされたユーザインターフェイスを介してグラフィカル・ユーザ・インターフェイス（ＧＵＩ）・オブジェクトとインタラクトするシステムおよび方法を提供する。これらのシステムおよび方法はいくつかの異なる方法で実現することができる。たとえば、一実施例では、ソフトウェアをコンピュータ読取可能媒体上に分散させて（たとえば、ＣＤ上またはインターネットを介してダウンロードされたファイル内に格納される）ここに記述されたシステムまたは方法を実現することができる。
【００１１】
一実施例では、コンピュータプログラム内でタスクをどのように実施するかを人に示すステップ・バイ・ステップ命令を含むスクリプトを開発者が定式化できるようにするソフトウェアが提供される。定式化されたスクリプトは、一部、コンピュータプログラムのグラフィカル・ユーザ・インターフェイス・オブジェクトとインタラクトしてそれを行う。本発明はワシントン州、レッドモンドのマイクロソフト社製Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｏｒｄ等の広範な異なるコンピュータプログラムを使用することができる。
【００１２】
定式化されたスクリプトはコンピュータプログラムの実際のシミュレートされないグラフィカル・ユーザ・インターフェイスの上に部分的グラフィカルオーバーレイをディスプレイして実行される。各部分的グラフィカル・オーバーレイはタスクのステップを実施するためにコンピュータプログラムの関連付けられたグラフィカル・ユーザ・インターフェイス・オブジェクトへどのように入力を与えるかをユーザに示すテキスト、グラフィックス、アニメーション、またはビデオを含むことができる。部分的グラフィカル・オーバーレイは、タスクのステップを実施するために入力を向けなければならない関係するグラフィカル・ユーザ・インターフェイス・オブジェクトをユーザがまだ見られるように、コンピュータプログラムのユーザインターフェイスの一部だけを覆い隠す。
【００１３】
各部分的グラフィカル・オーバーレイは、基本的コンピュータプログラムをなんら再プログラミングすることなく、そのオブジェクトの位置に無関係にプログラムの関係するグラフィカル・ユーザ・インターフェイス・オブジェクトに隣接配置される。一実施例では、コンピュータプログラムを実行しているオペレーティングシステムが質問されて関係するグラフィカル・ユーザ・インターフェイス・オブジェクトの位置を決定する。この情報を使用して、部分的グラフィカル・オーバーレイは関係するグラフィカル・ユーザ・インターフェイス・オブジェクトに隣接配置される。コンピュータプログラムの修正を必要としないため、本発明は容易に実現され広範な異なるコンピュータプログラムで使用することができる。さらに、コンピュータプログラムのメーカにプログラムを修正して面倒なプロトコルや標準に従うよう説得する必要がない。本発明は既に存在し本発明によりアクセス可能なグラフィカル・ユーザ・インターフェイス・オブジェクトとインタラクトする。
【００１４】
さらに、部分的グラフィカル・オーバーレイがコンピュータプログラムの実際のシミュレートされないバージョンの上に示されるため、本発明により提供される教育は従来技術の教示方法よりも有効である。コンピュータプログラムのシミュレートされたバージョンで訓練を受ける時に、ユーザはシミュレートされたソフトウェアと自分が使用しているソフトウェア間の違いを理解するために調節を行わなければならず、恐らくは混乱を招き教示プロセスの有効性を減少させてしまう。本発明のシステムおよび方法はユーザがタスクを実施するソフトウェア上でタスクを実施し、提供される教育の有効性を著しく増す。
【００１５】
一実施例では、定式化されたスクリプトがユーザに対するタスクのステップを実施する。あるいは、スクリプトはユーザに命令してタスクのステップを実施させ正確なユーザ入力を待ってからタスクの次のステップに関する命令をディスプレイすることができる。
【００１６】
スクリプトはエンティティマップを参照して定式化され、それはプログラムの少なくとも１つのグラフィカル・ユーザ・インターフェイス・オブジェクトにアクセスするためのプログラミング命令を含んでいる。エンティティマップは、さらに、プログラミング命令への単純化されたアクセスに対する各プログラミング命令に関連付けられた名称を含んでいる。一実施例では、個別のプログラミング命令はエンティティマップからのスクリプトに直接内蔵することができる（ハードコード）。代替実施例では、エンティティマップは特定のスクリプトによりダイナミックにまたはスタティックに参照することができる。エンティティマップのダイナミック参照により、スクリプトが実行される時に、コンピュータプログラムの新バージョンに適応されたエンティティマップを生成して特定のスクリプトをコンピュータプログラムの新バージョンに適応させることができる。したがって、スクリプトはコンピュータプログラムの新バージョンがリリースされる時に再定式化する必要がない。
【００１７】
スクリプト実行中のユーザ入力は任意にモニタされる。ユーザ入力のモニタリングは特定ユーザの技能レベルを決定するのに有用である。特定ユーザにより提供される入力が頻繁に不正確であれば、この情報はログ内に保存して技能を向上させるのにユーザはどんなタイプの訓練が必要であるか決定することができる。一実施例では、不正確な入力はスクリプトの実行中にコンピュータプログラムにより受信されるのを防止される。もう１つの実施例では、スクリプトの実行中に不正確な入力を提出するユーザに修正命令が与えられる。修正命令はグラフィックス、テキスト、オーディオ、ビデオ、またはアニメーションを含むことができる。
【００１８】
一実施例では、本発明はＬｅａｒｎｉｎｇ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ（ＬＭＳ）またはＬｅａｒｎｉｎｇ  Ｃｏｎｔｅｎｔ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ（ＬＣＭＳ）で使用することができる。ＬＭＳおよびＬＣＭＳは共にｅ−Ｌｅａｒｎｉｎｇ産業においてｅ−Ｌｅａｒｎｉｎｇコンテンツをユーザに提示してユーザの使用、パフォーマンス、およびスキルセットを追跡するのに使用される。このようなシステムに本発明を包含することにより、システムはコンピュータプログラムのコンテキスト内でどの命令が与えられるかについてユーザを命令するコンテンツをユーザに提示することができる（すなわち、ユーザは自分が学習しようとしているアプリケーション内でタスクが実施されるのを見ることができる）。
【００１９】
たとえば、ＬＭＳはワードプロセッサ内でシッピング・ラベル（ｓｈｉｐｐｉｎｇ  ｌａｂｅｌｓ）を生成するレッスンを含むことができる。ＬＭＳは本発明を使用してユーザ自身のワードプロセッサ内での輸送ラベルの実際の生成、マウスカーソルの移動、キーボード入力の送出、等を示すコンテンツを、必要に応じて配信することができる。本発明は必要な情報や命令を運ぶために、必要に応じて、任意のビデオまたはアニメーションを随意ディスプレイし任意のサウンドその他のマルチメディアコンテンツを演奏することができる。本発明のスクリプトを実行して生成された任意のデータは将来使用できる真の生き残れるデータである。提供される任意のユーザ入力をＬＭＳまたはＬＣＭＳが格納して管理者が解析または追跡に使用することができる。
【００２０】
さらにもう１つの実施例では、本発明はＬＭＳまたはＬＣＭＳ、コンピュータプログラム、またはコンピュータプログラムのユーザの拡張またはカスタマイゼーションに内蔵された特定タスクワークフローを含んでいる。これらのワークフローはタスクを実施するのに必要な特定ステップにユーザを案内する。本発明はユーザがワークフローにより指定されたオブジェクトとインタラクトするのを許すにすぎない。たとえば、本発明を実現するアプリケーションはユーザに命令してコンピュータプログラム内のある釦を押させるサウンドファイルを演奏することができる。また、スクリプトにより活性化される釦を指す矢印を表示させることができる。次に、本発明によりユーザはコンピュータのマウスポインタを動かして、ステップを実施する正確なユーザ入力を除く任意のマウスクリックを無視するようシステムに命令することができる。
【００２１】
本発明のさらにもう１つの実施例では、コンピュータプログラム内でタスクを実施するユーザの能力をテストすることができる。本発明はユーザの入力を追跡しかつ／またはユーザが指定されたタスクを正確に実施したかどうか検証することができる。ＬＭＳまたはＬＣＭＳに接続されて、検証結果はデータベース内に記録および格納することができる。たとえば、ＬＭＳは提示された資料のユーザの理解を評価するために、コース完了時にユーザにテストを提示することができる。テスト問題の一つはユーザにタスクの実施を要求することができる。コンピュータプログラムとのユーザのインタラクションを追跡しユーザが操作をうまく完了したか否かを検証するために、ＬＭＳは本発明の一実施例を使用する。本発明はテスト結果をＬＭＳへ伝え、次に、それは結果をデータベース内に記録する。
【００２２】
もう１つの実施例では、本発明は通常ユーザにより実施されるタスクを自動化できるシステムを提供する。このような一つの実施例はコンピュータプログラム上で品質保証テストを実行するアプリケーションである。この例に対して、本発明はコンピュータプログラムの特定機能が適切に実行されるかをテストするスクリプトを実行することができる。もう１つの例は、特定タスクの効率を高めるまたは不具者もしくは身体障害者が特定タスクを実施するのを助けるためのタスクの自動化である。
【００２３】
本明細書の全体を通して、特徴、利点、または類似言語の参照は本発明により実現できる特徴および利点の全てが本発明の任意の１つの実施例の中にあることは意味しない。特徴および利点に関する言語は実施例に関して記述された特定の特徴、利点、または特性が本発明の少なくとも１つの実施例に含まれることを意味するものと理解される。したがって、本明細書の全体を通して、特徴および利点、および類似言語の検討は、必ずしもそうではないが、同じ実施例に関連するものとすることができる。
【００２４】
さらに、本発明の前記した特徴、利点、および特性は１つ以上の実施例において任意適切な方法で組み合わせることができる。当業者ならば、本発明は特定実施例の１つ以上の特定の特徴または利点を持たずに実施できることが判る。また、本発明の全実施例には提示されない付加特徴および利点をある実施例において認識することができる。
【００２５】
記載されない他の特徴および利点だけでなく、本発明のこれらの特徴および利点は下記の説明および添付特許請求の範囲からより完全に明白となり、あるいは後述する本発明の実行により学習することができる。
【実施例】
【００２６】
（発明の詳細な説明）
次に、図１−１６を参照して本発明のさまざまな実施例について説明する。一般的に記述され図示される本発明の部材は広範な構成で実現することができる。したがって、図示される本発明のシステムおよび方法の実施例の下記のより詳細な説明は特許請求される本発明の範囲を限定するものではなく、本発明の好ましい実施例を表すにすぎない。
【００２７】
本明細書に記述される機能的ユニットの多くは、それらのインプリメンテーション独立性をより詳細に強調するために、モジュールまたはコンポーネントとして明示されている。たとえば、モジュールはカスタムＶＬＳＩ回路またはゲートアレイ、論理チップ、トランジスタ、または他の個別コンポーネント等のいつでもすぐ買える半導体を含むハードウェア回路として実現することができる。モジュールやコンポーネントはフィールド・プログラマブル・ゲートアレイ、プログラマブル・ゲートアレイ・ロジック、プログラマブル論理デバイス等のプログラマブル・ハードウェア・デバイス内に実現することもできる。
【００２８】
モジュールやコンポーネントはさまざまなタイプのプロセッサにより実行されるソフトウェア内に実現することもできる。実行可能なコードの識別されたモジュールやコンポーネントは、たとえば、コンピュータ命令の１つ以上の物理的または論理的ブロックを含むことができ、たとえば、それはオブジェクト、手順、または機能として編成することができる。それにもかかわらず、識別されたモジュールやコンポーネントの実行可能形式（ｅｘｅｃｕｔａｂｌｅｓ）は物理的に一緒に配置される必要はなく、異なる場所に格納された本質的に異なる命令を含むことができ、論理的に一緒に連結されると、それらはモジュールを含みモジュールに対する前記した目的を達成する。
【００２９】
事実、実行可能コードのモジュールやコンポーネントは単一命令、または多くの命令とすることができ、異なるプログラム間で、いくつかの異なるコードセグメントに亘り、かついくつかの記憶装置に亘り分散することさえできる。同様に、操作データはここではモジュール内で識別かつ例示することができ、また任意適切な形で実施することができ、任意適切なタイプのデータ構造内で編成することができる。操作データは単一データセットとして集めることができ、あるいは異なる記憶装置上を含む異なる場所に亘って分散させることができ、少なくとも一部は、システムまたはネットワーク上の単なる電子信号として存在することができる。後述する各方法または各方法のステップも同様に、ハードウェア、ソフトウェア、または２つの組合せを使用する等のさまざまな方法で実現することができる。
【００３０】
本明細書を通して、「一実施例」、「実施例」、または類似言語は本発明の少なくとも１つの実施例に含まれる実施例と関連して記述される特定の特徴、構造、または特性を意味する。したがって、本明細書を通して現われるフレーズ「一実施例では」、「実施例では」、および類似言語は、必ずしもそうではないが、全て同じ実施例のことである。
【００３１】
さらに、前記した特徴、構造、または特性は１つ以上の実施例において任意適切な方法で組み合わせることができる。以下の説明において、プログラミング、ソフトウェアモジュール、コンポーネント、ユーザ選択、ネットワークトランザクション、データベース質問、データベース構造、の例等の非常に多くの特定の詳細が提供されて、本発明の実施例を完全に理解するようにされる。しかしながら、当業者ならば本発明は１つ以上の特定の詳細無しで、あるいは他の方法、コンポーネント、材料、等で実施できることがお判りであろう。他のケースでは、本発明の側面が不明瞭になるのを回避するために既知の構造、材料、または操作は詳細に図示または記述されない。
【００３２】
図１から図１６はシステムの実施例およびソフトウェアツールの特定タスクを実施するフロー図を示す。図示し後述する実施例について本発明を説明するが、当業者ならば本発明はいくつかの異なるアプリケーションおよび実施例で実現することができ、その応用はここに示す特定実施例に限定されないことがお判りであろう。
【００３３】
図１はシステム１００および本発明をその一実施例に従って実行できるその環境を示す。システム１００は中央処理置（ＣＰＵ）１１０およびプロセッサ１１０とシステム１００の他のさまざまなコンポーネント間で通信を可能にするバス１１１を含んでいる。ディスプレイアダプタ１１６および、ＣＲＴモニタまたはＬＣＤ画面等のディスプレイ装置１１８も典型的に使用される。データを保持し、格納し、かつ操作するために、システム１００は通常、ランダムアクセスメモリ（たとえば、ＲＡＭ）等のある形のメモリ１１２、および記憶装置１１４（たとえば、ハードドライブ）を利用する。
【００３４】
典型的に、システム１００はユーザインターフェイス装置（キーボード１２６、マウス１２７、その他の入力装置１２８等）がユーザ入力をシステム１００へ提供できるようにするユーザインターフェイスアダプタ１２４を含んでいる。ユーザ入力装置１２６，１２７，１２８はユーザがコマンドを出し、データを操作し、あるいはシステム１００とインターフェイスできるようにする。システムに入力を与えるためにユーザにより利用されるさまざまな入力装置１２６，１２７，１２８（まとめて「入力装置」と呼ばれる）はマウス、キーボード、トラックボール、タッチ画面、音声認識装置、またはユーザがシステム１００へ入力を与えられるようにする任意他の装置またはシステムにより構成することができる。
【００３５】
システム１００は、ネットワークやオンラインリソース１３２にアクセスするために、ワイヤレスまたはワイヤドネットワークアダプタまたはモデム等の通信装置１３０を介して他の装置やリソースと通信することもできる。システム１００は、たとえば、ローカルエリアネットワーク（ＬＡＮ）またはワイドエリアネットワーク（ＷＡＮ）内の他のコンピュータや装置とネットワークすることができる。当業者ならばお判りのように、システム１００は通信装置１３０を介してインターネットその他の通信システムに接続することができる。システム１００はパーソナルコンピュータ、ワークステーション、ラップトップまたはノートブックコンピュータ、パーソナルデジタルアシスタント、セルラー電話機、またはユーザ入力を許す他の装置のワイドアレイの１つとすることができる。事実、ユーザ入力を利用するグラフィカル・ユーザ・インターフェイス（ＧＵＩ）を有する任意の装置またはシステムが本発明のシステムおよび方法を使用することができる。
【００３６】
多くの最新のコンピューティング装置１００がグラフィカル・ユーザ・インターフェイス（ＧＵＩ）を利用している。このような装置１００には通常ディスプレイ装置１１８および装置１００により格納されたデータや情報をユーザが操作できるようにする１つ以上の入力装置１２６，１２７，１２８を備えている。このようなシステムにおいて、装置１００に格納されるデータおよび装置１００で実行されるプロセスはディスプレイ装置１１８上にグラフィック表示される。ユーザはさまざまな入力装置１２６，１２７，１２８を操作してグラフィック表示されたオブジェクトを変えかつインタラクトする。これらの装置１００上でユーザにより実施されるアクションは適切なユーザインターフェイスアダプタ１２４により受信される信号へ変換される。次に、アダプタ１２４はそれが受信する信号をコンピューティング装置１００により処理することができる適切なシステムメッセージへ変換する。受信信号によりコンピューティング装置１００はそれが保持するデータおよびプロセスを修正し、ユーザが抽象的データと視覚的かつ触覚的方法でインタラクトして修正できるようにする。
【００３７】
ここに開示されるシステムおよび方法はグラフィカル・ユーザ・インターフェイスを使用する多様な異なるタイプのコンピューティング装置１００と関連して実現することができる。たとえば、コンピューティング装置１００はパーソナルデータアシスト（ＰＤＡ）、ノートブックコンピュータ、デスクトップコンピュータ、サーバ、タブレットＰＣ、またはワイヤレスホーンとして実施することができる。
【００３８】
図２はディスプレイ装置１１８上に描くことができるグラフィカル・ユーザ・インターフェイス（ＧＵＩ）２００の一実施例を示す。描かれるグラフィカル・ユーザ・インターフェイス２００はデスクトップ２０１を含み、それはユーザが見ることのできるさまざまなグラフィカルオブジェクトを含むエリアである。デスクトップ２０１は異なるアプリケーション、プロセス、または機能をグラフィック表示するウインドウ２０２を含んでいる。デスクトップ２０１およびウインドウ２０２は随意釦２０３、メニュー２０４、メニューアイテム２０５、テキストフィールド２０６、アイテムリスト２０７、およびアイコン２０８等のグラフィカル・ユーザ・インターフェイス・オブジェクト（“ＧＩＵオブジェクト”）を含む。当業者ならば、図２に描かれたもの以外に多くの異なるタイプのＧＵＩオブジェクトがあることを理解できる。
【００３９】
グラフィカル・ユーザ・インターフェイス２００内にディスプレイされるオブジェクトはコンピューティング装置１００により維持されるまたは開始することができるアプリケーション、データ、機能、およびプロセスの単なる視覚表現である。コンピューティング装置１００はＧＵＩオブジェクトと関連付けられる実際のデータおよびプロセス間のリンクを維持する。そうするための一般的方法は、システムレベルであれアプリケーションレベルであれ、全アクティブＧＵＩオブジェクトのリストを維持し、ハンドル、リソース識別番号、その他の参照事項を介して関係するＧＵＩオブジェクトを実際のデータとリンクすることである。当業者ならば、ここに記述されたシステムおよび方法は、ワシントン州、レッドモンドのマイクロソフト社製Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）等の、現在入手可能な非常に多くのＧＵＩシステムと関連して実現できることは自明である。
【００４０】
後述するように、本発明の一実施例は特定のコンピュータプログラムをどのように操作するかをユーザに示すインタラクティブコンテンツを開発者が生成して配信できる機構を提供する。インタラクティブコンテンツはテキスト、サウンド、ビデオ、アニメーション、イメージ、等を内蔵してユーザに命令を与えることができる。ユーザが学習している実際のシミュレートされないコンピュータプログラムのＧＵＩオブジェクトとのインタラクトを介して、インタラクティブコンテンツは生じる、またはユーザが生じさせられる、インタラクティブアクションと結合することができる。「インタラクティブコンテンツ」および「インタラクティブアクション」はコンピュータプログラム内のユーザインターフェイスをエミュレートするコンピュータプログラムへ送られる命令を含むか、またはこのようなインタラクションを提供するようユーザに命令することができる。インタラクティブコンテンツおよびインタラクティブアクションを使用して、コンテンツ開発者はユーザのマウスカーソルを画面周りに動かし、メニューおよびリストから選択を行わせ、キーボードデータを特定のフィールドへ入力させ、利用可能な入力装置を使用してユーザが実施できる任意のアクションをエミュレートさせることができる。本発明の一実施例はコンピュータプログラム内でタスクのステップを実施する特定の入力を提供し、正確なユーザ入力を待ってからタスクの次のステップに関連する命令を与えるようユーザに命令する。本発明は発生している命令を促進するために必要とコンテンツ開発者が決定するシステムコマンド、プロセス、および機能を実行することもできる。たとえば、コンテンツ開発者はまだロードされていなければ本発明に特定のコンピュータプログラムをロードさせることができる。便宜上、コンテンツ開発者はそのコンピュータプログラムをユーザと同じプロセスを介してロードせず、単にアプリケーションをロードするコマンドを処理することを選択できる。
【００４１】
図３Ａは本発明の１実施例と共に動作するシステム３０１、すなわちコンピューティング装置、のブロック図３００である。例示されたシステム３０１はグラフィカル・ユーザ・インターフェイス３１０、およびさまざまな入力装置３３０を介してユーザ入力を受け入れる入力待ち行列３２０を含んでいる。一実施例では、本発明は入力装置３３０から受信した入力をモニタする入力モニタ３４３を含んでいる。
【００４２】
スクリプト３４４を使用して、本発明はシステム３０１で実行しているコンピュータプログラム３４６のＧＵＩオブジェクトへのユーザ入力をエミュレートする。シミュレートされたユーザ入力に応答して、コンピュータプログラム３４６はタスクのステップをコンピュータプログラム３４６内で実施する。コンピュータプログラム３４６上のシミュレートされた入力および／またはインタラクティブコンテンツを使用してタスクを実施することにより、本発明はコンピュータプログラム３４６自体内でどのようにタスクを実施するかをユーザに明瞭に示す。
【００４３】
代替実施例では、本発明はそのタスク自体を実施するのではなく、シミュレートされたユーザ入力および／またはインタラクティブコンテンツを使用してどのようにタスクを実施するかをユーザに示す。このような実施例では、入力モニタ３４３は適切なユーザ入力が受信されているかどうかを決定する。適切なユーザ入力が受信されておれば、ユーザはタスク内の次のステップを実施するよう命令される。一実施例では、不正確な入力が受信されると、修正命令がユーザへ提供される。
【００４４】
スクリプト３４４は１つ以上の「エンティティ」の一群（一括してエンティティマップ３４５と呼ばれる）へアクセスして（スクリプト３４４が定式化される時、実行時、または両方）特定のＧＵＩオブジェクトへシミュレートされたユーザ入力をどのように提供するかを決定する。図３Ａおよび３Ｂの両方に示すエンティティマップ３４５は特定のコンピュータプログラム３４６の少なくとも１つのＧＵＩオブジェクトをアクセスするためのプログラミング命令３４７を含んでいる。
【００４５】
図３Ｂに示すように、エンティティマップ３４５内の各アイテムは関係するＧＵＩオブジェクトにアクセスするためのプログラミング命令３４７に簡便に関連する名称３４９を随意含んでいる。たとえば、図３Ｂに示すように、特定のメニューまたはプログラムに対する「ＯＫ」釦はそれが配置されるプログラムやウインドウおよび釦のキャプションやコマンドＩＤの参照と共に名称“Ａｐｐ．Ｂｕｔｔｏｎｓ．ＯＫ”によりエンティティマップ３４５内で識別することができる。
【００４６】
エンティティマップ３４５内の命令３４７はシステム３０１がオブジェクトを捜し出しかつそうするためにシステム３０１により供給される機能および方法を介してオブジェクトへの参照またはハンドルを得るのに十分特定的である必要がある。一実施例では、本発明はオブジェクトのシステムハンドルその他の参照を捜し出すのに使用できるデータ符号化へのＧＵＩオブジェクトの低減に依存している。このハンドルまたは参照を得ることにより、システム３０１はスクリプト３４４が実行される時のＧＵＩオブジェクトの現在位置等のＧＵＩオブジェクトに関する情報を検索するために質問されることがある。
【００４７】
名称３４９の使用は随意でありエンティティマップ３４５の各実施例内で必要とはされない。しかしながら、一実施例では、名称３４９の使用により一組のスクリプトされたコマンドを使用する特定のＧＵＩオブジェクトのアクセスが簡単になる。言い換えれば、エンティティはプログラミング命令３４７ではなく名称３４９を参照してアクセスすることができる。
【００４８】
一実施例では、エンティティマップ３４５は異なるファイルとして格納される。しかしながら、当業者ならばエンティティマップ３４５は必ずしも個別のファイルではなく、インプリメントするコンピュータプログラム３４９と共にコンパイルすることができ、オンラインまたはネットワークリソースからデータストリームにより提供することができ、「その場で自動的に」生成してシステム３０１内のＧＵＩオブジェクトのリストを作るインプリメンテーションによりＲＡＭ内にだけ格納することさえできることがお判りであろう。事実、任意数の既知のプロセスおよび方法を利用して適切なエンティティマップ３４５を実現することができる。
【００４９】
図４はユーザ入力をエミュレートする命令を含むスクリプト３４４の処理方法の一実施例のフロー図４００である。開始するために４０１、一実施例では、スクリプト３４４が指示、コマンド、およびコメントへ解析される３４４。コマンドは実行中にスクリプト３４４により実施される機能であり、指示はスクリプト３４４を実行する準備である（たとえば、エンティティマップ３４５をスクリプト３４４にダイナミックにリンクする）。一実施例では、スクリプト３４４はヘッダーを含んでいる。ヘッダーはスクリプト３４４と関連してどのエンティティマップ３４５を使用すべきかを示す指示である。コメントは人間が読取可能なテキストでありスクリプト３４４の処理中は無視または廃棄される。
【００５０】
スクリプト３４４を解析４０５した後で、エンティティマップ３４５が処理されてメモリ４１０内にロードされ（図５−７と関連して後述する）、スクリプトコマンドが実行される４１５。スクリプトコマンドの実行に続いて、スクリプト３４４が終止される４２０。
【００５１】
スクリプト３４５の実行はさまざまな方法で実現することができる。たとえば、一実施例では、スクリプト３４４は一行毎に読み出すことができる。特定の行がどのエンティティマップ３４５にアクセスすべきかを示すことができる。スクリプト３４４の終に達するまでスクリプト３４４の各行が次々に実行される４１５。
【００５２】
もう１つの実施例では、スクリプト３４４はヘッダーを解析し４０５、エンティティマップ３４５を処理し、スクリプト３４４内に記載されたコマンドを実行するのに必要なコードを生成して処理される。次に、スクリプト３４４は実行可能なフォーマット（たとえば、．ＮＥＴアセンブリ）へコンパイルされ保存または実行することができる４１５。
【００５３】
当業者ならば、本発明の範囲内でスクリプト３４４の解析４０５、処理４１０、および実行４１５はいくつかの異なる方法で実現できることがお判りであろう。
【００５４】
図５は図４と関連してより一般的な用語で記述されるエンティティマップ３４５の処理方法４１０の一実施例をより詳細に説明するフロー図５００である。プロセスが開始されると５０１、エンティティマップ３４５を含むファイルが開かれ５０５次の行（第１の例では第１行）が読み出される５１０。
【００５５】
次に、スクリプト３４４の終りに達しているかどうか決定される５１５。ファイルの終りに達すると、プロセスは終止される５２０。
【００５６】
ファイルの終りにまだ達していなければ、関係する行／コマンドはエンティティ宣言５２５であるかどうか決定される５２５。エンティティ宣言であれば、エンティティが生成される５３０。このプロセスはスクリプト３４４内の各行に対して繰り返される。エンティティが生成された後で、それは関連付けられたＧＵＩオブジェクトへアクセスしてその情報を得るためにスクリプト３４４により使用される。
【００５７】
一実施例では、エンティティの生成はスクリプト３４４が実行される将来のある時点において具体化される（ｉｎｓｔａｎｔｉａｔｅｄ）クラス宣言の形をとることができる。あるいは、このプロセスはコマンドが実行されている時に将来使用するのに適切な方法で適切なオブジェクトを具体化し格納することを含むことができ、すぐに使用するオブジェクトの生成５３０を単純に含むこともできる。もう１つの実施例では、標準インターフェイスを実現するオブジェクトが具体化されオブジェクトをまとめて格納する。各オブジェクトは関係するエンティティに関連付けられるＧＵＩオブジェクトをそれが捜し出すのに必要な情報により具体化される。一実施例では、エンティティの収集はエンティティの名称に従って前後左右に動き回ることができる。
【００５８】
もう１つの実施例では、スクリプト３４４は実行可能なアセンブリへ変換される。このような実施例では、エンティティマップ３４５内の各エンティティはカスタムクラス宣言であり、アセンブリが実行される時に適切な名称のオブジェクトを具体化する一行のコードを加える。
【００５９】
ここでも、当業者ならば本発明の図５と関連して記述したプロセスは前記したもの以外の技術および方法を使用して実現できることがお判りであろう。
【００６０】
図６は図５においてより一般的な用語で記述されるエンティティを生成する方法５３０の一実施例をより詳細に説明するフロー図６００である。
【００６１】
前記したように、エンティティマップ３４５内のエンティティはＧＵＩオブジェクトにアクセスするのに使用される命令３４７を含んでいる。この命令は関連付けられるＧＵＩオブジェクトにアクセスするのに使用できる名称３４９にリンクすることができる。エンティティマップ３４５が処理される時に６０１、マップ３４５内の各エンティティは使用可能なフォーマットへ変換される。一実施例では、エンティティの基本的タイプ（たとえば、ウインドウ、釦、ツールバー、またはメニュータイプエンティティ）およびそのエンティティを捜し出すのに必要なパラメータ（たとえば、名称、親オブジェクト、クラス、等）が決定される６０５。一実施例では、次に、この情報は標準インターフェイスを実現する適切なクラスを選択し、エンティティに対する特定情報６１０によりそのクラスを具体化するのに使用される。その後、エンティティ生成プロセスは終止される６２０。
【００６２】
再び、当業者ならば前記したエンティティ生成プロセスは本発明の範囲内でエンティティを生成するいくつかの異なる方法の中の一例にすぎないことがお判りであろう。
【００６３】
図７は図６においてより一般的な用語で記述されるエンティティを生成する方法の一実施例をより詳細に説明するフロー図７００である。エンティティ生成プロセス７０１が開始された後で、生成されるエンティティはウインドウタイプであるかどうかが決定される７１０。そうであれば、ウインドウエンティティが生成される７１５。
【００６４】
生成されるエンティティがウインドウエンティティでなければ、生成されるエンティティは釦タイプであるかどうかが決定される７２０。そうであれば、釦エンティティが生成される７２５。
【００６５】
生成されるエンティティがウインドウタイプでも釦タイプでもなければ、それがメニュータイプエンティティであるかどうかが決定される７３０。そうであれば、メニューエンティティが生成される７３５。
【００６６】
例示された実施例では、次に、エンティティ生成プロセスが終止される７４０。当業者ならばこの方法はいくつかの異なる方法で実施できることがお判りであろう。たとえば、他の実施例では、適切であれば図７に示す以外のタイプのエンティティを考慮し生成することができる。
【００６７】
図８はＧＵＩオブジェクトに対する適切なシステム・リソース・ハンドルすなわち参照を得る方法の一実施例を示すフロー図８００である。このプロセスが開始すると８０１、エンティティマップ３４５内の適切なエンティティが見つけられる８０５。エンティティの探索は、たとえば、図３Ｂに示すエンティティマップ３４５内のエンティティにアクセスする特定の命令３４７に関連付けられた名称３４９を捜し出すことにより実施することができる。
【００６８】
次に、捜し出される所望ＧＵＩオブジェクトに対する命令３４７が検索される８１０。次に、ＧＵＩオブジェクトに対してシステム３０１が維持するリソースハンドルまたは他の参照を得るために、システム３０１により提供されるルールおよび手順に従って、システム３０１（図３Ａに示す）が質問される８１５（たとえば、システム３０１により使用されるオペレーティングシステムを質問することにより）。次に、プロセスが完了し、参照を使用して関係するＧＵＩオブジェクトについてタスクを実施できるように、それが得ている参照を要求したプロセスへ戻す８２０。
【００６９】
図９は本発明の一実施例に従ってスクリプト３４４内の個別のコマンドを実行する方法のフロー図９００である。プロセスが開始されると９０１、コマンドが識別される９０５。一般的に、識別されるコマンドはスクリプト３４４内の次の逐次コマンドである。
【００７０】
各コマンドは手順が実施されるプログラミングオブジェクト、アクセスまたは実施されるオブジェクトの機能／属性、および機能／属性に対する関係するパラメータを含むことができる。したがって、第１のステップはプログラミングオブジェクトを得ることである９１０。次に、オブジェクトの機能／属性が得られる９１５。その後、コマンド内にパラメータがあれば、それを得ることができる９２０。
【００７１】
次に、パラメータはエンティティに関係するかどうか決定される９２５。関係すれば、エンティティを使用してハンドル、リソース識別番号、関係するエンティティに対するその他の参照が得られる９３０。これらのステップに続いて、コマンドが実行される９４０。もちろん、エンティティが参照されなければ、ハンドル、リソース識別番号、または関係するエンティティに対するその他の参照を得ることなくコマンドを実行することができる９４０。
【００７２】
その後、個別のコマンドの実行が終止され９４５前記した手順に従ってもう１つのコマンドを実行することができ、あるいはスクリプト３４４の終りに達していればスクリプトを終止することができる。ここでも、当業者ならば前記した方法以外の本発明の範囲内に入るさまざまな方法でスクリプト３４４を実行できることがお判りであろう。
【００７３】
図１０は本発明の一実施例に従ってＧＵＩオブジェクトへのマウスポインタに特定のコマンド（たとえば、Ｍｏｕｓｅ．Ｍｏｖｅ）を実行する方法のフロー図１０００である。図１０のフロー図はコマンドを実行する特定のインプリメンテーションを示し、それは図９により一般的に例示されている。図１０の目的に対して、例示するＭｏｕｓｅ．Ｍｏｖｅコマンドは特定のＧＵＩオブジェクトに対するエンティティ名３４９（たとえば、Ａｐｐ．Ｂｕｔｔｏｎｓ．ＯＫ）を受け取り、次に、マウスポインタをそのオブジェクトへ動かす。
【００７４】
プロセスが開始されると１００１、コマンド“Ｍｏｕｓｅ．Ｍｏｖｅ（Ａｐｐ．Ｂｕｔｔｏｎｓ．ＯＫ）”を最初に識別しなければならない１００５。次に、オブジェクト“Ｍｏｕｓｅ”が得られる１０１０。次に、オブジェクトの機能／属性，“Ｍｏｖｅ”，が得られる１０１５。その後、パラメータ，“Ａｐｐ．Ｂｕｔｔｏｎｓ．ＯＫ”を得ることができる１０２０。
【００７５】
次に、パラメータは特定のエンティティに関係することが決定される１０２５。パラメータが特定のエンティティに関係するため、ハンドル、リソース識別番号、または関係するエンティティに対する他の参照が得られる１０３０。
【００７６】
エンティティはハンドル、リソース識別番号、または関係するＧＵＩオブジェクトに対する他の参照（たとえば、“ＯＫ”釦）を得、次に、システム３０１（図３Ａに示す）に質問して１０３５、ＧＵＩオブジェクトの画面座標を決定するのに使用することができる。その後、コマンドが実行されエンティティにより参照される特定のＧＵＩオブジェクトへマウスポインタを動かす１０４０。その後、関係するコマンドの実行が終わる１０４５。
【００７７】
前記プロセスによりスクリプトされたアクションはユーザの現在のＧＵＩオブジェクト構成に無関係に働くことができる。たとえば、前記した釦に関係するスクリプト３４４はグラフィカル・ユーザ・インターフェイス内の釦の位置に無関係にマウスカーソルを釦へ動かす。これはスクリプト３４４が釦のハードコード座標を含まずエンティティマップ３４５を介した釦への参照を含むためである。コンテンツはグラフィカル・ユーザ・インターフェイス内の固定場所の替わりに実際のＧＵＩオブジェクトを記述できるため、これによりインタラクティブコンテンツの生成において大きな柔軟性および信頼性が生成される。ユーザが特定のＧＵＩオブジェクトを動かすかあるいは異なる画面解像度でコンピュータプログラム３４６（図３Ａに示す）を実行していると、グラフィカル・ユーザ・インターフェイス内の固定場所を識別してＧＵＩオブジェクトを活性化させてもＧＵＩオブジェクトを確実に選択またはアクセスしないことがあるためこれは重要である。
【００７８】
エンティティマップ３４５はスクリプト３４４がコンピュータプログラム３４６の異なるバージョンで正しく動作するようにすることもできる。本発明を使用して、単一スクリプト３４４がコンピュータプログラム３４６の２つの完全に異なるバージョンに対して有効となることができた。たとえば、ワープロコンピュータプログラム３４６のバージョン１内のプリント機能へアクセスするメニューアイテムがファイルプルダウンメニューの下に存在することがある。しかしながら、同じコンピュータプログラム３４６のバージョン２では、メニューアイテムはアクションプルダウンメニューの下に存在することがある。マウスをプリントメニューＧＵＩオブジェクトへ動かしその上でクリックして対応するコマンドを活性化されるスクリプト３４４は、対応するバージョンに対する適切なエンティティマップ３４５が供給されるとコンピュータプログラム３４６の両方のバージョンに対して有効となる。バージョン１に対して実行されると、スクリプト３４４はコンピュータプログラム３４６のバージョンに対してエンティティマップ３４５を使用しファイルメニューの下のプリントメニューアイテムを見つける。同じスクリプト３４４がバージョン２に対して実行されると、それはコンピュータプログラム３４６の新しいバージョンに対してエンティティマップ３４５を使用しアクションメニューの下のプリントメニューＧＵＩオブジェクトを捜し出す。
【００７９】
本発明は、一実施例において、全ユーザ入力を阻止、フィルタリング、またはモニタするシステム入力装置３３０にフックを押し付けることもできる。これは、たとえば、ユーザが実施されているタスクを中断するのを防止したり現在のスクリプト３４４または処理されているワークフローにより説明されるパラメータの元で許されないシステム３０１へユーザが入力を送るのを防止するために行うことができる。これらのフックの生成は、たとえば、入力モニタ３４３（図３Ａにも示す）を使用して発明自体をシステムの基本的入力待ち行列（図３Ａに示す）へ押し付けて行われる。この押し付けはこのような入力フックを遂行するためシステム３０１により記載された機能および手順に従って行われる。
【００８０】
本発明の図示する例は、ある入力しか許さない入力フィルタの確立のためだけでなく、全ユーザ入力を阻止または許すために、必要に応じて、これらのフックをインストールおよびアンインストールする能力を提供する。たとえば、ワークフローを介して本発明により案内されるユーザはツールバーから特定のアイテムを選択するよう命令することができる。本発明はユーザがマウスカーソルをグラフィカル・ユーザ・インターフェイス２００（図２に示す）上のどこへでも動かせるようにできるが、ツールバーアイテム上のマウスクリック以外の全てのマウスクリックを無視する。図３に示すように、入力モニタ３４３はシステム入力待ち行列３２０の前にユーザ入力を捕捉するが、本発明は現在の状況下で入力が許されるか検証することができる。
【００８１】
図１１はユーザ入力をフィルタリングするプロセスの一実施例のフロー図を示す。プロセスが開始されると１１０１、エンティティがフィルタとして登録され１１０５、ＧＵＩオブジェクトおよび所望のユーザ入力タイプに合うように特注されたフィルタを活性化させる。次に、ユーザ入力が受信されているかどうか決定される１１１０。入力が受信されると、エンティティマップ３４５を使用してフィルタとして登録されたオブジェクトへのハンドルすなわち参照が得られる１１２０。次に、システム３０１（図３Ａに示す）が質問されて１１２５、ＧＵＩオブジェクトの座標および境界したがって受け入れられるユーザ入力の座標および境界を決定する。
【００８２】
次に、受信したユーザ入力がエンティティにより設定されたパラメータ内に入るかどうか決定される１１３０。ユーザ入力が不正確であれば入力は無視され１１３５、ユーザ入力がもう一度モニタされる１１１０。ユーザ入力が不正確であれば、入力により生成された信号は入力待ち行列３２０（図３Ａに示す）へ送られ１１４０、この手順が終止する１１５０。
【００８３】
ユーザが適切なエリアをクリックするかあるいは他の適切なユーザ入力を提供すると、スクリプト３４４内の次のコマンドが実行される。これらのフィルタを一続きに配列すると、本発明はユーザをワークフローを介してコンピュータプログラム３４６（図３Ａに示す）内の特定タスクの特定ステップを遂行するように案内することができる。
【００８４】
当業者ならば入力をモニタしフィルタリングする能力は、ユーザ入力の記録および検証を含む、多様な方法で使用できることがお判りであろう。一実施例では不正確および正確なユーザ入力の頻度を決定することによりユーザの知識および技能をテストまたは評価することができる。もう１つの代替策はユーザの入力を追跡してユーザが割当てられたデューティに関係する機能を実施している、あるいはポリシーまたは標準に従って機能を実施していることを検証する。
【００８５】
図１２Ａ−１２Ｅは本発明に従ったスクリプト３４４（図３Ａに示す）の一実施例の実行を示す画面１２００ａ−ｅである。例示する実施例では、ユーザが命令されるコンピュータプログラム３４６（図３Ａに示す）はワシントン州レッドモンドのマイクロソフト社製Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｏｒｄである。例示する実施例は単なる例にすぎず本発明を限定するものではない。本発明はグラフィカル・ユーザ・インターフェイスおよび適切なオペレーティングシステムを有する実質的に任意のコンピュータプログラム３４６によりスクリプト３４６を生成するのに使用することができ、スクリプト３４６を生成し実行してコンピュータプログラム３４６のほとんどどんな機能でも実施するのに使用することができる。
【００８６】
図１２Ａには第１の画面１２００ａが示されている。この画面１２００ａにおいて、関係するスクリプト３４４が開始されている。スクリプト３４４はコンピュータプログラム３４６内でどのようにタスク（ここでは、組織図を生成する）を実施するかをユーザに示すステップ・バイ・ステップ命令を提供する。スクリプト３４４により第１の部分的グラフィカル・オーバレイ１２０１がコンピュータプログラム３４６の実際のシミュレートされないグラフィカル・ユーザ・インターフェイス１２０３の上にディスプレイされる。第１の部分的グラフィカル・オーバレイ１２０１はコンピュータプログラム３４６のグラフィカル・ユーザ・インターフェイス１２０３の一部だけを覆って、ユーザはまだコンピュータプログラム３４６のグラフィカル・ユーザ・インターフェイス１２０３の残りを見て部分的グラフィカル・オーバレイ１２０１により示されるプログラム３４６とインタラクトできるようにされる。
【００８７】
図１２Ａに示す部分的グラフィカル・オーバレイ１２０１は「インサートメニューをクリックする」ようユーザに示す。一実施例では、インサートメニュー１２０５のクリックはユーザに対して、あるいは、ユーザにより実施することができる。このステップがユーザにより実施される場合には、ユーザがインサートメニュー１２０５上でクリックするまでタスクの次のステップはディスプレイされない。
【００８８】
前記したように、一実施例では、ユーザの技能レベルを決定するユーザ入力のログが保持される。たとえば、提供されるユーザ入力が頻繁に不正確であれば、これはユーザが追加訓練を必要とすることを示す。これらのログは記憶装置１１４上またはメモリ１１２（図１に示す）内に保存して後にユーザの技能レベルを決定し特定ユーザの技能レベルが向上しているか、停滞しているか、低下しているかを決定することができる。一実施例では、不正確なユーザ入力はコンピュータプログラム３４６に達するのを防止され、コンピュータプログラム３４６の状態を変えたり影響を及ぼしたりすることがない。
【００８９】
第１の部分的グラフィカル・オーバレイ１２０１はコンピュータプログラム３４６のソースコードの任意の修正、または任意他のタイプの修正を行わずにグラフィカル・ユーザ・インターフェイス１２０５の位置に無関係に関連付けられたグラフィカル・ユーザ・インターフェイス・オブジェクト１２０５（インサートメニュー１２０５）に隣接配置される。図示するように、部分的グラフィカル・オーバレイ１２０１はインサートメニュー１２０５に隣接配置されそれを指示する。一実施例では、本発明はコンピュータプログラム３４６を実行しているシステム３０１（図３Ａに示す）に質問して問題であるグラフィカル・ユーザ・インターフェイス・オブジェクト１２０５の場所をエンティティマップ３４５を使用して決定する。グラフィカル・ユーザ・インターフェイス・オブジェクト１２０５の場所が決定されると、部分的グラフィカル・オーバレイ１２０１を適切なグラフィカル・ユーザ・オブジェクト１２０５に隣接配置することができる。
【００９０】
図１２Ｂにタスクの第２のステップを例示する画面１２００ｂが示されている。前記したように、タスクの第１のステップはユーザに対してまたはユーザにより実施されている。したがって、インサートメニュー１２０５の活性化に関連付けられるドロップダウンメニュー１２０７がディスプレイされる。第２の部分的グラフィカル・オーバレイ１２０９（タスクの第２のステップに対応する）がディスプレイされ、インサートメニュー１２０５上でのクリックオンにより活性化されるドロップダウンメニュー上の“Ｄｉａｇｒａｍ．．．”メニューアイテム１２１１に隣接配置される。このステップのこの部分的グラフィカル・オーバレイ１２０９はユーザに「Ｄｉａｇｒａｍ．．．メニューアイテムをクリックする」よう示す。
【００９１】
図１２Ｃに修正命令１２０８の一実施例を例示する画面１２００ｃを示す。この例の目的のために、図１２Ｃに例示する修正命令１２０８は第２の部分的グラフィカル・オーバレイ１２０９（図１２Ｂに示す）に応答して提供される不正確な入力に応答して示される。たとえば、ユーザが「ピクチュア」メニューアイテム１２１３（ダイアグラムメニューアイテム１２１１ではなく）をクリックすると、例示された修正命令１２０８を提供することができる。例示された修正命令１２０８はマウス入力装置のグラフィカル表現であり、左マウスボタンがハイライトされて“Ｄｉａｇｒａｍ．．．”メニューアイテム１２１１を選択するための適切な技術をユーザに表示することを示す。もちろん、警告音、アニメーションを使用する命令、ビデオ命令、または本発明の範囲内の音声説明等の他のタイプの修正命令を提供することができる。
【００９２】
図１２Ｄにタスクの第３ステップの画面１２００ｄが例示されている。第３の部分的グラフィカル・オーバレイ１２１５が組織図に関連付けられたＧＵＩオブジェクト１２１７に配置され、そのＧＵＩオブジェクト１２１７を選択するようユーザに表示する。
【００９３】
図１２Ｅにタスクの第４ステップの画面１２００ｅが例示されている。第４の部分的グラフィカル・オーバレイ１２１９が例示されたＯＫ釦に関連付けられたＧＵＩオブジェクト１２１９に隣接配置され、その釦１２１９を選択してコンピュータプログラム３４６内で組織図を生成するタスクを完了するようユーザに表示する。
【００９４】
一実施例では、エンティティマップ３４５（図３Ａに示す）および／またはスクリプト３４４（図３Ａに示す）は１つ以上のＧＵＩオブジェクトをダイナミックに参照して、スクリプト３４４が実行される時にテキスト１２１９が部分的グラフィカル・オーバレイ１２１８内にディスプレイされることを決定する。このような手順は単一スクリプト３４４でコンピュータプログラム３４６（図３Ａに示す）により使用される言語（たとえば、英語、スペイン語、または仏語）で部分的グラフィカル・オーバレイ１２１８内にテキスト１２１９をディスプレイするのに使用できる点で相当な利点を提供する。したがって、スクリプト３４４が書かれた言語以外の言語のテキスト１２１９を使用するコンピュータプログラム３４６と関連してスクリプト３４４をリライトして使用する必要がない。
【００９５】
図１３にスクリプト３４４の記録に続くユーザ出力を例示するグラフィカル・ユーザ・インターフェイス１３０１の画面１３００が示されている。一実施例では、本発明の記録コンポーネントがアクティブである間にコンピュータプログラム３４６内でスクリプト３４４のステップを実施することによりスクリプト３４４を定式化することができる。例示されたユーザ出力はこのような記録プロセス中に生成されたスクリプト３４４のステップを示す。特に、ユーザ出力は図１２Ａ−１２Ｅに示すスクリプト３４４のステップを例示している。図示するように、タスクのステップはスクリプト３４４により実施されない。替わりに、スクリプト３４４は正確なユーザ入力を待った後で、たとえば、スクリプトステップ１３０３「ユーザがインサートメニューをクリックするのを待つ」によりタスクの次のステップへ進む。
【００９６】
図１４にスクリプト３４４の実行と関連して使用されるビデオ出力１４０１の画面１４００が示されている。本発明のスクリプト３４４は用途が広く部分的グラフィカル・オーバレイだけでなくビデオおよびオーディオ出力を含んでユーザが特定のコンピュータプログラム３４６（図３Ａに示す）をどのように使用するかを学習するのを助ける。本発明の融通性により特定のユーザまたはユーザのグループに対してカスタマイズされたインタラクティブコンテンツを生成することが簡単になる。
【００９７】
図１５にコンピュータプログラム３４６内でタスクを実施することを人に教える方法の一実施例を例示するフロー図１５００が示されている。この方法はいくつかの異なるやり方で実現することができる。たとえば、この方法はコンパクトディスク、またはＤＶＤ、または、たとえば、インターネットやローカルエリアネットワーク（ＬＡＮ）を使用してソフトウェアをダウンロードすることにより伝達媒体内に表現されるデータ信号等のコンピュータ読取可能媒体上に分散されるソフトウェアを使用して実現することができる。この方法を実現するソフトウェアも埋込システムの一部のようなハードコード方式で分散させることができ、あるいはコンピュータシステムと共にハードドライブ１１４上に格納することができる。
【００９８】
エンティティマップ３４５が生成される１５０１。前記したように、エンティティマップはコンピュータプログラム３４６の特定のＧＵＩオブジェクトをアクセスするプログラミング命令３４７を含んでいる。エンティティマップ３４５は、さらに、プログラミング命令３４７へのアクセスを単純化するために各プログラミング命令３４７に関連付けられた名称３４９を含むことができる。エンティティマップ３４５はマニュアルに、または特定のコンピュータプログラム３４６に関連付けられたＧＵＩオブジェクトの解析により自動的に、または自動化およびマニュアル手順の組合せを使用して生成することができる。エンティティマップ３４５はスクリプト３４４の定式化および実行中に使用することができる。
【００９９】
前記したように、エンティティマップ３４５はここに開示されたシステムおよび方法の使用において大きな柔軟性を提供する。たとえば、一実施例では、コンピュータプログラム３４６の適切なバージョンに関連付けられたエンティティマップ３４５へのスクリプト３４４を参照することによりスクリプトはコンピュータプログラム３４６の古いバージョンと新しいバージョンの両方で使用することができる。
【０１００】
次に、エンティティマップ３４５を参照してスクリプト３４４が定式化される。定式化プロセス中に、エンティティマップ３４５を使用してタスクのステップを実施するために特定のＧＵＩオブジェクトをどのようにアクセスして捜し出すかを決定することができる。一実施例では、個別のプログラミング命令３４７はエンティティマップ３４５からのスクリプト３４４に直接内蔵する（ハードコード）ことができる。別の実施例では、エンティティマップ３４５は特定のスクリプト３４４によりダイナミックにまたはスタティックに参照することができる。エンティティマップ３４５のダイナミック参照により、コンピュータプログラム３４６の新しいバージョンに適応されたエンティティマップ３４５の生成によりスクリプト３４４がコンピュータプログラム３４６の新しいバージョンで実行される時に、特定スクリプト３４４の適応が可能となる。一実施例では、実行時にスクリプト３４４はコンピュータプログラム３４６のどのバージョンが実行されているかを決定し適切なエンティティマップ３４５を参照してスクリプト３４４を適切に実行することができる。
【０１０１】
スクリプト３４４の定式化に続いて、スクリプト３４４が実行される１５１０。スクリプト３４４はエンティティマップ３４５からの異なるファイルとすることができ、あるいはエンティティマップ３４５に内蔵することができる。スクリプト３４４の実行中に、前記したように、スクリプト３４４はコンピュータプログラム３４６内でタスクをどのように実施するかをユーザに示す。これは部分的グラフィカル・オーバレイ（たとえば、図１２Ａに示す部分的グラフィカル・オーバレイ１２０１）または他のタイプの命令を含むことができるタスクをユーザに対して実施することにより、あるいはステップ自体は実施せずにタスクをどのように実施するかをユーザに示すことにより行うことができる。前記したように、エンティティマップ３４５からの命令３４７はスクリプト３４４に内蔵することができ、あるいは、エンティティマップ３４５はスクリプト３４４によりダイナミックにまたはスタティックに参照することができる。
【０１０２】
スクリプト３４４の実行中に、部分的グラフィカル・オーバレイがディスプレイされる１５１５。部分的グラフィカル・オーバレイはコンピュータプログラム３４６の実際のシミュレートされないグラフィカル・ユーザ・インターフェイスの上に直接ディスプレイされる。各部分的グラフィカル・オーバレイはコンピュータプログラム３４６にタスクのステップを実施させる入力を与えるようユーザに視覚的に表示する。一実施例では、ユーザに対してステップが実施されると、次のステップが実施される前にユーザはディスプレイされた部分的グラフィカル・オーバレイを見直すのに十分な時間を有するような速度で各部分的グラフィカル・オーバレイがディスプレイされる。あるいは、各部分的グラフィカル・オーバレイはユーザが表示されたステップを実施するまでディスプレイされる。
【０１０３】
部分的グラフィカル・オーバレイはコンピュータプログラム３４６の関連付けられたグラフィカル・ユーザ・インターフェイス・オブジェクトへどのように入力を与えるかを示すテキスト、グラフィクス、アニメーション、またはビデオを含むことができる。部分的グラフィカル・オーバレイはコンピュータプログラム３４６のユーザインターフェイスの一部だけを覆い隠して、タスクのステップを実施する入力を向けなければならない関係するグラフィカル・ユーザ・インターフェイス・オブジェクトをユーザがまだ見れるようにする。
【０１０４】
さらに、スクリプト３４４の実行中に、部分的グラフィカル・オーバレイは関連付けられたグラフィカル・ユーザ・インターフェイス・オブジェクトに隣接配置される１５２０。この位置決めはコンピュータプログラム３４６のソースコードになんら修正を加えることなくグラフィカル・ユーザ・インターフェイス・オブジェクトの位置に無関係に行われる。前記したように、これは使用中のシステム３０１に質問して実行時のグラフィカル・ユーザ・インターフェイス・オブジェクトの場所を決定し、次に、部分的グラフィカル・オーバレイを適切に位置決めして行うことができる。この機能の結果、コンピュータプログラム３４６上のＧＵＩオブジェクトの構成に無関係にユーザは直接プログラム自体とインタラクトすることができる。したがって、グラフィカル・ユーザ・インターフェイス・オブジェクトのユーザカスタマイゼーションはこの方法の遂行を中断させない。さらに、ユーザがタスクを実施する構成においてユーザはコンピュータプログラム３４６とインタラクトするため、ユーザは一層容易にタスクの実施を学習することができる、すなわち、ユーザはコンピュータプログラム３４６内のＧＵＩオブジェクトの異なる位置により混乱することがない。
【０１０５】
スクリプト３４４実行中のユーザ入力は随意モニタされる１５２５。これは、たとえば、図３Ａと関連して説明したように入力モニタ３４３を使用して実現することができる。ユーザ入力のモニタリングは特定ユーザの技能レベルを決定するのに有用である。
【０１０６】
一実施例では、不正確な入力はソフトウェア３４６により受信されるのを防止される。これは、たとえば、図１１と関連して説明したユーザ入力のフィルタリング方法を使用して達成することができる。
【０１０７】
もう１つの実施例では、スクリプト３４４の実行中に不正確なユーザ入力を提出するユーザには修正命令が提供される。修正命令は図１２Ｃに示す修正命令１２０８、またはオーディオ、ビデオ、またはアニメーション等のいくつかの異なる方法で実施することができる。
【０１０８】
図１６はコンピュータプログラム３４６内でタスクのステップをどのように実施するかを人に教えるシステム１６００の論理的コンポーネントのブロック図である。図示された論理的コンポーネントは図１および３に示す１つ以上の物理的コンポーネントを使用して実現することができる。さらに、または替わりに、さまざまな論理的コンポーネントをメモリ１１２および／または記憶装置１１４内に格納されるソフトウェアモジュールとして実現してＣＰＵ１１０により実行することができる。もちろん、論理的コンポーネントはソフトウェアおよびハードウェアの組合せとして実現することができる。ソフトウェアとして実現される場合、各コンポーネントは独立にまたは他のソフトウェアまたはハードウェアコンポーネントと共に動作することができる１つ以上の個別または共通使用ソフトウェアモジュールを含むことができる。システム１６００は必ずしも単一ソフトウェアパッケージを含まず、多数の個別ソフトウェアパッケージを含むことができる。
【０１０９】
システムはエンティティマップ３４５ａを参照してスクリプト３４４を定式化するスクリプト情報コンポーネント１６０５を含むことができる。前記したように、エンティティマップ３４５ａはコンピュータプログラム３４６内のＧＵＩオブジェクトにアクセスするプログラミング命令３４７を含んでいる。スクリプト定式化コンポーネント１６０５はエンティティマップ３４５ａにアクセスして、どの名称３４９またはプログラミング命令３４７をスクリプト３４４内に含めるまたは参照するか決定してコンピュータプログラム３４６内の特定のＧＵＩオブジェクトにアクセスする。名称３４９またはプログラミング命令３４７はスクリプト３４４内でも使用してタスクのステップを実施するために特定のＧＵＩオブジェクトの場所を決定することができる。前記したように、エンティティマップの新しいバージョン３４５ｂを使用してコンピュータソフトウェア３４６の新しいバージョンでスクリプト３４４を実行することができる。
【０１１０】
一実施例では、記録コンポーネント１６１０がスクリプト定式化コンポーネント１６０５により使用されてスクリプト３４４を定式化する。記録コンポーネント１６１０がアクティブである間に、コンピュータプログラム３４６に向けられるユーザ入力は捕捉され後で実行するために記録される。記録コンポーネント１６１０の使用によりスクリプト定式化が単純化される。多くの異なるタイプのスクリプト３４４をコンピュータプログラム３４６のプログラミング手順の知識が乏しくてもまたは無くても定式化することができる。ステップを実施して記録するだけで、ステップをスクリプト３４４内に捕捉して後で実行することができる。一実施例では、オーバレイ内に命令を含む部分的グラフィカル・オーバレイ（たとえば、図１２Ａに示すような部分的グラフィカル・オーバレイ１２０１）が記録プロセス中に自動的に生成される。
【０１１１】
スクリプト３４４の定式化に続いて、スクリプト実行コンポーネント１６１５によりスクリプト３４４を実行することができる。スクリプト実行コンポーネント１６１５はディスプレイコンポーネント１６２０、位置決めコンポーネント１６２５を含み、随意入力モニタリングコンポーネント１６３０および修正命令コンポーネント１６３５を含むことができる。
【０１１２】
実行中に、ディスプレイコンポーネント１６２０はコンピュータプログラム３４６の実際のシミュレートされないグラフィカル・ユーザ・インターフェイスの上に直接少なくとも１つの部分的グラフィカル・オーバレイをディスプレイする。各部分的グラフィカル・オーバレイは関連付けられたグラフィカル・ユーザ・インターフェイス・オブジェクトに入力を与えてコンピュータプログラム３４６にタスクのステップを実施させることをユーザに視覚的に表示する。一実施例では、実行コンポーネント１６１５もユーザに対するタスクのステップを実施することができる。
【０１１３】
位置決めコンポーネント１６２５はコンピュータプログラム３４６のソースコードをなんら修正することなくグラフィカル・ユーザ・インターフェイス・オブジェクトの位置に無関係に部分的グラフィカル・オーバレイを関連付けられたグラフィカル・ユーザ・インターフェイス・オブジェクトに隣接配置する。前記したように、ここに開示されたシステムおよび方法はグラフィカル・ユーザ・インターフェイス・オブジェクトおよび、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムで動作するコンピュータプログラム３４６等の、これらのオブジェクトにアクセスする適切な機能を有する任意のコンピュータプログラム３４６と関連して使用できるため、これは重要な利点である。
【０１１４】
一実施例では、入力モニタリングコンポーネント１６３０を使用してユーザから受信した入力をモニタすることができる。このコンポーネント１６３０は、たとえば、図３Ａに例示された入力モニタ３４３を含むことができる。ユーザ入力はコンピュータプログラム３４６に達する前、さらには、システム入力待ち行列３２０（図３Ａに示す）の前に捕捉することができる。図１２の方法と関連して説明したように、入力モニタリングコンポーネント１６３０は不正確なユーザ入力をフィルタリングまたは阻止することもできる。
【０１１５】
本発明の一実施例は修正命令コンポーネント１６３５を含んでいる。修正命令コンポーネント１６３５は入力モニタリングコンポーネント１６３０と通信して受信したユーザ入力を確かめる。受信したユーザ入力が不正確であれば、修正命令コンポーネント１６３５は修正命令（たとえば、図１２Ｃに示す修正命令１２０８）をユーザに与えて受信すべき適切なタイプの入力を示すとができる。
【０１１６】
前記したように、ここに記述されているプロセスはマルチメディアオブジェクトをディスプレイし関連付ける既知の方法と混合することができる。限定はしないが、このようなオブジェクトはビデオ、アニメーション、サウンド、テキスト、ＨＴＭＬ、およびイメージを含むことができる。このようなマルチメディアオブジェクトをここに記述されているインタラクティブケイパビリティと結合することにより、従来技術で必要な費用や労力を必要とせずにソフトウェアプロダクトに対する有効なインタラクティブ訓練を提供できるソフトウェアアプリケーションを生成することができる。
【０１１７】
前記した構成はここに例示した発明の原理の応用を示すにかぎないことが理解される。しかしながら、本発明はその精神および本質的性質から逸脱することなく他の特定の形式で実施することができる。記述された実施例はあらゆる面において例示するためのものであって制約的意味合いはない。したがって、発明の範囲は前記した説明ではなく添付特許請求の範囲により示される。特許請求の範囲と等価の意味および範囲内に入る全ての変更はそれらの範囲内に入る。
【０１１８】
たとえば、前記した機能および能力の他に、本発明は他の多様な応用において使用するように適応することができる。本発明の一実施例では、ＧＵＩオブジェクトとインタラクトするその能力を使用してソフトウェアアプリケーションの適切な機能性をテストおよび検証してからエンドユーザにリリースすることができる。もう１つの実施例では、本発明により不具者や身体障害者に対するタスクを自動化することができる。本発明により考えられる更なる可能性は、技術的サポートプロバイダから、または自動化されたサポートアプリケーションを介したインターネットを経由してユーザに提供されるスクリプト等の多様な手段を介してソフトウェアエンドユーザに対する技術的およびワークフローサポートを提供することである。
【０１１９】
前記したように、本発明はＬＭＳ／ＬＣＭＳ、対象アプリケーションと共に、ブラウザその他のアプリケーションを介して、またはそれ自体のプロセスおよびメモリスペース内で動作することができる。これは本発明またはインターネットを介して、ファイルシステムを介して、または学習またはヘルプシステムにより送り出されるそのコンテンツを含んでいる。
【０１２０】
したがって、現在本発明の最も実際的で好ましい実施例と考えられるものに関して本発明を十分かつ詳細に説明してきたが、当業者ならば、限定はしないが、サイズ、材料、形状、形式、機能および動作方法、組立ておよび使用方法を含む非常に多くの修正を特許請求の範囲に記載された原理および概念を逸脱せずに行うことができる。
【図面の簡単な説明】
【０１２１】
【図１】本発明を実施できるシステムおよびその環境の一実施例のブロック図である。
【図２】本発明を使用できるグラフィカル・ユーザ・インターフェイス（ＧＵＩ）の一実施例を示す図である。
【図３Ａ】本発明の一実施例に従って本発明と共に動作するシステムのブロック図である。
【図３Ｂ】本発明の一実施例と共に使用される概念的エンティティマップの一実施例を示す図である。
【図４】ユーザ入力をエミュレートする命令を含むスクリプトを処理するのに使用される方法の一実施例のフロー図である。
【図５】エンティティマップを処理する方法の一実施例を示すフロー図である。
【図６】エンティティを生成する方法の一実施例を示すフロー図である。
【図７】異なるタイプのエンティティを生成する方法の一実施例を示すフロー図である。
【図８】エンティティに対する適切なシステム・リソース・ハンドルを得る方法の一実施例を示すフロー図である。
【図９】スクリプトコマンドを実行するプロセスの一実施例を示すフロー図である。
【図１０】スクリプトを実行してマウスポインタをコンピュータプログラムのユーザ・インターフェイス・オブジェクトへ動かす方法の一実施例を示すフロー図である。
【図１１】スクリプトの実行中にユーザ入力をフィルタリングまたは阻止する一実施例の方法を示すフロー図である。
【図１２Ａ】本発明の一実施例を使用するコンピュータプログラム内でタスクを実施するステップを示す画面である。
【図１２Ｂ】本発明の一実施例を使用するコンピュータプログラム内でタスクを実施するステップを示す画面である。
【図１２Ｃ】本発明の一実施例を使用するコンピュータプログラム内でタスクを実施するステップを示す画面である。
【図１２Ｄ】本発明の一実施例を使用するコンピュータプログラム内でタスクを実施するステップを示す画面である。
【図１２Ｅ】本発明の一実施例を使用するコンピュータプログラム内でタスクを実施するステップを示す画面である。
【図１３】コンピュータプログラム内でタスクを実施するスクリプトの捕捉ステップの一実施例を示す画面である。
【図１４】コンピュータプログラム内でタスクを実施することをユーザに教えるのを助けるために提供されるビデオ出力を有する一実施例を示す画面である。
【図１５】コンピュータシステム内でタスクを実施することをユーザに教える方法の一実施例を示すフロー図である。
【図１６】コンピュータシステム内でタスクを実施することをユーザに教えるシステムの一実施例を示す論理ブロック図である。
【図１】
2008512783.tif 000003
【図２】
2008512783.tif 000004
【図３Ａ】
2008512783.tif 000005
【図３Ｂ】
2008512783.tif 000006
【図４】
2008512783.tif 000007
【図５】
2008512783.tif 000008
【図６】
2008512783.tif 000009
【図７】
2008512783.tif 000010
【図８】
2008512783.tif 000011
【図９】
2008512783.tif 000012
【図１０】
2008512783.tif 000013
【図１１】
2008512783.tif 000014
【図１２Ａ】
2008512783.tif 000015
【図１２Ｂ】
2008512783.tif 000016
【図１２Ｃ】
2008512783.tif 000017
【図１２Ｄ】
2008512783.tif 000018
【図１２Ｅ】
2008512783.tif 000019
【図１３】
2008512783.tif 000020
【図１４】
2008512783.tif 000021
【図１５】
2008512783.tif 000022
【図１６】
2008512783.tif 000023
【国際調査報告】
2008512783.tif 000024