
26.09.2016, 00:55
|
|
Познавший АНТИЧАТ
Регистрация: 09.03.2013
Сообщений: 1,771
С нами:
6935121
Репутация:
233
|
|
[QUOTE="Picador"]
Может херово объяснил. У меня есть, например, .asi плагин. Я хочу следить за тем, как в нем изменяются переменные. Для этого хочу вывести их каким-нибудь образом на экран. Лучше всего - в консольку. Как это можно сделать, как через длл создать консоль? Такую. в которую потом ожно будет сделать cout
C++:
Код:
/* некоторые инклуды лишние, не помню какие из них нужны
#include
#include
#include
#include
#include
#include
*/
void
RedirectIOToConsole
(
void
)
{
const
WORD MAX_CONSOLE_LINES
=
500
;
int
hConHandle
;
long
lStdHandle
;
CONSOLE_SCREEN_BUFFER_INFO coninfo
;
FILE
*
fp
;
// allocate a console for this app
AllocConsole
(
)
;
// set the screen buffer to be big enough to let us scroll text
GetConsoleScreenBufferInfo
(
GetStdHandle
(
STD_OUTPUT_HANDLE
)
,
&
coninfo
)
;
coninfo
.
dwSize
.
Y
=
MAX_CONSOLE_LINES
;
SetConsoleScreenBufferSize
(
GetStdHandle
(
STD_OUTPUT_HANDLE
)
,
coninfo
.
dwSize
)
;
// redirect unbuffered STDOUT to the console
lStdHandle
=
(
long
)
GetStdHandle
(
STD_OUTPUT_HANDLE
)
;
hConHandle
=
_open_osfhandle
(
lStdHandle
,
_O_TEXT
)
;
fp
=
_fdopen
(
hConHandle
,
"w"
)
;
*
stdout
=
*
fp
;
setvbuf
(
stdout
,
NULL
,
_IONBF
,
0
)
;
// redirect unbuffered STDIN to the console
lStdHandle
=
(
long
)
GetStdHandle
(
STD_INPUT_HANDLE
)
;
hConHandle
=
_open_osfhandle
(
lStdHandle
,
_O_TEXT
)
;
fp
=
_fdopen
(
hConHandle
,
"r"
)
;
*
stdin
=
*
fp
;
setvbuf
(
stdin
,
NULL
,
_IONBF
,
0
)
;
// redirect unbuffered STDERR to the console
lStdHandle
=
(
long
)
GetStdHandle
(
STD_ERROR_HANDLE
)
;
hConHandle
=
_open_osfhandle
(
lStdHandle
,
_O_TEXT
)
;
fp
=
_fdopen
(
hConHandle
,
"w"
)
;
*
stderr
=
*
fp
;
setvbuf
(
stderr
,
NULL
,
_IONBF
,
0
)
;
// make cout, wcout, cin, wcin, wcerr, cerr, wclog and clog
// point to console as well
std
::
ios
::
sync_with_stdio
(
)
;
}
|
|
|