где описание CreateKompasApplication

Автор ink, 05.06.08, 21:07:40

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

ink

В help`е к Компас-мастер есть указание, что для того чтобы получить ссылку на интерфейс приложения Компас существует функция CreateKompasApplication. Но в заголовочных файлах ее нет. А в примерах приведен странный способ получения этой функции путем прямой ее загрузки из библиотеки kapi7.dll. Может кто прояснит, в чем тут дело и как все-таки получить ссылку на интерфейс.

udachnik

Может CreateKompasObject, а не CreateKompasApplication 8-)?

Вот тут еще глянте

http://forum.ascon.ru/index.php/topic,1651.0.html.


Функция CreateKompasApplication описана в модуле ksAuto.pas для Delhi.
Способ получения интерфейса можно посмотреть в этой http://forum.ascon.ru/index.php/topic,22788.msg157712.html#msg157712 теме, там есть исходный код и видео работы в отладчике, с пояснениями.

Альянс

...
//---------------------------------------------------------------------------
HINSTANCE kAPI5DLL, kAPI7DLL;
//---------------------------------------------------------------------------
LPDISPATCH (WINAPI *CreateKompasObject)();
LPDISPATCH (WINAPI *CreateKompasApplication)();
//---------------------------------------------------------------------------
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void * lpReserved)
{
  if (reason == DLL_PROCESS_ATTACH) {
kAPI5DLL = LoadLibraryW(L"kAPI5.DLL");
kAPI7DLL = LoadLibraryW(L"kAPI7.DLL");
CreateKompasObject = (LPDISPATCH (WINAPI *)())GetProcAddress(kAPI5DLL, "CreateKompasObject");
CreateKompasApplication = (LPDISPATCH (WINAPI *)())GetProcAddress(kAPI7DLL, "CreateKompasApplication");
  } else if (reason == DLL_THREAD_ATTACH) {
  } else if (reason == DLL_PROCESS_DETACH) {
FreeLibrary(kAPI5DLL);
FreeLibrary(kAPI7DLL);
  } else if (reason == DLL_THREAD_DETACH) {
  }
  return 1;
}
//-------------------------------------------------------------------------------
extern "C" unsigned int far __export pascal LIBRARYID()
{
  return 100;
}
//-------------------------------------------------------------------------------
extern "C" char * __export __pascal LIBRARYNAME()
{
  return "Пример";
}
//-------------------------------------------------------------------------------
extern "C" void __export __pascal LIBRARYENTRY(unsigned int Command)
{
  LPDISPATCH Application7, KompasObject;
  KompasObject = CreateKompasObject();
  Application7 = CreateKompasApplication();
  ...
  Application7->Release();
  KompasObject->Release();
}
...