Artifact 3a5fb6fa17d9e24a87064b37f48345cbe94439d7
private import win32.ansi.windows;
// Hack!
//
// _acrtused_dllが勝手に終了時に標準入出力ハンドルを
// 閉じちゃって困るので、その辺りだけは閉じないような
// CloseHandleを突っ込んで回避。いいのかこれ。
extern(Windows)
{
private alias BOOL function(HANDLE) ClHnT;
private ClHnT Real_CloseHandle;
private HANDLE stdin;
private HANDLE stdout;
private HANDLE stderr;
BOOL CloseHandle( HANDLE h )
{
if( h==stdin ) return TRUE;
if( h==stdout ) return TRUE;
if( h==stderr ) return TRUE;
return Real_CloseHandle(h);
}
}
static this()
{
Real_CloseHandle = cast(ClHnT)
GetProcAddress( GetModuleHandle("kernel32.dll"), "CloseHandle" );
stdin = GetStdHandle(STD_INPUT_HANDLE );
stdout = GetStdHandle(STD_OUTPUT_HANDLE);
stderr = GetStdHandle(STD_ERROR_HANDLE );
}