|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июл 30, 2003 20:19:08 · Поправил: Безпощадный даос Имеется программа по удалению макросов из файлов MSWord97, но есть у неё такое неудобство, обрабатываемый файл нужно предварительно выбрать в окошке и нажать "Delete", но мне нужно обработать каталог состоящий из ~400 файлов. Подскажите как лучше поступить, присобачить ей командную строку? или может есть какое-нибудь более оригинальное решение, да, прога написана на, блин, Дельфине, исходников нет. Вот, если кому интересно: MacroZapper |
|
|
Дата: Июл 31, 2003 04:13:54 Симуляция дфижения мышки? |
|
|
Дата: Июл 31, 2003 04:34:40 Это как, типа чтоб прога думала что я всё сам мышью выбираю? Ещё добавлю, прога выкидывает два окошка, о том что макросы будут удалены и еще о том что удаление завершено, блин, делать автору было нечего, ещё хоть прога и не запакована и даже серийник торчит в коде, но код изрядно использует SEH. |
|
|
Дата: Июл 31, 2003 05:01:49 · Поправил: xzazet Была такая же проблема (думаю, что даже с более сложным софтом - перекидывал данные из excel'я в один аналитический пакет, который хотел работать только со своим форматом файлов, наглец - а все остальное вручную :( ). решил почти как comrade подсказал. Мышь, кстати, использовать не обязательно - это я понял, когда пришлось работать на компьютере без мыши, оказывается можно с успехом и без нее обходиться :). Окошки посмотрите, что там по дефолту стоит - если ОК, то посылаете в окно 'пробел', если другое, то 'TAB' и 'пробел' (если всего две кнопки). По списку файлов (я так понимаю, список из 400 файлов в листбоксе?) просто серфишь event'ами нажатия клавиш. Ну и еще проблема синхронизации. Добавлю, что можно по всему списку и не бродить, просто программно копировать по одному файлу в папку, патчить его и мовить в другое месть - так быстрее получится. |
|
|
Дата: Июл 31, 2003 05:05:50 ну и еще. Название темки бы поправили, а то "нужен совет..." немного однобоко отражает суть проблемы. |
|
|
Дата: Июл 31, 2003 05:54:29 Немного покопав я обнаружил место где прога получает полный путь к файлу, поправил в памяти окончание этой строки на нужный мне файл, и программа скушала обработав нужный файл, хотя в FileListBox первоначально был выбран другой, вот если получится найти окончание всей процедуры, то можно будет её зациклить на обработку всех файлов в каталоге, но несколько мешает незнание мной Дельфи и SEH обработчики, да, окошки тоже просто так не вырежешь, это не MessageBox. comrade,xzazet спасибо за советы, но мне кажется, что для меня так сложнее будет... |
|
|
Дата: Июл 31, 2003 06:26:57 Asterix А написать свою программу по вырезанию макросов? |
|
|
Дата: Июл 31, 2003 06:42:05 · Поправил: Asterix Знать бы формат этих файлов *.dot, но не думаю что это будет быстрее..., меня бы даже лучше устроила консольная утилита, работающая в командной строке, такая как AVP MacroKiller от Касперского, но она только под Word7 включительно :( |
|
|
Дата: Июл 31, 2003 06:45:28 |
|
|
Дата: Июл 31, 2003 06:48:19![]() |
|
|
Дата: Июл 31, 2003 07:17:43 Asterix По поводу консольной версии надо думать. Вариант на VBA будет проще. |
|
|
Дата: Июл 31, 2003 08:09:10 Я себе так представляю, что можно написать ещё один запускной файл, который загрузит этот основной файл, получит имя обрабатываемого файла из командной строки вместе с полным путём и сделает прыжок на нужный адрес в программе в то место где подставляется эта строка я его уже нашёл: CODE:004529CD call dword ptr [ecx+0CCh]
CODE:004529D3 mov eax, [ebp+var_4];<-заносим в eax
; адрес строки c
; полным путём к
; к файлу
ну нужно будет немного пропатчить оригинальный файл и в принципе должно работать... |
|
|
Дата: Июл 31, 2003 11:52:27 · Поправил: masquer >Знать бы формат этих файлов *.dot, но не думаю что это будет быстрее Если лишних полгода есть :) Это недокументированная вещь, плюс сам макрос храниться в сжатом виде (LZW кажется) Проще всего добавить свой код с FindFirstFile - FindNextFile. После того, как выбран каталог, сделать прыжок на свою процедуру, которая будет искать и передавать имя файла в процедуру удаления макросов. В принципе - работы на полчаса (если никаких проблем не будет, типа подсчета CRC в нескольких местах и противоотладочных/трассировочных приемов) |
|
|
Дата: Июл 31, 2003 12:50:43 Asterix Поковырял немного, так и есть: CODE:004529DB push eax ; eax = указатель на имя файла CODE:004529DC call sub_4506FC ; = процедура удаления макроса Дальше работы на полчаса :) |
|
|
Дата: Июл 31, 2003 13:30:13 Значит дела такие: CRC проверок в проге нет, удалось избавиться от одного окошка, думаю за другими дело не станет... [ masquer Проще всего добавить свой код с FindFirstFile - FindNextFile.] Это излишне, достаточно заставить запускаться прогу и брать в качестве входного параметра полную строку к файлу, а дальше проблема решается написанием bat файла на обработку целого каталога. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.100 |