Здравствуйте, Leonidze, Вы писали:
L>Традиционно хэндл приложения (hInstance) получается через GetModuleHandle(nil); эта функция возвращает хэндл работающего кода, т.е. для dll это будет хэндл длл, для программы — хэндл программы. Кроме того, переменная hInstance — ссылающаяся на собственный хэндл кода afaik инициализируется RTL при старте.
L>Не совсем понял задачу — надо из длл вызвать какое приложение? которое dll загрузило? в этом случае удобнее предусмотреть функцию в DLL которая будет хранить (опять-же, в длл) указатель на объект/интерфейс/функцию основной программы. Т.е. схема примерно такая: L>1. грузим длл L>2. вызываем функцию длл передавая ей как параметр адрес функции/объекта/интерфейса программы L>3. из длл по полученному указателю вызываются функции программы. L>Такая схема удобна тем что нет необходимости динамически определять адреса функций в длл, достаточно определить интерфейс (в широком смысле слова) и передать один указатель.
Последний способ не плох, но придется либо хранить глобальный "адрес функции/объекта/интерфейса программы" или таскать его при каждом вызове в контексте...
А вот GetModuleHandle(nil); в DLL как раз возвращает хендл EXE вроди