WriteConsoleInput function (Windows)

Switch View :
ScriptFree
WriteConsoleInput function

Applies to: desktop apps only

Writes data directly to the console input buffer.

Syntax

BOOL WINAPI WriteConsoleInput(
  __in   HANDLE hConsoleInput,
  __in   const INPUT_RECORD *lpBuffer,
  __in   DWORD nLength,
  __out  LPDWORD lpNumberOfEventsWritten
);

Parameters

hConsoleInput [in]

A handle to the console input buffer. The handle must have the GENERIC_WRITE access right. For more information, see Console Buffer Security and Access Rights.

lpBuffer [in]

A pointer to an array of INPUT_RECORD structures that contain data to be written to the input buffer.

The storage for this buffer is allocated from a shared heap for the process that is 64 KB in size. The maximum size of the buffer will depend on heap usage.

nLength [in]

The number of input records to be written.

lpNumberOfEventsWritten [out]

A pointer to a variable that receives the number of input records actually written.

Return value

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. To get extended error information, call GetLastError.

Remarks

WriteConsoleInput places input records into the input buffer behind any pending events in the buffer. The input buffer grows dynamically, if necessary, to hold as many events as are written.

This function uses either Unicode characters or 8-bit characters from the console's current code page. The console's code page defaults initially to the system's OEM code page. To change the console's code page, use the SetConsoleCP or SetConsoleOutputCP functions, or use the chcp or mode con cp select= commands.

Requirements

Minimum supported client

Windows 2000 Professional

Minimum supported server

Windows 2000 Server

Header

Wincon.h (include Windows.h)

Library

Kernel32.lib

DLL

Kernel32.dll

Unicode and ANSI names

WriteConsoleInputW (Unicode) and WriteConsoleInputA (ANSI)

See also

Console Functions
INPUT_RECORD
Low-Level Console Input Functions
MapVirtualKey
PeekConsoleInput
ReadConsoleInput
SetConsoleCP
SetConsoleOutputCP
VkKeyScan

 

 

Send comments about this topic to Microsoft

Build date: 2/3/2012

Community Content

Kroum Grigorov
sample code sending 'a' key to edit.com

#include "stdafx.h"
#include <windows.h>
#include <conio.h>
#define VK_A 0x41
#define MAPVK_VK_TO_VSC 0
DWORD WINAPI test(LPVOID lp)
{
    system("edit");
    return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
    HANDLE hConIn = CreateFile(L"CONIN$", GENERIC_READ | GENERIC_WRITE,
        FILE_SHARE_READ, NULL, OPEN_EXISTING,
        FILE_ATTRIBUTE_NORMAL, 0);
    DWORD dwTmp;
    CreateThread(NULL, 0, test, (LPDWORD)0, 0, &dwTmp);
    Sleep( 1000 );
    INPUT_RECORD ir[2];
    ir[0].EventType = KEY_EVENT;
    ir[0].Event.KeyEvent.bKeyDown = TRUE;
    ir[0].Event.KeyEvent.dwControlKeyState = 0;
    ir[0].Event.KeyEvent.uChar.UnicodeChar = 'a';
    ir[0].Event.KeyEvent.wRepeatCount = 1;
    ir[0].Event.KeyEvent.wVirtualKeyCode = VK_A;
    ir[0].Event.KeyEvent.wVirtualScanCode = MapVirtualKey(VK_A, MAPVK_VK_TO_VSC);
    ir[1].EventType = KEY_EVENT;
    ir[1].Event.KeyEvent.bKeyDown = FALSE;
    ir[1].Event.KeyEvent.dwControlKeyState = 0;
    ir[1].Event.KeyEvent.uChar.UnicodeChar = 'a';
    ir[1].Event.KeyEvent.wRepeatCount = 1;
    ir[1].Event.KeyEvent.wVirtualKeyCode = VK_A;
    ir[1].Event.KeyEvent.wVirtualScanCode = MapVirtualKey(VK_A, MAPVK_VK_TO_VSC);
    WriteConsoleInput (hConIn, ir, 2, &dwTmp);

    Sleep(1000);
    return 0;
}