Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];

Вниз

работа с Dll   Найти похожие ветки 

 
Danchik   (2003-07-08 13:59) [0]

Помогите советом /подсказкой/, почему при вызове библиотеки выдаётся сообщение:
... class EOleSysError with message "Не был произведён вызов Colnitialize" ...


 
MBo   (2003-07-08 14:05) [1]

А если его произвести? ;)


 
Digitman   (2003-07-08 14:07) [2]


> почему ... "Не был произведён вызов Colnitialize"


потому что ты, обращаясь к библиотеке в доп.код.потоке, не произвел его.


 
Anatoly Podgoretsky   (2003-07-08 14:11) [3]

Прислушайся к рекомендации (приказу) системы, произведи.


 
Danchik   (2003-07-08 14:19) [4]

Чтото я не всё понял, приведу текст библиотеки:
library dll_proj;

uses
SysUtils,
Classes,
ComObj,
Windows,
ActiveX;

{$R *.res}
Procedure extractor() export; stdcall;
var
ServerIsRunning : boolean;
Unknown : IUnknown;
Result : HResult;
AppProgID : String;
App : Variant;
begin
try
//Указать программный идентификатор приложения-сервера
AppProgID:="AutoCAD.Application"; //тут вместот автокада можно влепить Word
ServerIsRunning := False;
Result := GetActiveObject(ProgIDToClassID(AppProgID),nil,Unknown);
if (Result = MK_E_UNAVAILABLE) then
//Создать один экземпляр сервера
App := CreateOleObject(AppProgID)
else
begin
//Соединиться с уже запущенной копией сервера
App := GetActiveOleObject(AppProgID);
( "(load c:/temp/tmp.lsp) Чтото я не всё понял, приведу текст библиотеки:
library dll_proj;

uses
SysUtils,
Classes,
ComObj,
Windows,
ActiveX;

{$R *.res}
Procedure extractor() export; stdcall;
var
ServerIsRunning : boolean;
Unknown : IUnknown;
Result : HResult;
AppProgID : String;
App : Variant;
begin
try
//Указать программный идентификатор приложения-сервера
AppProgID:="AutoCAD.Application"; //тут вместот автокада можно влепить Word
ServerIsRunning := False;
Result := GetActiveObject(ProgIDToClassID(AppProgID),nil,Unknown);
if (Result = MK_E_UNAVAILABLE) then
//Создать один экземпляр сервера
App := CreateOleObject(AppProgID)
else
begin
//Соединиться с уже запущенной копией сервера
App := GetActiveOleObject(AppProgID);
ServerIsRunning := True;
end;
//показать окно приложения на экране и проработать с приложением
App.Visible := True;
App.ActiveDocument.SendCommand("(load c:/temp/tmp.lsp)");
except
// тут ещё кое-что
end;
end;


exports extractor;


begin
end.

Смысл в том, чтобы передать в автокад команду загрузки LISP программы из Dll


 
Digitman   (2003-07-08 14:31) [5]


> Смысл в том, чтобы


смысл в том, чтобы ты рассказал, как ты в доп.код.потоке, обращающемся к DLL, вызываешь из нее процедуру extractor().


 
Digitman   (2003-07-08 14:31) [6]


> Смысл в том, чтобы


смысл в том, чтобы ты рассказал, как ты в доп.код.потоке, обращающемся к DLL, вызываешь из него (из кодового потока) процедуру extractor().


 
Danchik   (2003-07-08 14:37) [7]

Приведу вызов библиотеки:
var
Form1: TForm1;
implementation

Procedure extractor(); stdcall; external "dll_proj.dll";

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
try
extractor(); // Причём эта строка горит красным
except
ShowMessage("Ошибка при загрузочкеке DLL");
end;
end;


 
Danchik   (2003-07-08 14:37) [8]

Дело в том, что я не сталкивался с потоками


 
Digitman   (2003-07-08 14:49) [9]


> строка горит красным


это как ? а, может, у меня - зеленым ?) почем мне знать, что у тебя там и почему "горит" ?) ... изволь выражаться конкретными общеизвестными терминами)


и - попробуй-ка для начала вот так :

procedure TForm1.Button1Click(Sender: TObject);
begin
CoInitialize(nil);
try
extractor(); // Причём эта строка горит красным
finally
CoUnInitialize;
end;
end;


 
Danchik   (2003-07-08 14:58) [10]

Попробовал вставить, при компиляции:
CoInitialize(nil);
результат:
[Error] test_Dll_n.pas(29): Undeclared identifier: "CoInitialize"


 
Danchik   (2003-07-08 15:00) [11]

Удалено модератором


 
Danchik   (2003-07-08 15:22) [12]

Всем спасибо, я просто неуказал в разделе Uses
ComObj,
Всё заработало !



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.007 c
14-24614
3APA3A
2003-08-21 16:55
2003.09.08
С целью повышения образованности...


14-24642
Pindos
2003-08-20 01:52
2003.09.08
Please Help!!! Задача по Hard Drive! тобишь, по жесткому диску!


3-24383
Khloo!
2003-08-15 12:13
2003.09.08
Насколько устойчив Paradox?


7-24712
ruslanyd
2003-06-26 17:05
2003.09.08
Beep на спикер


11-24393
Admin_KOL
2002-06-27 17:34
2003.09.08
Старый форум





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский