Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.06;
Скачать: CL | DM;

Вниз

Доброго времени суток, знатоки. Не подскажете ли ламеру ответ на   Найти похожие ветки 

 
allrussia   (2002-04-22 21:03) [0]

Доброго времени суток, знатоки. Не подскажете ли ламеру ответ на один вопрос?

Есть такой юнит, я его прописываю в uses своего проекта и хочу его использовать. Нужно, чтобы при нажатии на кнопку Button1 распаковывался архив (полностью, все файлы), и прогресс бар показывал текущее состояние распаковки, т.е. ВСЕГО 2 ФУНКЦИИ. Но так как я не бум-бум в нижеследующем, то прошу совета у вас. Заранее спасибо.

unit UnRAR;

{$ALIGN OFF}

interface

uses Windows;

const
ERAR_END_ARCHIVE = 10;
ERAR_NO_MEMORY = 11;
ERAR_BAD_DATA = 12;
ERAR_BAD_ARCHIVE = 13;
ERAR_UNKNOWN_FORMAT = 14;
ERAR_EOPEN = 15;
ERAR_ECREATE = 16;
ERAR_ECLOSE = 17;
ERAR_EREAD = 18;
ERAR_EWRITE = 19;
ERAR_SMALL_BUF = 20;

RAR_OM_LIST = 0;
RAR_OM_EXTRACT = 1;

RAR_SKIP = 0;
RAR_TEST = 1;
RAR_EXTRACT = 2;

RAR_VOL_ASK = 0;
RAR_VOL_NOTIFY = 1;

RAR_DLL_VERSION = 2;

UCM_CHANGEVOLUME = 0;
UCM_PROCESSDATA = 1;
UCM_NEEDPASSWORD = 2;

type
RARHeaderData = record
ArcName,
FileName: array[0..Pred(260)] of Char;
Flags,
PackSize,
UnpSize,
HostOS,
FileCRC,
FileTime,
UnpVer,
Method,
FileAttr: UINT;
CmtBuf: PChar;
CmtBufSize,
CmtSize,
CmtState: UINT;
end;

RAROpenArchiveData = record
ArcName: PChar;
OpenMode,
OpenResult: UINT;
CmtBuf: PChar;
CmtBufSize,
CmtSize,
CmtState: UINT;
end;

TUnrarCallback = function (Msg: UINT; UserData, P1, P2: Integer) :Integer; stdcall;

const
_unrar = "unrar.dll";

function RAROpenArchive(var ArchiveData: RAROpenArchiveData): THandle;
stdcall; external _unrar;
function RARCloseArchive(hArcData: THandle): Integer;
stdcall; external _unrar;
function RARReadHeader(hArcData: THandle; var HeaderData: RARHeaderData): Integer;
stdcall; external _unrar;
function RARProcessFile(hArcData: THandle; Operation: Integer; DestPath, DestName: PChar): Integer;
stdcall; external _unrar;
procedure RARSetCallback(hArcData: THandle; UnrarCallback: TUnrarCallback; UserData:Integer);
stdcall; external _unrar;
procedure RARSetPassword(hArcData: THandle; Password: PChar);
stdcall; external _unrar;

function RARGetDllVersion: integer;

type
TChangeVolProc = function(ArcName: PChar; Mode: Integer): Integer; stdcall;
TProcessDataProc = function(Addr: PUChar; Size: Integer): Integer; stdcall;

procedure RARSetChangeVolProc(hArcData: THandle; ChangeVolProc: TChangeVolProc);
stdcall; external _unrar;
procedure RARSetProcessDataProc(hArcData: THandle; ProcessDataProc: TProcessDataProc);
stdcall; external _unrar;

implementation

type
TRARGetDllVersion = function: integer; stdcall;

function RARGetDllVersion: integer;
var
h: THandle;
f: TRARGetDllVersion;
begin
h:= LoadLibrary(_unrar);
if h=0 then begin Result:= -1; Exit end;
f:= GetProcAddress(h, "RARGetDllVersion");
if @f=nil then Result:= 0 else Result:= f;
FreeLibrary(h);
end;

end.


 
Song   (2002-04-22 22:05) [1]

А запустить через TShellExcuteInfo никак?


 
allrussia   (2002-04-22 22:46) [2]

Если с помощью TShellExcuteInfo можно использовать unrar.dll (а не WinRAR/UnRAR.EXE), то как?


 
Song   (2002-04-23 08:15) [3]

Нет. Через ShellExecute можно запустить архиватор с нужными Вам ключами.
В Вашем вариате прогресс бар не сделаешь, потому что его изменение нужно вставлять в сам unrar.dll



Страницы: 1 вся ветка

Текущий архив: 2002.05.06;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.005 c
7-17712
lamer2000
2002-01-05 00:47
2002.05.06
Shell Explorer


4-17754
NikotiN
2002-02-27 18:12
2002.05.06
Вопрос


1-17528
Eugeny_G
2002-04-23 14:21
2002.05.06
Компиляция с DCU-модулем


4-17745
ice
2002-02-28 19:47
2002.05.06
как загнать прогу в трэй а не на панель?


14-17684
Hiks
2002-03-29 05:15
2002.05.06
Трудно быть богом?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский