Окно вывода консоли в DLL - PullRequest
1 голос
/ 03 мая 2010

Я пытаюсь перенаправить вывод из моей DLL во внешнее консольное окно для легкой отладки.

Мне сообщили об AllocConsole, но я не могу воспроизвести его, то есть окно консоли не появляется.

Моя текущая среда - Visual Studio 2005.

Я попробовал следующий пример, полученный из Интернета,

AllocConsole();
HANDLE han = GetStdHandle(STD_OUTPUT_HANDLE);
WriteConsole(han,"hello",6,new DWORD,0);

пока ничего не происходит. Может ли кто-то указать мне правильное направление, если создание окна консоли через DLL возможно в первую очередь.

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 03 мая 2010

Правильный способ вывода строк отладки - через OutputDebugString(), с соответствующим средством отладки, прослушивающим выходные строки.

2 голосов
/ 03 мая 2010

После загрузки ничего особенного в библиотеках DLL нет, поэтому нет никакого способа, которым распределение консолей могло бы быть иным для DLL, чем для EXE, который первоначально загрузил ее.

Сказав это, процесс может быть связан только с одной консолью за раз, поэтому, если к процессу уже подключена консоль, то выделение новой не будет делать ничего (я предполагаю, что вы проверяете возвращаемое значение AllocConsole ? Что оно возвращает? Что возвращает GetLastError?)

Есть и другие возможности. Например, если ваша DLL загружена в службу, то служба (скорее всего) будет работать под другой оконной станцией, чем текущий вошедший в систему пользователь, поэтому, если вы создадите окно консоли, вы не сможете его увидеть. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...