Главная страница
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.024 c
14-1101562175
ИМХО
2004-11-27 16:29
2004.12.19
Шевченко лидирует в опросе "Лучший футболист Европы"


14-1101932119
Verg
2004-12-01 23:15
2004.12.19
А в чем сила?


1-1102067876
Aleksandr.
2004-12-03 12:57
2004.12.19
Как получить доступ к FMemory TMemoryStream?


1-1102255541
studentRSU
2004-12-05 17:05
2004.12.19
Работа с Excel


1-1101982135
Kat
2004-12-02 13:08
2004.12.19
чтобы сто строчек не писать?