控制台的设置

目录

win32 API  :

什么是API : 

控制台:

控制台与VS:

控制台的控制:

控制台窗口设置:

1、mode函数:

2、title 函数:

 在C语言中的实现:

控制台的坐标设置:

 COODR函数:

原型:

控制台的坐标图:

坐标赋值:

在C语言中的实现:

获取控制台的权限:

 GetStdHandle:

原型:

 在C语言中的实现:

获取控制台的光标信息和大小:

 GetConsoleCursorInfo:

原型:

CONSOLE_CURSOR_INFO: 

 CONSOLE_CURSOR_INFO 结构体:

字符单元格百分比:

设置控制台的光标大小和可见性: 

SetConsoleCursorInfo:

原型:

在C语言中的使用:

设置控制台的光标位置 :

SetConsoleCursorposition: 

 使用:

 效果:

 获取按键情况:

虚拟键盘: 

  GetAsyncKeyState:

原型:

用宏定义进行判断按键的按压情况:

 实例:



win32 API  :

Windows 这个多作业系统除了协调应用程序的执行、分配内存、管理资源之外,它同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程序达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序(Application),所以便称之为 Application ProgrammingInterface,简称 API函数。WIN32 API也就是Microsoft Windows 32位平台的应用程序编程接口。

什么是API : 

每一种操作系统在完成正常的操作系统该有的功能,如果文件管理、内存管理,等等还提供了一些接口(函数),这些函数提供给程序员,让成员自己调用,能够实现一些自己想要的功能。

而这些接口就是API 


#include<Windows.h>  

//以下在C语言中的实现均要在该头文件标注后进行

控制台:

控制台又名cmd程序,又叫终端。

控制台与VS:

我们在VS程序中,创建的空白项目,其实就是在控制台内部进行创建的。

控制台的控制:

控制台窗口设置:

1、mode函数:

功能:在控制台界面中我们使用mode函数对控制台的大小进行控制。

mode con cols=100 lines=30
  • 如上代码,cols代表列数,lines代表行数,意思是将控制台的窗口变为100列 30行的大小 

注意事项:在最新版的win11版本中,控制台的大小被刻意的设置成了  "按照windos 设置",所以无法通过我们输入的指令进行大小的修改。

所以我们要将控制台进行重新设置:

  •  进行保存后记得重新启动控制台!

效果如下:


2、title 函数:

功能:title是对控制台的名字进行设置。 

 title 贪吃蛇

 在C语言中的实现:

 在C语言中我们使用system()函数来控制控制台的大小设置和标题设置,记得写上<stdib.h>作为头文件。

#include <stdio.h>

int main()
{
 //设置控制台窗⼝的⻓宽:设置控制台窗⼝的⼤⼩,30⾏,100列

 system("mode con cols=100 lines=30");//注意cols=100之间不能有空格

 //设置cmd窗⼝名称

 system("title 贪吃蛇"); 

 return 0;
}

控制台的坐标设置:

 COODR函数:

介绍:COORD 是Windows API中定义的⼀个结构体,表⽰⼀个字符在控制台屏幕幕缓冲区上的坐标,坐标系 (0,0) 的原点位于缓冲区的顶部左侧单元格。

原型:
typedef struct _COORD 
{

 SHORT X;

 SHORT Y;

} COORD, *PCOORD;
控制台的坐标图:

  •  如图所示,这个和数学的坐标系有些不同,x越往右边越大而且是正数,越往下面越大,而且是正数。 
坐标赋值:
 COORD pos ={ 3 ,5 };
在C语言中的实现:
#include <stdio.h>

int main()
{
 COORD pos ={ 3,5 };
 return 0;
}

获取控制台的权限:

 GetStdHandle:

GetStdHandle是一个Windows API函数。它用于从一个特定的标准设备(标准输入、标准输出或标准错误)中取得一个句柄(用来标识不同设备的数值),使用这个句柄可以操作设备。

而控制台就是一个标准输出的设备。

