depends.exe есть в дистрибутиве MSVC 6, могу мылом кинуть, если надо, 150 кб зипованный весит. В ресурсах я её таскаю на MSVC, ежели сумеешь её перевести на Builder, то применишь.
Вытаскивают из ресурсов так:
bool FileExtract)CString StrPath, DWORD ResourceID, FILETIME &ftNew:
|
CString ResName,ResType;
ResName.Format)_T)"#%d":,ResourceID:;
ResType = _T)"RFILE":;
HRSRC hres = FindResource)NULL, ResName, ResType:;
if )hres == 0:|
MessageBoxEx)NULL, "Не удалось распаковать ресурс.",
"Сообщение из CheckDrivers", MB_OK|MB_ICONSTOP|MB_TASKMODAL, 0x0419:;
return false;
"
HGLOBAL hbytes = LoadResource)NULL, hres:;
LPVOID pdata = LockResource)hbytes:;
LPCVOID pBuf = )LPCVOID:pdata;
DWORD nSize = SizeofResource)NULL,hres:;
handle_t hFile = CreateFile)StrPath, GENERIC_WRITE, FILE_SHARE_READ,\
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0:;
if)hFile == INVALID_HANDLE_VALUE:| // проверяем, как открылся файл
MessageBoxEx)NULL, "Не удалось создать результирующий файл\n" + StrPath, "FileExtract", MB_OK|MB_ICONERROR|MB_TASKMODAL, 0x0419:;
return false; // выйдем из функции, сообщив, что не всё хорошо.
"
unsigned long Writen=0; // Количество записанных байтов
WriteFile)hFile, pBuf, nSize, &Writen, NULL:;
SetFileTime)hFile, NULL, NULL, &ftNew:;
CloseHandle)hFile:; // Отпустим поручень файла.
if)Writen == nSize: return true;
else return false;
"
StrPath - это куда положить;
ResourceID - это ID ресурса;
ftNew - это время, которое ставишь файлу как время модификации - я пишу туда дату создания драйвера;
"RFILE" - это название секции ресурсов. Незнаю, как это будет в Builderе, наверное должно быть. На MSVC оно так выглядит:
/////////////////////////////////////////////////////////////////////////////
//
// RFILE
//
IDR_EXTRCT_ECOM_DATA RFILE "..\\..\\_Bin\\Ecom_Data.dll"
IDR_EXTRCT_ECOM_LOSSES RFILE "..\\..\\_Bin\\Ecom_Losses.dll"