Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
8-1096016836
dracula
2004-09-24 13:07
2004.12.19
как из midi файла прочитать тэги


4-1099405772
DSKalugin
2004-11-02 17:29
2004.12.19
Как изменить частоту видеоадаптера?


4-1099683711
Piter
2004-11-05 22:41
2004.12.19
Как определить Handle окна, которое находится под курсором мыщи?


9-1092690879
gg_no_re
2004-08-17 01:14
2004.12.19
Как отключить Vsync


3-1100690038
_mandrake_
2004-11-17 14:13
2004.12.19
sql снифер





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский