⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 console.c

📁 PocketCMD是与pocketconsole配合实用的命令行解释器(Shell)
💻 C
字号:
/* $Id: console.c,v 1.1.1.1 2004/02/15 23:24:43 pfalcon Exp $ * *  CONSOLE.C - console input/output functions. * * *  History: * *    20-Jan-1999 (Eric Kohl <ekohl@abo.rhein-zeitung.de>) *        started */#include "config.h"#include "cmd.h"#define OUTPUT_BUFFER_SIZE  4096#ifdef _DEBUGVOID DebugPrintf (LPTSTR szFormat, ...){	TCHAR szOut[OUTPUT_BUFFER_SIZE];	va_list arg_ptr;	DWORD dwWritten;	va_start (arg_ptr, szFormat);	_vstprintf (szOut, szFormat, arg_ptr);	va_end (arg_ptr);	WriteConsole (GetStdHandle (STD_ERROR_HANDLE),	           szOut,	           _tcslen(szOut),	           &dwWritten,	           NULL);#if 0	OutputDebugString (szOut);#endif}#endif /* _DEBUG */VOID ConInDisable (VOID){	HANDLE hInput = GetStdHandle (STD_INPUT_HANDLE);	DWORD dwMode;	GetConsoleMode (hInput, &dwMode);	dwMode &= ~ENABLE_PROCESSED_INPUT;	SetConsoleMode (hInput, dwMode);}VOID ConInEnable (VOID){	HANDLE hInput = GetStdHandle (STD_INPUT_HANDLE);	DWORD dwMode;	GetConsoleMode (hInput, &dwMode);	dwMode |= ENABLE_PROCESSED_INPUT;	SetConsoleMode (hInput, dwMode);}VOID ConInDummy (VOID){	HANDLE hInput = GetStdHandle (STD_INPUT_HANDLE);	INPUT_RECORD dummy;	DWORD  dwRead;#ifdef _DEBUG	if (hInput == INVALID_HANDLE_VALUE)		DebugPrintf (_T("Invalid input handle!!!\n"));#endif /* _DEBUG */	ReadConsoleInput (hInput, &dummy, 1, &dwRead);}VOID ConInFlush (VOID){	FlushConsoleInputBuffer (GetStdHandle (STD_INPUT_HANDLE));}VOID ConInKey (PINPUT_RECORD lpBuffer){	HANDLE hInput = GetStdHandle (STD_INPUT_HANDLE);	DWORD  dwRead;#ifdef _DEBUG	if (hInput == INVALID_HANDLE_VALUE)		DebugPrintf (_T("Invalid input handle!!!\n"));#endif /* _DEBUG */	do	{		ReadConsoleInput (hInput, lpBuffer, 1, &dwRead);		if ((lpBuffer->EventType == KEY_EVENT) &&			(lpBuffer->Event.KeyEvent.bKeyDown == TRUE))			break;	}	while (TRUE);}VOID ConInString (LPTSTR lpInput, DWORD dwLength){	DWORD dwOldMode;	DWORD dwRead;	HANDLE hFile;	LPTSTR p;	DWORD  i;	ZeroMemory (lpInput, dwLength * sizeof(TCHAR));	hFile = GetStdHandle (STD_INPUT_HANDLE);	GetConsoleMode (hFile, &dwOldMode);	SetConsoleMode (hFile, ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT);	ReadFile (hFile, lpInput, dwLength, &dwRead, NULL);	p = lpInput;	for (i = 0; i < dwRead; i++, p++)	{		if (*p == _T('\x0d'))		{			*p = _T('\0');			break;		}	}	SetConsoleMode (hFile, dwOldMode);}VOID ConOutChar (TCHAR tc){	DWORD dwWritten;	CHAR c;	WideCharToMultiByte(CP_ACP, 0, &tc, 1, &c, 1,NULL, NULL); 	WriteFile (GetStdHandle (STD_OUTPUT_HANDLE),	           &c,	           1,	           &dwWritten,	           NULL);}VOID ConOutPuts (LPTSTR sztText){	DWORD dwWritten;	CHAR szText[4096];	WideCharToMultiByte(CP_ACP, 0, sztText, -1, szText, 4096, NULL, NULL); 	WriteFile (GetStdHandle (STD_OUTPUT_HANDLE),	           szText,	           strlen(szText),	           &dwWritten,	           NULL);	WriteFile (GetStdHandle (STD_OUTPUT_HANDLE),	           "\n",	           1,	           &dwWritten,	           NULL);}VOID ConOutPrintf (LPTSTR szFormat, ...){	CHAR szOut[OUTPUT_BUFFER_SIZE];	WCHAR sztOut[OUTPUT_BUFFER_SIZE];	DWORD dwWritten;	va_list arg_ptr;	va_start (arg_ptr, szFormat);	_vstprintf (sztOut, szFormat, arg_ptr);	va_end (arg_ptr);	WideCharToMultiByte(CP_ACP, 0, sztOut, -1, szOut, OUTPUT_BUFFER_SIZE, NULL, NULL); 	WriteFile (GetStdHandle (STD_OUTPUT_HANDLE),	           szOut,	           strlen(szOut) ,	           &dwWritten,	           NULL);}VOID ConErrChar (TCHAR c){	DWORD dwWritten;	WriteConsole (GetStdHandle (STD_ERROR_HANDLE),	           &c,	           1,	           &dwWritten,	           NULL);}VOID ConErrPuts (LPTSTR szText){	DWORD dwWritten;	WriteConsole (GetStdHandle (STD_ERROR_HANDLE),	           szText,	           _tcslen(szText),	           &dwWritten,	           NULL);	WriteConsole (GetStdHandle (STD_ERROR_HANDLE),	           _T ("\n"),	           1,	           &dwWritten,	           NULL);}VOID ConErrPrintf (LPTSTR szFormat, ...){	TCHAR szOut[OUTPUT_BUFFER_SIZE];	DWORD dwWritten;	va_list arg_ptr;	va_start (arg_ptr, szFormat);	_vstprintf (szOut, szFormat, arg_ptr);	va_end (arg_ptr);	WriteConsole (GetStdHandle (STD_ERROR_HANDLE),	           szOut,	           _tcslen(szOut),	           &dwWritten,	           NULL);}VOID SetCursorXY (SHORT x, SHORT y){	COORD coPos;	coPos.X = x;	coPos.Y = y;	SetConsoleCursorPosition (GetStdHandle (STD_OUTPUT_HANDLE), coPos);}VOID GetCursorXY (PSHORT x, PSHORT y){	CONSOLE_SCREEN_BUFFER_INFO csbi;	GetConsoleScreenBufferInfo (GetStdHandle (STD_OUTPUT_HANDLE), &csbi);	*x = csbi.dwCursorPosition.X;	*y = csbi.dwCursorPosition.Y;}SHORT GetCursorX (VOID){	CONSOLE_SCREEN_BUFFER_INFO csbi;	GetConsoleScreenBufferInfo (GetStdHandle (STD_OUTPUT_HANDLE), &csbi);	return csbi.dwCursorPosition.X;}SHORT GetCursorY (VOID){	CONSOLE_SCREEN_BUFFER_INFO csbi;	GetConsoleScreenBufferInfo (GetStdHandle (STD_OUTPUT_HANDLE), &csbi);	return csbi.dwCursorPosition.Y;}VOID GetScreenSize (PSHORT maxx, PSHORT maxy){	CONSOLE_SCREEN_BUFFER_INFO csbi;	GetConsoleScreenBufferInfo (GetStdHandle (STD_OUTPUT_HANDLE), &csbi);	if (maxx)		*maxx = csbi.dwSize.X;	if (maxy)		*maxy = csbi.dwSize.Y;}VOID SetCursorType (BOOL bInsert, BOOL bVisible){	CONSOLE_CURSOR_INFO cci;	cci.dwSize = bInsert ? 10 : 99;	cci.bVisible = bVisible;	SetConsoleCursorInfo (GetStdHandle (STD_OUTPUT_HANDLE), &cci);}/* EOF */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -