Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
nut888 Гость
|
Добавлено: Пн Сен 09 2002 14:24 Заголовок сообщения: Вызов функции из dll |
|
|
W2000/VC6 Вопрос такой Я вызываю из внешней dll функцию типа void без параметов. Эта функция осуществляет вывод в stderr. Как мне этот вывод получить
Пример
typedef void (*LIBSYSSPROC) (void);
void main (void)
{
HMODULE module = LoadLibrary("libsyss.dll"); if (module == NULL) { printf("ERROR - error loading library\n"); return; } LIBSYSSPROC my_proc = (LIBSYSSPROC) GetProcAddress(module,"ENV_print_version");
if (my_proc == NULL) { printf("ERROR - error getting proc address\n"); FreeLibrary(module); return; }
my_proc();
FreeLibrary(module);
} |
|
Вернуться к началу |
|
|
andrew_s Гость
|
Добавлено: Вт Сен 10 2002 17:44 Заголовок сообщения: Re: Вызов функции из dll |
|
|
HANDLE std_e; std_e = CreateFile("stderr.txt",GENERIC_READ|GENERIC_WRITE,0,NULL,CREATE_ALWAY.. || !SetStdHandle(STD_ERROR_HANDLE,std_e)) { ... exit ... } ... LoadLibrary(...); GetProcAddress(...); my_proc(); Free.. этого делай с STDERR.TXT что хочешь Главная фишка - вызов SetStdHandle ДО загрузки dll и вызов CloseHandle ПОСЛЕ выгрузки. Если тебе нужен старый хэндл stderr, используй GetStdHandle. |
|
Вернуться к началу |
|
|
andrew_s Гость
|
Добавлено: Вт Сен 10 2002 17:51 Заголовок сообщения: Re: Вызов функции из dll |
|
|
Блин кусок кода не влез (
Отправляю заново (надеюся сейчас ничего не пропадет...)
HANDLE std_e; std_e = CreateFile("stderr.txt", GENERIC_READ|GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);
if(( std_e == INVALID_HANDLE_VALUE) || !SetStdHandle( STD_ERROR_HANDLE, std_e) ) { ... exit ... } ...
LoadLibrary(...);
GetProcAddress(...);
my_proc();.. этого делай с STDERR.TXT что хочешь Главная фишка - вызов SetStdHandle ДО загрузки dll и вызов CloseHandle ПОСЛЕ выгрузки. Если тебе нужен старый хэндл stderr, используй GetStdHandle. |
|
Вернуться к началу |
|
|
andrew_s Гость
|
Добавлено: Вт Сен 10 2002 17:54 Заголовок сообщения: Re: Вызов функции из dll |
|
|
@$%^%#^ !!!!
Что за хрень!!
LoadLibrary(...);
GetProcAddress(...);
my_proc();
.. как это должно выглядеть)
После этого делай с STDERR.TXT что хочешь... |
|
Вернуться к началу |
|
|
|