SHFileOperationA 関数 (shellapi.h)
ファイル システム オブジェクトをコピー、移動、名前変更、または削除します。 この関数は、Windows Vista で IFileOperation
構文
int SHFileOperationA(
[in, out] LPSHFILEOPSTRUCTA lpFileOp
);
パラメーター
[in, out] lpFileOp
型: LPSHFILEOPSTRUCT
この関数が指定した操作を実行するために必要な情報を含む SHFILEOPSTRUCT 構造体へのポインター。 このパラメーターには、NULL
戻り値
型: int
成功した場合は 0 を返します。それ以外の場合は 0 以外。 通常、アプリケーションでは 0 または 0 以外のチェックを行う必要があります。
SHFILEOPSTRUCTの fAnyOperationsAborted メンバーの値を調べることが適切です。 SHFileOperation
この関数の戻り値 GetLastError を使用しないでください。
トラブルシューティングのために 0 以外の値を調べるには、主に Winerror.h で定義されているものにマップされます。 ただし、いくつかの可能な戻り値は Win32 より前のエラー コードに基づいており、場合によっては、その意味を一致させることなく、後の Winerror.h 値と重なります。 これらの特定の値について詳しく説明します。これらの特定の値の は、Winerror.h コードでこれらの意味を受け入れる必要がある だけです。 ただし、これらの値には次の警告が表示されます。
- これらは Win32 より前のエラー コードであり、パブリック ヘッダー ファイルではサポートも定義もされていません。 これらを使用するには、自分で定義するか、数値と比較する必要があります。
- これらのエラー コードは変更される可能性があり、従来は変更されています。
- これらの値は、デバッグの補助としてのみ提供されます。 彼らは決定的と見なすべきではありません。
エラー コード | 価値 | 意味 |
---|---|---|
DE_SAMEFILE | 0x71 | ソース ファイルとコピー先ファイルは同じファイルです。 |
DE_MANYSRC1DEST | 0x72 | ソース バッファーには複数のファイル パスが指定されましたが、宛先ファイル パスは 1 つだけです。 |
DE_DIFFDIR | 0x73 | 名前の変更操作が指定されましたが、宛先パスが別のディレクトリです。 代わりに移動操作を使用してください。 |
DE_ROOTDIR | 0x74 | ソースはルート ディレクトリであり、移動したり名前を変更したりすることはできません。 |
DE_OPCANCELLED | 0x75 | 操作がユーザーによって取り消されたか、適切なフラグが SHFileOperationに指定された場合 |
DE_DESTSUBTREE | 0x76 | 変換先は、ソースのサブツリーです。 |
DE_ACCESSDENIEDSRC | 0x78 | セキュリティ設定により、ソースへのアクセスが拒否されました。 |
DE_PATHTOODEEP | 0x79 | ソースパスまたは宛先パスがMAX_PATHを超えたか、または超過します。 |
DE_MANYDEST | 0x7A | 操作には複数の移動先パスが含まれており、移動操作の場合は失敗する可能性があります。 |
DE_INVALIDFILES | 0x7C | ソースまたは宛先のパス、またはその両方が無効です。 |
DE_DESTSAMETREE | 0x7D | ソースとコピー先の親フォルダーは同じです。 |
DE_FLDDESTISFILE | 0x7E | 宛先パスは既存のファイルです。 |
DE_FILEDESTISFLD | 0x80 | コピー先のパスは既存のフォルダーです。 |
DE_FILENAMETOOLONG | 0x81 | ファイルの名前がMAX_PATHを超えています。 |
DE_DEST_IS_CDROM | 0x82 | 変換先は読み取り専用 CD-ROM であり、フォーマットされていない可能性があります。 |
DE_DEST_IS_DVD | 0x83 | 宛先が読み取り専用 DVD であり、フォーマットされていない可能性があります。 |
DE_DEST_IS_CDRECORD | 0x84 | 宛先は書き込み可能な CD-ROM であり、フォーマットされていない可能性があります。 |
DE_FILE_TOO_LARGE | 0x85 | 操作に関係するファイルが、転送先メディアまたはファイル システムに対して大きすぎます。 |
DE_SRC_IS_CDROM | 0x86 | ソースは読み取り専用 CD-ROM であり、フォーマットされていない可能性があります。 |
DE_SRC_IS_DVD | 0x87 | ソースは読み取り専用 DVD であり、フォーマットされていない可能性があります。 |
DE_SRC_IS_CDRECORD | 0x88 | ソースは書き込み可能な CD-ROM であり、フォーマットされていない可能性があります。 |
DE_ERROR_MAX | 0xB7 | MAX_PATH操作中に超過しました。 |
0x402 | 不明なエラーが発生しました。 これは通常、ソースまたは宛先のパスが無効であることが原因です。 このエラーは、Windows Vista 以降では発生しません。 | |
ERRORONDEST | 0x10000 | 宛先で未指定のエラーが発生しました。 |
DE_ROOTDIR |ERRORONDEST | 0x10074 | 変換先はルート ディレクトリであり、名前を変更することはできません。 |
備考
この関数では、完全修飾パス名を使用する必要があります。 相対パス名と共に使用することは、スレッド セーフではありません。
2 つの例外を除き、SHFileOperation
ファイルの削除に使用すると、
コピー コールバック ハンドラーが公開および登録されている場合、
lpFileOpで
ファイルの接続
Windows 2000 以降では、グラフィックス交換形式 (GIF) イメージやスタイル シートなどの関連ファイルを含むフォルダー HTML ファイルにHTML ファイルには、.htm または .html 拡張子が必要です。 関連ファイルへの接続を作成するには、関連ファイルを含むフォルダーを HTML ファイルと同じフォルダーに配置します。 接続されたファイルを含むフォルダーの名前は、HTML ファイルの名前の後に "_files" または ".files" が続く名前と同じである必要があります (大文字と小文字が区別されます。たとえば"。ファイル" は機能しません)。 例を次に示します。
- C:\Files ディレクトリ (C:\Files\Test.htm) に Test.htm という名前のファイルを作成します。
- C:\Files ディレクトリ (C:\Files\Test.files) に Test.files という名前の新しいフォルダーを作成します。
- フォルダーにいくつかのファイルを設定します。 このフォルダーに配置されたすべてのファイルは、Test.htmに接続されます。
- Test.htm ファイルを C:\Files2 ディレクトリに移動またはコピーします。
- Test.files ディレクトリは C:\Files2 ディレクトリにも存在します。
ファイル接続は既定で有効になっています。 次に示すように、REG_DWORD エントリ NoFileFolderConnection を追加することで無効にすることができます。
HKEY_CURRENT_USER Software Microsoft Windows CurrentVersion Explorer NoFileFolderConnection
NoFileFolderConnection を 1 に設定すると、ファイル接続が無効になります。 値が 0 に設定されているか、存在しない場合は、ファイル接続が有効になります。
指定したファイルのみを移動し、接続されているファイルを移動しない場合は、lpFileOpが指す構造体の
"MyFile_files" のような名前のフォルダーを使用して接続を定義することは、ローカライズされたバージョンの Windows では無効な場合があることに注意してください。 "files" という用語は、ローカル言語の同等の単語に置き換える必要がある場合があります。
手記
shellapi.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして SHFileOperation を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows 2000 Server [デスクトップ アプリのみ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | shellapi.h |
ライブラリ | Shell32.lib |
DLL | Shell32.dll (バージョン 4.0 以降) |
API セットの | ext-ms-win-shell-shell32-l1-2-1 (Windows 10 バージョン 10.0.10240 で導入) |