Главная страница
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.026 c
14-1101926263
Knight
2004-12-01 21:37
2004.12.19
Можно ли подключить в VMWare модем?


1-1101483554
VasRog
2004-11-26 18:39
2004.12.19
Сортировка большого массива


1-1102403669
Checist [root]
2004-12-07 10:14
2004.12.19
Компонент для шифрования файла


14-1101799126
OneFragLeft
2004-11-30 10:18
2004.12.19
USB мышь и PS/2 мышь


14-1101503777
GEN++
2004-11-27 00:16
2004.12.19
Win98 на ноутбук (установка)