Win API ReadConsole(...)
を使用しようとしていますが、コンソールからの入力を中止するために区切り文字を渡したいとします。 以下のコードは動作しますが、入力は\r\n
の読み込みを停止します。 例えば、'.'
のコンソール入力の読み上げをやめてください。win api readConsole()
void read(char *cIn, char delim)
{
HANDLE hFile;
DWORD charsRead;
DWORD charsToRead = MAX_PATH;
CONSOLE_READCONSOLE_CONTROL cReadControl;
cReadControl.nLength = sizeof(CONSOLE_READCONSOLE_CONTROL);
cReadControl.nInitialChars = 0;
cReadControl.dwCtrlWakeupMask = delim;
cReadControl.dwControlKeyState = NULL;
DWORD lpMode;
// char cIn[MAX_PATH]; //-- buffer to hold data from the console
hFile = CreateFile("CONIN$", GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_WRITE | FILE_SHARE_READ, NULL,
OPEN_EXISTING, 0, NULL);
GetConsoleMode(hFile,&lpMode);
// lpMode &= ~ENABLE_LINE_INPUT; //-- turns off this flag
// SetConsoleMode(hFile, lpMode); //-- set the mode with the new flag off
bool read = ReadConsole(hFile, cIn, charsToRead * sizeof(TCHAR), &charsRead, &cReadControl);
cIn[charsRead - 2] = '\0';
}
私はこれを行うには、他の簡単な方法がある知っているが、私はただ勝利のAPI機能のいくつかを理解しようとするとどのようにそれらを使用することになっています。
ありがとうございます。
フルコントロールコンソールの入力を希望し、押されたときに(* VK_RETURN *を待つのではなく)、* ReadConsoleInput *が必要です。ReadConsole * – RbMm
@RbMmありがとうございます。 – dmaelect