Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как из Dll вызвать консольное окно

15K
26 апреля 2006 года
DubAlex
10 / / 26.04.2006
Есть проект, в результате выполнения которого формируется DLL. Можно ли вызывать консольное окно из этого проекта? Если можно, то как?
398
26 апреля 2006 года
Alexandoros
630 / / 21.10.2005
Цитата:
Originally posted by DubAlex
Есть проект, в результате выполнения которого формируется DLL. Можно ли вызывать консольное окно из этого проекта? Если можно, то как?


Шиза косит наши ряды?
Проекты не выполняются - они компилируются.
Длл не выполняется сама по себе - нужна ехе программа.
Консоль не вызывается из проекта, она вызывается из кода программы или кода длл.

Теперь еще разок вопрос.

15K
26 апреля 2006 года
DubAlex
10 / / 26.04.2006
Цитата:
Originally posted by Alexandoros
Шиза косит наши ряды?
Проекты не выполняются - они компилируются.
Длл не выполняется сама по себе - нужна ехе программа.
Консоль не вызывается из проекта, она вызывается из кода программы или кода длл.

Теперь еще разок вопрос.



Есть проект, в результате компилирования которого формируется DLL. Есть exe программа, которая работает с этой DLL. Можно ли вызывать консольное окно из кода DLL? Если можно, то как?

243
26 апреля 2006 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by DubAlex
Есть проект, в результате компилирования которого формируется DLL. Есть exe программа, которая работает с этой DLL. Можно ли вызывать консольное окно из кода DLL? Если можно, то как?


Думаю что ты хочешь выразить, что тебе нужна функция AllocConsole. Смотреть туда: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/allocconsole.asp

398
26 апреля 2006 года
Alexandoros
630 / / 21.10.2005
Вот у меня код под носом лежит

Код:
COORD coord;
                    _CONSOLE_SCREEN_BUFFER_INFO ConsoleScreenBufferInfo ;

                    if(AllocConsole())
                    {
                        hConsole = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE,
                            FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CONSOLE_TEXTMODE_BUFFER, 0) ;

                        if(hConsole == INVALID_HANDLE_VALUE)
                            return;

                        GetConsoleScreenBufferInfo(hConsole, &ConsoleScreenBufferInfo);
                        coord.X = 101; coord.Y = 800;
                        SetConsoleScreenBufferSize(hConsole, coord);
                        SetConsoleActiveScreenBuffer(hConsole);

                        ConsoleScreenBufferInfo.dwSize.X = 102;
                        ConsoleScreenBufferInfo.srWindow.Right = 100;
                        ConsoleScreenBufferInfo.dwMaximumWindowSize.X = 102;
                        SetConsoleWindowInfo(hConsole, TRUE, &ConsoleScreenBufferInfo.srWindow);

                        SetStdHandle(STD_OUTPUT_HANDLE, hConsole);
                        SetStdHandle(STD_ERROR_HANDLE, hConsole);

                        flInnerCons = true;
                    } //if(AllocConsole())
                    else
                    {
                        hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
                    }//if(AllocConsole())
15K
26 апреля 2006 года
DubAlex
10 / / 26.04.2006
Цитата:
Originally posted by Alexandoros
Вот у меня код под носом лежит

 
Код:
COORD coord;   
_CONSOLE_SCREEN_BUFFER_INFO ConsoleScreenBufferInfo ;
if(AllocConsole())
{                       hConsole = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CONSOLE_TEXTMODE_BUFFER, 0) ;
...
                   
...}//if(AllocConsole())


Это я попробывал. Если создать проект, как Win32 Application, то этот код работает нормально.
А если вставлять в мой проект (который при компиляции создает DLL), то в момент выполнения функции CreateConsoleScreenBuffer() выдается ошибка:
"First-chance exception in my.exe (mydata.DLL): 0xC0000005: Access Violation"
Причем если запустить приложение, которое использует эту DLL, ошибка не выводится. Обнаруживается она только во время трассировки.

398
26 апреля 2006 года
Alexandoros
630 / / 21.10.2005
А ты поди свою длл и запускаеш через F5/Ctrl+F5, да????
15K
26 апреля 2006 года
DubAlex
10 / / 26.04.2006
Цитата:
Originally posted by Alexandoros
А ты поди свою длл и запускаеш через F5/Ctrl+F5, да????


Да. А что от этого меняется? Окно на экране не появляется и отобразить на нем я ничего не могу.

398
26 апреля 2006 года
Alexandoros
630 / / 21.10.2005
Цитата:
Originally posted by DubAlex
Да. А что от этого меняется? Окно на экране не появляется и отобразить на нем я ничего не могу.


Тебе ничего не сказали мои слова выше о том, что длл сама не запускается - нужна программа ехе для загрузки и запуска длл? Ясен хрен ниче работать не будет. Длл нужно грузить из основной программы.

15K
26 апреля 2006 года
DubAlex
10 / / 26.04.2006
Цитата:
Originally posted by Alexandoros
Тебе ничего не сказали мои слова выше о том, что длл сама не запускается - нужна программа ехе для загрузки и запуска длл? Ясен хрен ниче работать не будет. Длл нужно грузить из основной программы.


Alexandoros, я знаю, что DLL сама не запускается, знаю, что нужна специальная программа. Просто я сейчас перепроверил: оказалось, что я DLL копировал в папку со старой версией программы, а саму программу запускал из другой папки. Просто по инерции нажимал
Пуск->Все программы->myproject. Невнимателен. Ты уж извини, что отнял у тебя лишнее время. Спасибо тебе за помощь.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог