Главная страница
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.47 MB
Время: 0.033 c
4-1099779694
jonni
2004-11-07 01:21
2004.12.19
GetWindowLong


1-1102320665
tytus
2004-12-06 11:11
2004.12.19
Как проверить ввод символа в TEdit?


3-1101129616
Прямой
2004-11-22 16:20
2004.12.19
BLOB считать в TImage не могу = прикол


14-1101910349
syte_ser78
2004-12-01 17:12
2004.12.19
как лечится?


3-1100608109
Tor
2004-11-16 15:28
2004.12.19
из dbf в txt через TADODataSet