原型:
HANDLE GetstdHandle(DWORD nStdHandle);
  • HANDLE是一种类型 
  •  如果要控制控制台内部的设置,我们就得取得控制台的权限。
  • 例如在控制台中的光标消失,或者在控制台中的某个地方出现字符,而GetStdHandle就是干这个的。
 在C语言中的实现:
#include <stdio.h>

int main()
{

 HANDLE  handle = NULL;

//获取标准输出的句柄(⽤来标识不同设备的数值)
 handle = GetStdHandle(STD_OUTPUT_HANDLE);

//handle是一种指针,HANDLE是一种类型专门针对GetStdHandle

 return 0;


}

获取控制台的光标信息和大小:

 GetConsoleCursorInfo:

功能:检索有关指定控制台屏幕缓冲区的光标⼤⼩和可⻅性的信息。

原型:
BOOL WINAPI GetConsoleCursorInfo(

 HANDLE hConsoleOutput,

 PCONSOLE_CURSOR_INFO lpConsoleCursorInfo

);
  • PCONSOLE_CURSOR_INFO 是指向 CONSOLE_CURSOR_INFO 结构的指针。
  • 而 CONSOLE_CURSOR_INFO 是一个结构体,内部存储控制台光标信息和大小。

CONSOLE_CURSOR_INFO: 

 CONSOLE_CURSOR_INFO 结构体:
typedef struct _CONSOLE_CURSOR_INFO 
{
 DWORD dwSize;

 BOOL bVisible;

} CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO;
  •   *PCONSOLE_CURSOR_INFO 是将 struct   CONSOLE_CURSOR_INFO * 这个指针类型进行重命名后的名字,执行 CONSOLE_CURSOR_INFO 这个结构体。
  • dwSize,由光标填充的字符单元格的百分⽐。 此值介于1到100之间。 光标外观会变化,范围从完 全填充单元格到单元底部的⽔平线条。
  • bVisible,游标的可⻅性。 如果光标可⻅,则此成员为 TRUE。
  • 使光标不可见则为 :CursorInfo.bVisible = false; 
  • 因为要使用false  所以我们需要使用头文件 <bool.h>

注意:上面的代码将光标结构体进行了重命名 !

字符单元格百分比:

和光标相比,光标只占了字符单元格的百分之几 

设置控制台的光标大小和可见性: 

SetConsoleCursorInfo:

功能:设置指定控制台屏幕缓冲区的光标的大小和可见性. 

原型:
BOOL WINAPI SetConsoleCursorInfo(

 HANDLE hConsoleOutput,

 const CONSOLE_CURSOR_INFO *lpConsoleCursorInfo

);

如以上代码,我们得知该函数有两个参数,一个是获取了控制台权限的变量,表示需要修改的控制台,另一个是光标信息结构体的变量指针 。

在C语言中的使用:
#include <stdio.h>
#include <bool.h>

int main()
{
 
 HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
 
 //影藏光标操作
 CONSOLE_CURSOR_INFO CursorInfo;

 //获取控制台光标信息
 GetConsoleCursorInfo(hOutput, &CursorInfo);

//隐藏控制台光标
 CursorInfo.bVisible = false; 
 
 //设置控制台光标状态
 SetConsoleCursorInfo(hOutput, &CursorInfo);

 return 0;


}

只有写出了设置,才能将光标信息进行修改,在设置光标函数中,他的参数有两个,前一个是取得控制台权限的变量和光标的信息结构体地址,对了要先将光标进行修改哦!

设置控制台的光标位置 :

SetConsoleCursorposition: 

功能:设置指定控制台屏幕缓冲区中的光标位置,我们将想要设置的坐标信息放在COORD类型的pos中,调用SetConsoleCursorPosition函数将光标位置设置到指定的位置。 

 使用:
#include <stdio.h>
#include <bool.h>

int main()
{
 
 HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
 
 COORD pos = { 5,20 };

 SetConsoleCursorPosition( hOutput ,pos);

 int ch = getchar();
 
 putchar(ch);
 

 return 0;


}
 效果:

 获取按键情况:

