Как из Dll вызвать консольное окно
Есть проект, в результате выполнения которого формируется DLL. Можно ли вызывать консольное окно из этого проекта? Если можно, то как?
Шиза косит наши ряды?
Проекты не выполняются - они компилируются.
Длл не выполняется сама по себе - нужна ехе программа.
Консоль не вызывается из проекта, она вызывается из кода программы или кода длл.
Теперь еще разок вопрос.
Шиза косит наши ряды?
Проекты не выполняются - они компилируются.
Длл не выполняется сама по себе - нужна ехе программа.
Консоль не вызывается из проекта, она вызывается из кода программы или кода длл.
Теперь еще разок вопрос.
Есть проект, в результате компилирования которого формируется DLL. Есть exe программа, которая работает с этой DLL. Можно ли вызывать консольное окно из кода DLL? Если можно, то как?
Есть проект, в результате компилирования которого формируется DLL. Есть exe программа, которая работает с этой DLL. Можно ли вызывать консольное окно из кода DLL? Если можно, то как?
Думаю что ты хочешь выразить, что тебе нужна функция AllocConsole. Смотреть туда: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/allocconsole.asp
_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())
Вот у меня код под носом лежит
_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, ошибка не выводится. Обнаруживается она только во время трассировки.
А ты поди свою длл и запускаеш через F5/Ctrl+F5, да????
Да. А что от этого меняется? Окно на экране не появляется и отобразить на нем я ничего не могу.
Да. А что от этого меняется? Окно на экране не появляется и отобразить на нем я ничего не могу.
Тебе ничего не сказали мои слова выше о том, что длл сама не запускается - нужна программа ехе для загрузки и запуска длл? Ясен хрен ниче работать не будет. Длл нужно грузить из основной программы.
Тебе ничего не сказали мои слова выше о том, что длл сама не запускается - нужна программа ехе для загрузки и запуска длл? Ясен хрен ниче работать не будет. Длл нужно грузить из основной программы.
Alexandoros, я знаю, что DLL сама не запускается, знаю, что нужна специальная программа. Просто я сейчас перепроверил: оказалось, что я DLL копировал в папку со старой версией программы, а саму программу запускал из другой папки. Просто по инерции нажимал
Пуск->Все программы->myproject. Невнимателен. Ты уж извини, что отнял у тебя лишнее время. Спасибо тебе за помощь.