Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Dll и макрос Excel

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Vstanka

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Имеется dll для работы с БД, которая в своем теле берет настройки из файла ini, который лежит там же, где и библиотека.  
 

Код:
 
if ( !FileExists( "example.ini" ) )
{
 // сообщение, что файл example.ini не найден
}  
 

 
Если вызываем библиотеку из приложения-оболочки, то файл с настройками находит\читает, а вот если запускаю в макросе Excel, то проверку существования файла не проходит. Пыталась сделать еще так:  
 
 

Код:
 String path( ExtractFileDir ( Application->ExeName ) + "\\example.ini" );
 if ( !FileExists( path.c_str( ) ) )
{
 // сообщение, что файл example.ini не найден
}  

 
Поиск файла происходит не в месте, где лежит библиотека, а в каталоге, где лежит exe-файл Excel'а? Как сделать проверку непосредственно в каталоге библиотеки? Т.к. кроме файла настроек есть еще dll'ки для подключения БД, которые запускающий процесс (excel) не находит, т.к. ищет их не в папке расположения dll, а в своей папке

Всего записей: 7 | Зарегистр. 20-08-2013 | Отправлено: 11:42 18-07-2014
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
#include <windows.h>

HINSTANCE g_hinstance;
//////////////////////////////////////////////////////////
__declspec(dllexport) void init(void)
{
    int i;
    char buf[MAX_PATH];

    i = GetModuleFileName(g_hinstance, buf, sizeof(buf));
    for( ; i && buf[i] != '\\'; --i)
        ;
    strcpy(&buf[i], "\\example.ini");
    MessageBox(NULL, buf, NULL, 0);
}

//////////////////////////////////////////////////////////
int __stdcall DllMain(HINSTANCE h, DWORD reason, void* x)
{
    if(DLL_PROCESS_ATTACH == reason)
    {
        g_hinstance = h;
        DisableThreadLibraryCalls(h);
    }
    return 1;
}

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 13:48 18-07-2014
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Dll и макрос Excel


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru