BOOL FreeConsole();
Declare Function FreeConsole Lib "kernel32" () As Long
元のコンソールの入出力バッファにアクセスするために取得したハンドルは、FreeConsole後は無効となる。例えば“CONOUT$”をCreateFile関数でオープン後FreeConsoleを実行したならば、たとえ再びコンソールをAllocConsoleで割り当てたとしても、WriteFile関数はERROR_INVALID_HANDLEを返すだろう。
戻り値は、関数の実行に成功したか否かを表す真偽値である。
void DoAllocCon()
{
int i;
DWORD cbWritten;
HANDLE hFile;
char buf[1000];
FreeConsole();
AllocConsole();
hFile = CreateFile(
"CONOUT$",
GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
for(i=1; i<=5; i++) {
wsprintf(buf, "%d ", i);
WriteFile(hFile, buf, lstrlen(buf), &cbWritten, NULL);
Sleep(1000);
}
CloseHandle(hFile);
FreeConsole();
}
Private Sub DoAllocCon()
Dim hFile As Long
Dim i As Long
Dim S As String
Dim WriteNum As Long
'コンソールの割り当て
AllocConsole
'コンソールバッファのオープン
hFile = CreateFile("CONOUT$", GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0)
'1秒に1回メッセージを表示
For i = 1 To 5
S = "count:" & i & vbCrLf
WriteFile hFile, S, lstrlen(S), WriteNum, 0
Sleep 1000
Next
'コンソールバッファのクローズ
CloseHandle hFile
'コンソールの開放
FreeConsole
End Sub