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

Вниз

Поторки...   Найти похожие ветки 

 
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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.022 c
4-1099507467
Djuice
2004-11-03 21:44
2004.12.19
Исходник завершения процесса


9-1092940461
Колбасьев
2004-08-19 22:34
2004.12.19
Анимация X файлов + волосы на текстуре


1-1101844649
Fido24
2004-11-30 22:57
2004.12.19
Как хранить файло в своем собственном формате?


1-1102428928
Гость
2004-12-07 17:15
2004.12.19
Модальное окно


1-1101908432
NovaPS
2004-12-01 16:40
2004.12.19
Delphi DLL и Excel