Написание плагина архиватора WCX
Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik
Написание плагина архиватора WCX
Подскажите пожалуйста. Пишу плагин архиватора. После удаления файла из архива из списка файлов TC он не удаляется. И запрос на ReadHeader() также не вызывается? Если можно пример.
Может поможет, если пошлёшь окну тотала собщение об обенвлении, примерно так:
Я только не помню, где должна предаваться команда в lParam или wParam.
Код: Выделить всё
SendMessage (Totalcmd_Window_Handle,WM_USER,540{cm_RereadSource});D1P Спасибо за ответ.
А как получить Totalcmd_Window_Handle напрямую в плагин он не передается. Или например запущено несколько TC как узнать какой из них вызвал плагин? И почему не вызывается
OpenArchive() with OpenMode==PK_OM_LIST
repeat
ReadHeader()
ProcessFile(...,PK_SKIP,...)
until error returned
CloseArchive()
После любой из операций над архивом происходит этот цикл вызова процедур, а после DeleteFiles() нет и в SetChangeVolProc() и SetProcessDataProc() hArcData=0xffffffff.
А как получить Totalcmd_Window_Handle напрямую в плагин он не передается. Или например запущено несколько TC как узнать какой из них вызвал плагин? И почему не вызывается
OpenArchive() with OpenMode==PK_OM_LIST
repeat
ReadHeader()
ProcessFile(...,PK_SKIP,...)
until error returned
CloseArchive()
После любой из операций над архивом происходит этот цикл вызова процедур, а после DeleteFiles() нет и в SetChangeVolProc() и SetProcessDataProc() hArcData=0xffffffff.
Не фиг париться. На самом деле все проще. На форуме Ghisler писал, что список файлов обновится, если изменить время доступа к архиву, либо его размер.
Время меняем через SetFileTime(HANDLE hFile, FILETIME *Creation, FILETIME *LastAccess, FILETIME *LastWrite). Кажется такая функция была. Я использовал
void WINAPI SetCurFileTime(HANDLE hFileHandle)
{
SYSTEMTIME time;
FILETIME MyFileTime, NEWFileTime;
GetLocalTime(&time);
SystemTimeToFileTime(&time,&MyFileTime);
LocalFileTimeToFileTime(&MyFileTime,&NEWFileTime);
SetFileTime(hFileHandle,NULL,&NEWFileTime,&NEWFileTime);
return;
}
После этого окно всегда обновлялось. А если послать сообщение, как вы писали, то в случае wcx плагина окажешься в директории с архивом, а не в архиве.
Время меняем через SetFileTime(HANDLE hFile, FILETIME *Creation, FILETIME *LastAccess, FILETIME *LastWrite). Кажется такая функция была. Я использовал
void WINAPI SetCurFileTime(HANDLE hFileHandle)
{
SYSTEMTIME time;
FILETIME MyFileTime, NEWFileTime;
GetLocalTime(&time);
SystemTimeToFileTime(&time,&MyFileTime);
LocalFileTimeToFileTime(&MyFileTime,&NEWFileTime);
SetFileTime(hFileHandle,NULL,&NEWFileTime,&NEWFileTime);
return;
}
После этого окно всегда обновлялось. А если послать сообщение, как вы писали, то в случае wcx плагина окажешься в директории с архивом, а не в архиве.
- Моторокер
- Сообщения: 1517
- Зарегистрирован: Пт май 06, 2005 08:22
- Откуда: г. Пермь (читается Перьмь)
- Контактная информация:
До удаления ещё не дошёл.На форуме Ghisler писал, что список файлов обновится, если изменить время доступа к архиву, либо его размер.
А разве при удалении (т.е. изменении архива) его дата и размер не меняются?
плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми
ПармаСруб - строительство домов и бань в Перми