c语言windows.h头文件详解

如果c语言库里没有某个头文件 只需要将下好的头文件放入下面的路径即可 windows.h头文件包含的函数及其用法 1.GetAsyncKeyState()()通过函数来判断按键按下的状态 主要用法是VK_键的名称 例如 GetAs

如果c语言库里没有某个头文件 只需要将下好的头文件放入下面的路径即可

windows.h头文件包含的函数及其用法

1.GetAsyncKeyState()()//通过函数来判断按键按下的状态

主要用法是VK_键的名称

例如 GetAsyncKeyState(VK_SHIFT)

         GetAsyncKeyState(VK_LSHIFT)         

         GetAsyncKeyState(VK_RSHIFT)

         MENU代表的是这是alt键

1)if(GetAsyncKeyState(VK_LSHIFT))

这样写是不对的。

GetAsyncKeyState的返回值表示两个内容,一个是最高位bit的值,代表这个键是否被按下,一个是最低位bit的值,代表在上次调用

GetAsyncKeyState后,这个键是否被按下。

应该是

if(GetAsyncKeyState(VK_LSHIFT)&&ox8000)

(2)SHORT GetKeyState(int nVirtKey);

SHORT GetAsyncKeyState(int vKey);

BOOL GetKeyboardState(PBYTE lpKeyState);

三个取key status的函数的最大区别是:

第一个:是从windows消息队列中取得键盘消息,返回key status.

第二个:是直接侦测键盘的硬件中断,返回key status.

第三个:是当从windows消息队列中移除键盘消息时,才才返回key status.

2.system("pause");//程序暂停,显示按下任意键继续

3.Sleep(1000);//延迟1000毫秒,切记S大写

4.system("cls");//清屏函数

5.pos类似于conio中的gotoxy

实例 

#include<stdio.h>
#include<windows.h>
void Pos(int x, int y)//设置光标位置,从哪里开始输出
{
    COORD pos;//表示一个字符在控制台屏幕上的坐标,左上角(0,0)
    HANDLE h0utput;
    pos. X = x;
    pos. Y = y;
    h0utput = GetStdhandle(STD_OUTPUT_HANDLE);//GetStdhandle用于从一个特定的标准设备(标准输入、标准输出或标准错误)中取得一个句柄(用来标识不同设备的数值)。可以嵌套使用。
    SetConsoleCursorPosition(h0uput, pos);
}

6.句柄的理解

所谓句柄实际上是一个数据,是一个Long (整长型)的数据。 


句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。 


从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。从数据类型上来看它只是一个16位的无符号整数。应用程序几乎总是通过饔靡桓鯳INDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。 


如果想更透彻一点地认识句柄,我可以告诉大家,句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是住留在内存的。如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。但是,如果您真的这样认为,那么您就大错特错了。我们知道,Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。如果地址总是如此变化,我们该到哪里去找该对象呢? 


为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的。Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统。 




句柄地址(稳定)→记载着对象在内存中的地址————→对象在内存中的地址(不稳定)→实际对象 




本质:WINDOWS程序中并不是用物理地址来标识一个内存块,文件,任务或动态装入模块的,相反的,WINDOWS API给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来进行操作。 




但是必须注意的是程序每次从新启动,系统不能保证分配给这个程序的句柄还是原来的那个句柄,而且绝大多数情况的确不一样的。假如我们把进入电影院看电影看成是一个应用程序的启动运行,那么系统给应用程序分配的句柄总是不一样,这和每次电影院售给我们的门票总是不同的一个座位是一样的道理。

发布者:admin,转转请注明出处:http://www.yc00.com/web/1742535754a4455716.html

相关推荐

  • Windows 7定时关机命令shutdown

    在 Win7 中&#xff0c;shutdown实现自动关机的方法如下&#xff1a; 【方法一:计划任务法】开始>>> 在搜索框输入cmd >>> 回车 >>>

    7小时前
    00
  • windows 10 安装Python 3.10版

    一、查找官网 1.python官网需要VPN(建立一个临时的、安全的连接&#xff0c;是一条穿过混乱的公用网络的安全、稳定的隧道。)&#xff0c;打开VPN进行代理之后&#xff0c;打开网址&#xff1

    7小时前
    10
  • windows 7 如何关闭 程序崩溃时弹出的&quot;windows正在检查该问题的解决方案&quot;

    如果你装的镜像一般不会出现这个问题&#xff0c;因为已经被优化了。 原版的会有这个问题&#xff0c;仅作备份&#xff01; 尊重原创&#xff0c;原文链接点这里 非常讨厌的东西&#xff0c

    6小时前
    10
  • kvm安装windows虚拟机

    一、安装条件&#xff1a;a.windows镜像文件&#xff0c;这里以win7为例&#xff08;可直接进入下载 链接&#xff1a;https:pan.baidus1pLMbXQr 密码&am

    6小时前
    00
  • Windows图片密码设置

    传统的 Windows 操作系统都使用字符式密码来验证用户身份,在 Windows 7 中,用户可以使用指纹识别设备来登录操作系统,但是这需要额外的硬件支持。 随着技术的进步,纯粹的字符式密码已无法满足用户需求,因此在 Windows 8

    6小时前
    10
  • Windows安装Docker(Docker Desktop)

    一、Windows安装Docker简明步骤 在 Windows 上安装 Docker 的简要步骤如下&#xff1a; 1. 检查系统要求 操作系统&#xff1a;Windows 1011&#xff08;64位&

    6小时前
    10
  • Windows定时任务没有执行

    最近部署网站首页静态化程序&#xff0c;需要定时执行的&#xff0c;由于部署在Windows上&#xff0c;为了方便直接用Windows计划任务做定时了。跑了一段时间发现。首页的静态html文件日期一直是老的&

    6小时前
    00
  • cmd命令行设置 windows 设置环境变量

    cmd命令行设置 windows 设置环境变量 一、局部设置环境变量 使用set进行环境变量设置时&#xff0c;只对当前对话框程序有效。当cmd设置对话框关闭时&#xff0c;环境变量复原。如&#xff1a;

    6小时前
    10
  • Mac添加Windows共享打印机

    如题&#xff1a; 准备工作&#xff1a;知道你要连接的windows打印机服务器的ip地址和共享打印机的名称打印机名称&#xff1a;有的打印机名称包含空格比如HP LaserJet P2035  有的不带空格

    6小时前
    10
  • Windows 7往局域网共享目录拷贝文件超慢

    转&#xff1a;http:wwwblogschenjingsnarchive201106142080590.html 问题现象&#xff1a; Windows 7 往局域网的共享目录上拷贝文件时速度超慢&a

    6小时前
    10
  • Windows 域

    一、概述 域是计算机网络的一种形式,其中所有用户账户,计算机,打印机和其他安全主体都在位于称为域控制器的一个或多个中央计算机集群上的中央数据库中注册。 域之间相互访问则需要建立信任关系。信任关系是连接在域与域之间的桥梁。当一个域与

    6小时前
    00
  • windows密码获取

    概述 渗透测试过程中对于windows 系统中的密码获取是十分重要的一步&#xff0c;获取密码后我们可以对内网中其他机器进行撞库&#xff0c;快速、批量拿下其他服务器权限。 windows密码获取方法 最主流的获取wi

    6小时前
    10
  • Windows Server安全配置

    Windows Server操作系统安全配置&#xff0c;加固windows server。 1、密码安全 设置密码最小长度为10 开始-管理工具-本地安全策略-安全设置-账户策略-密码策略&#xff0c;修改密码长度

    6小时前
    10
  • Windows字符编码集大全

    在使用Windows系统的电脑办公&#xff0c;经常会遇到乱码问题&#xff0c;原因一般都是字符集不一致导致&#xff1b; 查看字符集 命令行中执行 chcp 设置字符集 chcp代码页 国内常用字符集

    6小时前
    10
  • windows2016服务器优化,Windows server 2016系统基本优化设置

    Windows server 2016系统具有稳定的特性&#xff0c;但有些操作就显得比较麻烦&#xff0c;所以用户们可以通过一些优化设置&#xff0c;让Windows server 2016系统变得更加便捷好

    6小时前
    10
  • windows窗口命令——(copyb)文件无缝拼接隐藏

    当你浏览到这里的时候&#xff0c;想必会有一些小秘密或者私人文件需要隐藏但是又逃不过别人的多层“扫描”&#xff0c;那么今天我做了一个小例子&#xff0c;可能大家都听说过&#xff0c;我这里想再细细说

    6小时前
    00
  • 在VMware虚拟机中安装Windows 7全攻略(避坑指南)

    ⚠️写在前面 最近发现很多开发者在调试老旧系统时都需要用到Windows 7环境&#xff08;特别是银行、医疗等行业的遗留系统&#xff09;&#xff0c;但实体机安装既不现实也不安全。今天就手把手教你在虚拟机

    4小时前
    00
  • windows切换系统版本

    powershell 管理员身份打开 输入 irm massgrave.devget | iex 输入数字 对应后面写着 change windows edition新的会话框中选择想要的版本即可 获取windows 密钥 官方提供的

    4小时前
    20
  • Windows系统修复,一个小工具解决!

    各位Windows用户&#xff0c;您是否经历过系统突发故障的困扰&#xff1f;蓝屏频现、应用商店异常、网络连接中断...这些棘手问题是否让您手足无措&#xff1f; 别担心&#xff01;今天李师傅为

    2小时前
    00
  • Windows安装ollama本地部署千问qwen2.5大模型

    ollama ollama是一个简明易用的本地大模型运行框架,只需一条命令即可在本地跑大模型。开源项目&#xff0c;专注于开发和部署先进的大型语言模型&#xff08;LLM&#xff09; 官网&#xff

    6分钟前
    00

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信