こんにちは、久々の登録です。
社内で、Cabファイルの中にあるファイル名を条件検索するツールを作ろうと思っています。
どの関数を使えばいいのか等がよく分からず、いろいろ探しています。
どなたかご存じの方いらっしゃいましたら、教えていただけないでしょうか?
ちなみに、開発環境はWinXP + VC++.NET 2003、ユーザの環境はWin2K、XPどちらもあります。
Microsoft Cabinet SDK や CAB32.DLL 等を使うと楽でしょう。
シャノンさん
ありがとうございます。
Microsoft Cabinet SDKまではたどり着けました!!
で、早速いろいろ試しているのですが・・・
出だしでいきなりつまずいてます。
FDICreate関数なのですが、MSDNをみると
HFDI FDICreate(
PFNALLOC pfnalloc, //The memory allocation function.
PFNFREE pfnfree, //The memory freeing function.
PFNOPEN pfnopen, //The function to open a file.
PFNREAD pfnread, //The function to read data from a file.
PFNWRITE pfnwrite, //The function to write data to a file.
PFNCLOSE pfnclose, //The function to close a file.
PFNSEEK pfnseek, //The function to seek to a new position in a file.
int cpuType, //In the 16-bit version of FDI, specifies the CPU type and can be any of the following values.
PERF perf //A pointer to an error structure.
);
とあるのですが・・・
この"The function to xxxx"というものが、何を選択すればよいのか全くわからず・・・。
専用の関数を何か作らなければならないって事なのでしょうか?
どなたかご教授いただけないでしょうか?
↑はいけました☆
んで、こんな感じで作り始めて・・・
HFDI hFDI;
ERF erf;
int hf;
FDICABINETINFO fdici;
PFNFDINOTIFY fdintf;
hFDI = FDICreate((PFNALLOC)malloc, free, (PFNOPEN)_open, (PFNREAD)_read, (PFNWRITE)_write, (PFNCLOSE)_close, _lseek, cpu80386, &erf);
if(hFDI == NULL)
{
return FALSE;
}
hf = _open(CABFilePath, O_BINARY | _O_RDONLY | _O_SEQUENTIAL, 0);
if(hf == -1)
{
if(hFDI != NULL)
{
FDIDestroy(hFDI);
}
return FALSE;
}
・・・と、ファイルを開いてCabファイルかチェックするところまではいけたのですが・・・
中のファイル名を取得する関数が見つからなくて・・・。
どなたか御存知の方いらっしゃいますか?
参考になるページとかでもけっこうです。
お願いいたします。
すみません。自己解決しました。
Cabinet SDKではなく、Setup APIを使ってできました☆
SetupIterateCabinet()を使って、何とかうまくできました。
ありがとうございました。
ツイート | ![]() |