powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / DLL и Консоль
12 сообщений из 12, страница 1 из 1
DLL и Консоль
    #33251490
Тупой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет. Подскажите как мне из DLL поднять консоль ?. Понимаю, что идея дурацкая, но очень нужно :)
cout<< ' ';
не прокатывает.
...
Рейтинг: 0 / 0
DLL и Консоль
    #33251497
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AllocConsole ?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
DLL и Консоль
    #33251522
Тупой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не прокатило.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
#pragma once
#define p(i) parm->p[(i)].val

void COUT (ParamBlk FAR *parm) 
{ 
char *szStrOut = (char*)malloc(p( 0 ).ev_length);
_HLock(p( 0 ).ev_handle);
memmove(szStrOut,_HandToPtr(p( 0 ).ev_handle),p( 0 ).ev_length);
_HUnLock(p( 0 ).ev_handle);

AllocConsole();
cout << szStrOut;
cin >> szStrOut;
FreeConsole();
}

Консоль не поднимает, хотя в MSDN написано, что именно для того и существет , чтобы обеспечить страндартный ввод и вывод в консоль из процесса DLL.
...
Рейтинг: 0 / 0
DLL и Консоль
    #33251526
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ММММ. А может LastError что-то даст ?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
DLL и Консоль
    #33251547
Тупой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GetLastError выдал 6.
6 The handle is invalid. ERROR_INVALID_HANDLE
Это как понимать ?
...
Рейтинг: 0 / 0
DLL и Консоль
    #33251611
Фотография Землекоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AllocConsole()
GetStdHandle(STD_OUTPUT_HANDLE)
WriteConsole()
...
Рейтинг: 0 / 0
DLL и Консоль
    #33251795
Тупой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Землекоп, озадачил ты меня :) Давай пример вывода ASCI строки в консоль из DLL.
...
Рейтинг: 0 / 0
DLL и Консоль
    #33252620
Фотография Землекоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТупойЗемлекоп, озадачил ты меня :) Давай пример вывода ASCI строки в консоль из DLL.

Сразу оговорюсь, что это работающий пример, но не более того.

в DLL

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
// testdll.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"
#include "testdll.h"


BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
    switch (ul_reason_for_call)
	{
		case DLL_PROCESS_ATTACH:
		case DLL_THREAD_ATTACH:
		case DLL_THREAD_DETACH:
		case DLL_PROCESS_DETACH:
			break;
    }
    return TRUE;
}



HANDLE hOut=NULL;
extern "C"
	{
__declspec(dllexport) void CreateConsole()
	{
	if(hOut==NULL)
		{
		AllocConsole();
		hOut = GetStdHandle(STD_OUTPUT_HANDLE);
		}
 
	}

__declspec(dllexport) void DestroyConsole()
	{
	if(hOut!=NULL)
		{
		FreeConsole();
		hOut = NULL;
		}

	}


__declspec(dllexport) void PrintOnConsole(char *pTxt)
		{
		DWORD NumberOfCharsWritten;
		WriteConsole(hOut, pTxt,lstrlen(pTxt),&NumberOfCharsWritten, NULL);
		}
	}


Пример вызова

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
// testconsoledll.cpp : Defines the entry point for the application.
//

#include "stdafx.h"

extern "C" __declspec(dllimport) void PrintOnConsole(char *pTxt);
extern "C" __declspec(dllexport) void CreateConsole();
extern "C" __declspec(dllexport) void DestroyConsole();

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
	{
	CreateConsole();
	PrintOnConsole("TEST");
	MessageBox(NULL,"Console test","Console test",MB_OK);
	DestroyConsole();
	return  0 ;
	}
...
Рейтинг: 0 / 0
DLL и Консоль
    #33252797
Тупой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да! То что надо ! Клас!!!
А в юникоде? Где-то примерчик тут видел, преобразования в широкие символы. Что-то получившаяся консоль ни хочет отображать Руссишь ленгвичь. Абра-кадабра выходит :)
...
Рейтинг: 0 / 0
DLL и Консоль
    #33252818
Фотография Землекоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТупойДа! То что надо ! Клас!!!
А в юникоде? Где-то примерчик тут видел, преобразования в широкие символы. Что-то получившаяся консоль ни хочет отображать Руссишь ленгвичь. Абра-кадабра выходит :)

Консоль вероятно использует OEM кодировку. Перед выводом можно использовать функцию CharToOem.
...
Рейтинг: 0 / 0
DLL и Консоль
    #33253554
Тупой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, пасиб, прокатило. С выводом понятно, а как нить можно организовать чтение ?
...
Рейтинг: 0 / 0
DLL и Консоль
    #33253889
Фотография Землекоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТупойАга, пасиб, прокатило. С выводом понятно, а как нить можно организовать чтение ?

Аналогично

hIn = GetStdHandle(STD_INPUT_HANDLE);
ReadConsoleInput(hIn, ....);
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / DLL и Консоль
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]