(57)【要約】【課題】クリップボードフォーマットを拡張してこれまでに転送できなかったデータを転送する。【解決手段】ファイルグループについてのクリップボードフォーマットを新しく用意し、このファイルグループのデータを転送可能とする。ファイルグループのクリップボードフォーマットはファイルグループ記述子を有し、ファイルグループ記述子の中に１以上のファイル記述子を保持する。ファイル記述子は１つのファイルについて記述する情報を保有する。【選択図】図４
2008123556.tif 000002
【特許請求の範囲】
【請求項１】
ファイルシステムのオブジェクトおよびノンファイルシステムのオブジェクトを含むオブジェクトの名前空間を有し、およびクリップボードフォーマットでデータのデータ転送を行うクリップボードを有するコンピュータシステム（１０）における方法であって、
テキストのクリップボードフォーマット、ファイルコンテンツのクリップボードフォーマット、ファイルグループ記述子のクリップボードフォーマットおよび前記ノンファイルシステムによりアクセス可能とするデータを保持するための、選択のクリップボードフォーマットであって、前記ノンファイルシステムのオブジェクトを転送するために前記選択のクリップボードフォーマット中のデータを使用する、選択のクリップボードフォーマットを有する複数のクリップボードフォーマットを提供し、
データ転送処理のための、ファイルではないファイルを選択し、
ファイルコンテンツのクリップボードフォーマットを使用して前記選択のデータを前記ファイルコンテンツの変換済みデータに変換し、データオブジェクトとして前記変換済みデータを格納することにより前記データを保持し、
前記ファイルグループ記述子フォーマットを使用して、ファイル中にカプセル化するデータについて記述する情報を保有するファイル記述子を、データ転送処理の間、保持し、
前記データオブジェクトに対してハンドルを与え、前記ハンドルを使用して前記データオブジェクトの前記データをデータシンクにペーストし、前記記述の情報を使用して、前記コンピュータシステムにファイルを前記データシンクで作成せしめ、および前記データのオブジェクトを前記ファイル中にカプセル化することにより前記データ転送を完了する
ことを特徴とする方法。
【請求項２】
前記ノンファイルシステムのオブジェクトはネットワーク資源であることを特徴とする請求項１に記載の方法。
【請求項３】
前記ノンファイルシステムのオブジェクトはプリンタであることを特徴とする請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にデータ処理システムに関し、特にデータ処理システムにおけるデータ転送に関する。
【背景技術】
【０００２】
クリップボードは、マイクロソフト社（ワシントン州、レッドモンド）が販売している「マイクロソフト」ウインドウズ、バージョン3.1のオペレーティングシステムのデータ転送機能である。クリップボードは、アプリケーション間またはアプリケーション内でデータを転送するのに使用される。クリップボードは、機能とメッセージの集合を備えるので、アプリケーションはデータをクリップボードを通して転送できる。クリップボードは、データの名前（すなわちデータ対象物（データのオブジェクトとも呼ばれる）の独自の識別子、ハンドルとも言う）を格納する共通領域とみなすことができ、そのデータ名に基づいてアプリケーションは書式化されたデータを交換できる。「マイクロソフト」ウインドウズ、バージョン3.1のオペレーティングシステムは、一定数のクリップボードフォーマットを列挙する。例えばCF BITMAPクリップボードはビットマップの転送に使用され、またCF TEXTクリップボードはテキスト文字の配列の転送に使用される。クリップボードは、種々のクリップボードフォーマットで同一データを同時に保持できる。
【０００３】
アプリケーションのユーザは、「切り取り」、「複写」または「貼り付け（ペーストとも言う）」などのクリップボードコマンドを呼び出してクリップボードを使用する。複写クリップボードコマンドは、クリップボードフォーマット内のデータの選択された部分を保持するデータ対象物（データのオブジェクト（ｄａｔａ  ｏｂｊｅｃｔ）とも言う）の名前（ハンドルとも言う）をクリップボードへ複写することにより、クリップボードフォーマット内のデータの選択された部分をクリップボードへ複写する。データの選択された部分は、そのデータの発信元から削除されない。切り取りクリップボードコマンドは、それがデータの選択された部分をクリップボードへ複写する点で複写コマンドと同様であるが、切り取りクリップボードコマンドは、それがデータの選択された部分をデータの発信元から削除する点で複写クリップボードコマンドと異なる。貼り付けクリップボードコマンドは、クリップボードからデータを送信先へ複写する。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
マイクロソフト社が作成したマイクロソフトOLE2.01プロトコルは、ドラグ・アンド・ドロップ操作を容易にする機構を提供する。この機構はクリップボードフォーマットを使用する。しかしながらデータは、切り取りと複写の操作に使用されるシステム記憶装置を通過しないで、代わりにデータは発信元から送信先へ転送される。
【０００５】
クリップボードは有用であるが、書式化の制約により、多くのアプリケーションが過大に限定されている。特に、そのシステムにより提供されるクリップボードフォーマット数は少な過ぎ、さらに利用できるフォーマットは過大に限定されている。
【課題を解決するための手段】
【０００６】
上記の課題を解決するために、本発明は、ファイルシステムのオブジェクトおよびノンファイルシステムのオブジェクトを含むオブジェクトの名前空間を有し、およびクリップボードフォーマットでデータのデータ転送を行うクリップボードを有するコンピュータシステム（１０）における方法であって、
テキストのクリップボードフォーマット、ファイルコンテンツのクリップボードフォーマット、ファイルグループ記述子のクリップボードフォーマットおよび前記ノンファイルシステムによりアクセス可能とするデータを保持するための、選択のクリップボードフォーマットであって、前記ノンファイルシステムのオブジェクトを転送するために前記選択のクリップボードフォーマット中のデータを使用する、選択のクリップボードフォーマットを有する複数のクリップボードフォーマットを提供し、
データ転送処理のための、ファイルではないファイルを選択し、
ファイルコンテンツのクリップボードフォーマットを使用して前記選択のデータを前記ファイルコンテンツの変換済みデータに変換し、データオブジェクトとして前記変換済みデータを格納することにより前記データを保持し、
前記ファイルグループ記述子フォーマットを使用して、ファイル中にカプセル化するデータについて記述する情報を保有するファイル記述子を、データ転送処理の間、保持し、
前記データオブジェクトに対してハンドルを与え、前記ハンドルを使用して前記データオブジェクトの前記データをデータシンクにペーストし、前記記述の情報を使用して、前記コンピュータシステムにファイルを前記データシンクで作成せしめ、および前記データのオブジェクトを前記ファイル中にカプセル化することにより前記データ転送を完了する
ことを特徴とする。
【発明を実施するための最良の形態】
【０００７】
本発明の好ましい実施例は、拡張された数のクリップボードフォーマットを提供する。これらの拡張クリップボードフォーマットは、従来のシステムにより得られるものより改良された機能性を提供するクリップボードフォーマットを備える。
【０００８】
図１は、本発明の好ましい実施例を実施するのに適したコンピュータシステム10のブロック図である。コンピュータシステム10は、ビデオ表示装置14、マウス16およびキーボード18のような幾つかの周辺装置へアクセスする中央処理装置(CPU)12を備える。CPU12は、一次記憶装置20および二次記憶装置22へもアクセスする。一次記憶装置20は、クリップボード26を備えるオペレーティングシステム24を保持する。クリップボード26は、データ転送を実現するクリップボード能力を提供する機能およびメッセージと、本発明の好ましい実施例を実施するクリップボードフォーマットとを包含する。また一次記憶装置20は、少なくとも1つのアプリケーションプログラム28用のコードを保持する。
【０００９】
技術に有能な者にとり、図１のコンピュータシステム10がもっぱら説明上のものであることは明白である。本発明は、多重プロセッサを採用するもの、および図１に示す装置とは異なる周辺装置を採用するものを含む、他のコンピュータシステム構成においても実施できる。
【００１０】
以下の説明は、本発明の好ましい実施例により提供される拡張クリップボードフォーマットおよびそれらの使用を特に列挙したものである。これらの拡張クリップボードフォーマットは、「マイクロソフト」ウインドウズ、バージョン3.1のオペレーティングシステムにより提供されるものに取って代わるのではなく、それを補足することが分かる。
【００１１】
図２は、好ましい実施例の拡張クリップボードフォーマットを利用するために実施されるステップを図示するフローチャートである。先ず、アプリケーションプログラム28は、データの選択された部分を1つ以上の拡張クリップボードフォーマットに変換しなければならない（ステップ30）。このアプリケーションプログラムは、拡張クリップボードフォーマットに変換されるデータを選択する機構を提供する。変換されたデータは、データ対象物中に格納される（ステップ32）。データ対象物は、大域記憶装置、ストリームまたは記憶機構のような種々の形式の記憶媒体（例えば「マイクロソフト」OLE 2.01）に存在できる。拡張クリップボードフォーマットの幾つかに対するデータ対象物は、以下に詳細に説明するように、考えられる記憶媒体の部分集合だけに存在できる。データ構造を封入する（注．封入はカプセル化とも呼ばれる）データ対象物の名前は、クリップボードへ渡される（ステップ34）。ついでデータは、拡張クリップボードフォーマット内のクリップボード上にあるとみなされ、ユーザまたはアプリケーションプログラムが必要とするときに送信先へ貼り付けられる（ステップ36）。
【００１２】
本発明の好ましい実施例により提供される拡張クリップボードフォーマットの1つは、CF HDROPクリップボードフォーマットである。このクリップボードフォーマットの役割の説明には、「マイクロソフト」ウインドウズ、バージョン3.1のオペレーティングシステムにおいて、ドラグ・アンド・ドロップ操作がどのようにしで実施されるかを見直すのが役立つ。この従来のオペレーティングシステムにおいて、ドラグ・アンド・ドロップ操作は、マウスを使用するユーザに応答して実施される。マウスボタンを離してドロップを実施すると、マウスカーソルが現在指示しているウインドウは、WM DROPFILESウインドウメッセージを受信する。このウインドウメッセージには単一のパラメータであるhDropが含まれる。hDropパラメータは、ドロップされたファイルまたは複数のファイルを記述するデータ構造の名前である。この名前は、hDropにより識別されるデータ構造から情報を検索する定義済のDragQueryPoint()、DragQueryFile()およびDragFinish()機能への呼び出しにおいてパラメータとして使用される。
【００１３】
CF HDROPクリップボードフォーマットは、DROPFILES構造の名前を保持するのに使用される。CF HDROP クリップボードフォーマットを使用すると、データ対象物(すなわちDROPFILES)が大域記憶装置に存在することが必要となる。DROPFILES構造は下記のフォーマットを有する。
【００１４】
typedef struct DROPFILES ｛
DWORD pFiles;      // offset of file list
POINT pt;         //  drop point (client coords)
WORD fNC;          // is it on non client area
// and pt is in screen corrds
BOOL fWide;        // WIDE character switch
｝DROPFILES, *LPDROPFILES;
fWideフィールドは、pFilesにより参照される文字列がANSIではなくUNICODEで表されることを示している。
【００１５】
DragQueryPoint()機能、DragQueryFile()機能およびDragFinish()機能の全ては、DROPFILES構造へ作用して、ドロップされたファイルについての情報を検索できる。CF HDROPクリップボードフォーマットを使用することにより、上述の機能は、クリップボード操作およびOLEデータ転送操作のために働くことができる。従来のシステムにおける、これらの機能はドラグ・アンド・ドロップ状態においてだけ働く。
【００１６】
本発明の好ましい実施例の拡張クリップボードフォーマットは、CF FILECONTENTSクリップボードフォーマットおよびCF FILEGROUPDESCRIPTOR クリップボードフォーマットも備える。CF FILECONTENTSクリップボードフォーマットは、ファイル中に封入されるデータを保持するのに使用される。例えばユーザが、私信メッセージまたは他の複合文書から埋め込み部分をドラグし、ついでそれをファイルを生成する位置にドロップしたいとする。そのような場合、図３のフローチャートに示されるステップが実施される。先ず、転送されるデータが選択される（ステップ37）。そのデータは、CF FILECONTENTSクリップボードフォーマットに変換されて、格納される（ステップ38）。ついでデータ転送操作が完了し（ステップ39）、ドラグ・アンド・ドロップの目標対象物が、CF FILECONTENTSクリップボードフォーマットに格納されるデータにアクセスする。ついでCF FILECONTENTSクリップボードフォーマット内のデータは、ファイル中に封入される（ステップ40）。この例はドラグ・アンド・ドロップであったが、CF FILECONTENTSは、他の形式のデータ転送操作に使用できることが明らかである。
【００１７】
クリップボードフォーマットがマイクロソフトOLE 2.01プロトコルに従うデータ転送操作において機能する役割を明らかにするには、OLE 2.01の幾つかの基本的な概念を見直すことが役立つ。OLE 2.01における「対象物」は、データを保持するデータ構造を含む論理構造であり、またデータ構造において保持されるデータについて働く機能を含むことができる。
【００１８】
OLE 2.01にとり基本的なものである他の概念は、「インタフェース」という概念である。インタフェースは、論理的に関連する機能のネーム集合である。インタフェースは、機能の集合に対して（パラメータのような）指標を列挙する。インタフェースは、機能を実施するコードを提供するのではなく、むしろ、機能を実施するコードが対象物により提供される。インタフェースの機能を実施するコードを提供する対象物は、インタフェースを「サポート」すると言われる。インタフェースをサポートする対象物により提供されるコードは、インタフェースに設けられる指標に合致する必要がある。C++プログラム言語においてインタフェースは、仮想機能の集合を構成する。マイクロソフトOLE 2.01プロトコルは、転送データへの対象物にとり有用である幾つかの機能をグループ分けするIDataObjectインタフェースを定義する。IDataObjectインタフェースをサポートする対象物は、データ対象物として知られている。
【００１９】
OLE 2.01を使用してデータ転送を実施するシステムにおいて、データが原始対象物（ソースのオブジェクト）から目標対象物（ターゲットのオブジェクト）へドラグされるドラグ・アンド・ドロップ操作中に、1994年2月22日に出願され、本出願と共通の譲受人に譲渡された「均等データ転送」という名称の同時係属出願第08/199,853号に明示される均等データ転送機構が利用される。データ源におけるデータ対象物と目標対象物との間の接続は、データ対象物により提供されるIDataObjectインタフェースの事例に対するポインタを送信先対象物へ渡すことにより、形成される。ついで送信先対象物は、IDataObjectインタフェースのEnumFormatEtc()を実施して、送信先対象物上にドロップされた対象物におけるデータ用の利用できるフォーマットを列挙する。これらのフォーマットはクリップボードフォーマットである。かくして、ドラグ・アンド・ドロップ操作中に、データはクリップボードフォーマットで転送される。
【００２０】
CF FILEGROUPDESCRIPTOR クリップボードフォーマットは、ファイルグループ記述子構造を保持するのに使用される。ファイルグループ記述子構造は、１つ以上のファイル記述子を保持する。各ファイル記述子は、CF FILECONTENTSクリップボードフォーマットで保持されるファイル中に封入されるデータについての情報を保持する構造体の配列である。各ファイル記述子は下記のフォーマットを有する。
typedef struct FILEDESCRIPTOR  ｛ // fod
DWORD dwFlags;
CLSID clsid;
SIZEL sizel;
POINTL pointl;
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAcessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
CHAR cFileName[MAX PATH];
｝FILEDESCRIPTOR,*LPFILEDESCRIPTOR;
dwFlagsフィールドは、どのフィールドが正当なデータを保持するかを示すファイルであり、clsidフィールドは、CF FILECONTENTSデータを封入するデータ対象物のクラスIDを保持し、sizel フィールドは、CF FILECONTENTSデータのサイズを規定する値を保持し、またpointlフィールドは、CF FILECONTENTSデータを保持する対象物へのポインタを保持する。dwFileAttributesフィールドは、データの属性のダブルワードを保持する。ftCreationTimeフィールドは生成時間を保持し、ftLastAccessTimeフィールドは最後のアクセス時間を保持し、またftLastWriteTimeフィールドは最後の書き込み時間を保持する。nFileSizeHighフィールドは、対象物の長さをバイト単位で記述する64ビットの上位32ビットを保持し、またnFileSizeLowフィールドは、この値の下位32ビットを保持する。cFileNameフィールドは、ファイル名を規定する文字を保持する。
【００２１】
CF FILEGROUPDESCRIPTORクリップボードフォーマットは、１つのバッチでの多重ファイルの転送を容易にする。転送されるバッチ用の、バッチにおけるファイルグループ記述子は、CF FILEGROUPDESCRIPTOR クリップボードフォーマットに格納される。ファイルグループ記述子は、大域記憶装置内にあり、他の原始媒体内にあってはならない。このファイルグループ記述子により、プログラムは、多重ファイル中へ転送されるデータをウォークスルーでき、また必要に応じて所要のファイルを生成できる。図４は、CF FILEGROUPDESCRIPTORクリップボードフォーマットと連係するCF FILECONTENTSクリップボードフォーマットを使用して、データのグループを転送してファイルのグループを生成するために実施されるステップを図示するフローチャートである。ファイル中に封入されるデータは先ず、変換されて、CF FILECONTENTSクリップボードフォーマットに格納されなければならない（ステップ41）。ついで、データのグループ用のファイルグループ記述子は、CF FILEGROUPDESCRIPTORクリップボードフォーマットに格納される（ステップ42）。データは転送されて、ファイルのグループ中に封入される（ステップ43）。
【００２２】
CF FILECONTENTSクリップボードフォーマットで転送されるデータを保持するデータ対象物は、大域記憶装置内に存在する対象物でもよいし、またはストリームや記憶装置のようなOLE記憶媒体を通して提供してもよい。
【００２３】
CF FILENAMEMAPクリップボードフォーマットは、本発明の好ましい実施例により提供される拡張クリップボードフォーマットの他の１つのものである。このクリップボードフォーマットは、発信先名へのマッピングのための記憶装置を提供するのに使用される。例えばシステムが、ファイルがウエストバスケット・ファシリティに置かれるとき、ファイル名を変更したいとする。そのような場合、発信先名へのマッピングはCF FILENAMEMAPクリップボードフォーマットに格納される。このクリップボードフォーマットは、CF HDROPクリップボードフォーマットの仲間とみなすことができる。図５は、このクリップボードフォーマットを利用してファイル名を変更するために実施されるステップを図示するフローチャートである。先ず送信先名マッピングは、CF FILENAMEMAPクリップボードフォーマットに入れられる（ステップ44）。ついで、データ転送は、クリップボードコマンド、ドラグ・アンド・ドロップまたは他のOLEデータ転送機構を通して開始される（ステップ46）。データ転送操作の完了の一部として、CF FILENAMEMAPクリップボードフォーマットに保持されるデータ内に規定された新しいファイル名は、転送されているファイルに割り当てられる（ステップ48）。
【００２４】
拡張クリップボードフォーマットは、CF OBJECTPOSITIONSクリップボードフォーマットも備える。このクリップボードフォーマットは、クリップボードにおける他の項目の位置に対応する座標の配列を保持するのに使用される。座標の第１の集合は、対象物のグループの画面位置を識別し、また残りの座標は、画素単位での各項目の相対オフセットを規定する。このクリップボードフォーマットは、関連するアイコンを有する対象物のグループを転送するのに特に有用である。このクリップボードフォーマットにより、データ変換が新しい送信先へ実施された後でも、項目のグループの相対位置の保全を同一のままにできる。図６は、CF OBJECTPOSITIONSクリップボードフォーマットを利用するために実施されるステップを図示するフローチャートである。先ずアイコンは、CF OBJECTPOSITIONSクリップボードフォーマットに従って符号化される（ステップ50）。ついでデータ転送は、クリップボード、ドラグ・アンド・ドロップまたは他のOLEデータ転送機構を通して開始される（ステップ52）。データ転送操作の完了の一部として、クリップボードフォーマットに保持される座標は、送信先においてアイコンを該当する相対位置にするのに使用される（ステップ54）。
【００２５】
拡張クリップボードフォーマットは、プリンタに好都合な名称のリストの名前を保持するCF PRINTERFRIENDLYNAME クリップボードフォーマットをさらに備える。ついでプリンタに好都合な名称は、対応するプリンタについて保持されるデータ構造へアクセスするのに使用できる。CF NETRESOURCEクリップボードフォーマットは、同様であるが、ネットワークサーバのようなネットワーク資源のリストの名前（ハンドルとも呼ばれる）を保持する。ネットワーク資源のリストは、資源用のデータ構造へアクセスするのに使用できる。このクリップボードフォーマットは、ネーム空間がファイルシステム構造ばかりでなく、他の形式の対象物を含むことができる状態の場合に特に使用される。
【００２６】
CF IDLDATAクリップボードフォーマットは、IDリストの名前（ハンドルとも呼ばれる）を保持する。IDリストは、ネーム空間内のものを独自に識別する識別子のリストである。IDリストは、ファイルまたはディレクトリ用のパスネームにほぼ類似するとみなすことができる。このクリップボードフォーマットは、CF HDROPクリップボードフォーマットとみなすことができる。
【００２７】
本発明を、その好ましい実施例を参照して説明してきたが、技術に有能な者は、付記される特許請求の範囲により明示される本発明の範囲から逸脱することなく、詳細な方式での種々の変更ができることは、技術に当業者にとり明白である。
【図面の簡単な説明】
【００２８】
【図１】本発明の好ましい実施例を実施するのに適切なコンピュータシステムのブロック図である。
【図２】本発明の好ましい実施例の拡張クリップボードフォーマットを活用するように実施されるステップを図示するフローチャートである。
【図３】本発明の好ましい実施例に従うデータ転送操作においてCF FILECONTENTSクリップボードフォーマットを使用するために実施されるステップを図示するフローチャートである。
【図４】本発明の好ましい実施例に従ってCF FILECONTENTSおよびCF FILEGROUPDESCRIPTOR クリップボードフォーマットの組合わせ使用を図示するフローチャートである。
【図５】本発明の好ましい実施例に従ってCF FILENAMEMAPクリップボードフォーマットの代表的な使用例において実施されるステップを図示するフローチャートである。
【図６】本発明の好ましい実施例に従ってCF OBJECTPOSITIONSクリップボードフォーマットの代表的な使用例において実施されるステップを図示するフローチャートである。
【図１】
2008123556.tif 000003
【図２】
2008123556.tif 000004
【図３】
2008123556.tif 000005
【図４】
2008123556.tif 000006
【図５】
2008123556.tif 000007
【図６】
2008123556.tif 000008