Форум: "WinAPI";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
ВнизПоторки... Найти похожие ветки
← →
MacroDenS © (2004-11-02 13:40) [0]Доброго времени суток господа.
Исключительно для себя решил написать прогу, которая перебирает пароли к файлам Excel (просто возникла такая необходимость).
для работы с Excel использую следующее:
uses ..., ComObj, Excel97, Excel2000;
....
var
Excel:TExcelApplication;
Workbook:OleVariant;
....
Дале при нажатии на кнопку старт
Excel:=TExcelApplication.create(self);
Excel.visible[0]:=false;
Excel.autoquit:=true;
Далее идет вызов функции которая собственно и проверяет пароли, выглядит примерно так:
Procedure Process;stdcall;
var
Pas:String;
Flag:Boolean;
begin
pas:="";
flag:=false;
while not flag do
begin
try
workbook:=excel.workbooks.open(filename,...,pas,....,0);
flag:=true;
except
//генерация новой комбинации
end;
end;
end;
Так вот если эту процедуру выполнять просто по обращению, то в строке
workbook:=excel.workbooks.open(filename,...,pas,....,0);
возникает ошибка о неправильном пароле (это то мне и надо, после этого все нормально обрабатывается)
А если эту процедуру выкинуть в поток, то в этой строке возникает такая ошибка:
exception class EOLEException with message "Не был произведен вызов CoInitialize"
и соответственно проверки пароля уже нет, а процес переходи с секцию except.
Искал это CoInitialize в Делфовской справке, но так ничего и не нашел, если кто знает в чем проблема и как ее решить, прошу помочь.
За ранее благодарен, с Уважением MacroDenS.
← →
Digitman © (2004-11-02 13:50) [1]1. А на кой шут тебе доп.тред, если твоя "прога" только и занята тем что "перебирает пароли" ?
2. Если уж приспичило (думаю - дурь это. при такой постановке задачи), то в доп.трэде перед первым обращением к ole-механизму следует вызвать ту самую CoInitialize(nil), а по завершению этого доп.трэда безусловно вызвать CoUninitialize .. обе ф-ции объявлены в модуле ActiveX
← →
MacroDenS © (2004-11-02 13:59) [2]Большой сенк. Вечером попробую.
доп.треду я могу приоритет повысить, да приложением так удобнее управлять (в плане интерфейсной части)
← →
KSergey © (2004-11-03 11:16) [3]> [2] MacroDenS © (02.11.04 13:59)
> Большой сенк. Вечером попробую.
> доп.треду я могу приоритет повысить,
А основному? Разве нет?
Да и на кой шут его повышать? Думаешь прога будет быстрее работать?? ;)
PS
А вообще такая прога уже давно есть ;)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.054 c