虚拟键盘: 

 在win32 api中键盘上的每一个键都是编了号的。

虚拟键码 (Winuser.h) - Win32 apps | Microsoft Learnicon-default.png?t=N7T8https://learn.microsoft.com/zh-cn/windows/win32/inputdev/virtual-key-codes

  • 如上图所示,0x26等十六进制数字就是虚拟键盘的编号。 

  GetAsyncKeyState:

功能: 函数接收后按键的键盘编号后,进行返值,而返回的值是short类型,而我们可以通过它的返回值的16位比特位中的最高位和最低位进行判断,按键是按下还是刚刚按过,还是没有按。

原型:
SHORT GetAsyncKeystate(int vKey);
用宏定义进行判断按键的按压情况:
//PRESS_KET 来检测vk这虚拟键值对应的按健是否被按过
//使用&的方法,和三目运算符 如果和1&得出的结果是1 那么就输出1 表示按下了,反之表示没按下
//如果按过返回1,未按过返回0
#define PRESS_KET(vk) (GetAsyncKeyState(vk) & 0x1 ? 1:0)

 C语言 位操作符 & | ^ ~-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/2301_76445610/article/details/132133124?spm=1001.2014.3001.5501

 实例:
  • 别忘记头文件<windows.h> 
#include <stdio.h>
#include <windows.h>
int main()
{
	while (1)
	{
		if (KEY_PRESS(0x30))
		{
			printf("0\n");
		}
		else if (KEY_PRESS(0x31))
		{
			printf("1\n");
		}
		else if (KEY_PRESS(0x32))
		{
			printf("2\n");
		}
		else if (KEY_PRESS(0x33))
		{
			printf("3\n");
		}
		else if (KEY_PRESS(0x34))
		{
			printf("4\n");
		}
		else if (KEY_PRESS(0x35))
		{
			printf("5\n");
		}
		else if (KEY_PRESS(0x36))
		{
			printf("6\n");
		}
		else if (KEY_PRESS(0x37))
		{
			printf("7\n");
		}
		else if (KEY_PRESS(0x38))
		{
			printf("8\n");
		}
		else if (KEY_PRESS(0x39))
		{
			printf("9\n");
		}
	}
	return 0;
}

这段代码的意思就是,当我们按下数字键的时候,通过获取数字键状态的函数进行判断,如果我们按下了数字键,就会打印除相对应的数字 。


  • 15
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
要在Redis控制台设置密码,可以按照以下步骤进行操作: 1. 临时生效,重启服务后密码失效。通过以下命令查看密码: ``` config get requirepass ``` 使用以下命令设置密码: ``` config set requirepass <password> ``` 请将`<password>`替换为您想要设置的实际密码。设置完密码后,可以使用以下命令验证密码是否生效: ``` config get requirepass ``` 要取消密码,可以使用以下命令: ``` config set requirepass "" ``` 2. 先连接再输入密码的方法。通过以下命令连接到Redis实例: ``` redis-cli -h <host> -p <port> ``` 请将`<host>`和`<port>`替换为您的Redis实例的主机和端口。连接成功后,可以使用以下命令进行身份验证: ``` auth <password> ``` 请将`<password>`替换为您设置的实际密码。如果密码验证成功,您将获得控制台的访问权限。 3. 永久生效的方法。在Redis根目录下找到redis.conf配置文件,在文件中搜索`requirepass`关键字,找到注释密码行并将其取消注释。然后在该行下方添加以下内容: ``` requirepass <password> ``` 请将`<password>`替换为您想要设置的实际密码。保存文件并重新启动Redis服务,密码将永久生效。 请根据您的具体情况选择适合的方法来设置密码。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Redis服务设置密码](https://blog.csdn.net/xing_jian1/article/details/123826463)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Redis设置密码](https://blog.csdn.net/m0_58746619/article/details/125865904)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值