初识Windows API

Ustinain 等级 470 0 0

Windows API是什么

Windows系统是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务 ,就是一个函数)可以帮应用程序达到开启视窗、描绘图形、使用周边设备等,由于这些函数服务的对象是应用程序(Application),所以便称之为Application Programming Interface,简称API函数,Win32 API也就是Microsoft Windows 32位平台的应用程序接口

Windows API 就是Windows应用程序接口,是针对Microsoft Windows 操作系统家族的编程接口,这样的系统包括Windows8.1、Windows8、WIndows7、Windows Vista、Windows XP、Windows Server2012、Windows Server2003、Windows 2008 R2、Windows 2000、Windows 95等等,几乎windows所有版本

其中位WIndows操作系统的编程接口为,Win API以便于于以前的16位的Windows API区分开

Windows API大致分为以下几个函数大块:

  1. 基本服务
  2. 组件服务
  3. 用户界面服务
  4. 图形多媒体服务
  5. 消息和协作
  6. 网络
  7. web服务

举个例子,比如我们要和删除文件,这个时候我们可以使用 win32中 DeleteFile()函数

语法
BOOL DeleteFile(
  LPCTSTR lpFileName
);

可以看到DeleteFile返回类型是BOO类型,需要的参数是lpFileName ::: tip 提示 从Windows 10版本1607开始,对于此功能的unicode版本(DeleteFileW),您可以选择删除MAX_PATH字符限制,而无需添加“ \?\”。有关详细信息,请参见命名文件,路径和命名空间的“最大路径限制”部分 。 :::

如果函数成功,则返回值为非零。

如果函数失败,则返回值为零(0)。要获取扩展的错误信息,请调用 GetLastError。

如果应用程序尝试删除不存在的文件,则 DeleteFile函数将失败,并显示 ERROR_FILE_NOT_FOUND。如果该文件是只读文件,则该函数将失败,并显示 ERROR_ACCESS_DENIED。

以下列表列出了一些删除,删除或关闭文件的技巧:

  • 要删除只读文件,首先必须删除只读属性。
  • 要删除或重命名文件,您必须对文件具有删除权限,或者在父目录中具有删除子权限。
  • 若要递归删除目录中的文件,请使用 SHFileOperation函数。
  • 要删除一个空目录,请使用 RemoveDirectory函数。
  • 要关闭打开的文件,请使用 CloseHandle函数。

我们来实际操作一下GetLastError函数,理解一下他的用法:

首先我们在桌面上创建一个名为hello.txt的文本文件,然后调用win32 API中GetLastError函数来进行操作(使用API删除文件会直接删掉,并不会放入回收站)

#include <windows.h>
int main() {
    BOOL a;
    const char file_path[] = "C:\\Users\\86132\\Desktop\\hello.txt";
     a = DeleteFile(file_path);
    printf("返回值=%X  扩展错误信息=%d",a, GetLastError());
    return 0;
}

hello.txt文件被成功删除,程序返回 初识Windows API 若是文件不存在,程序返回

初识Windows API

::: tip 虽然返回值只有0或者1 但是系统扩展错误信息却有很多,大家可以自己手动尝试一下 ::: 这期的文章就到这里,虽然很基础,但学习却是一个逐渐积累的过程,三天打鱼两天晒网肯定是不行的,只要有一丝的收获,将这个收获X时间得到的就是技术与财富。

收藏
评论区

相关推荐

Vue3.0--Vue Composition API使用体验
本文将之前采用Vue2.6开发的todoList小项目改造成为Vue3.0编写,并介绍一下2.x和3.x之间写法的不同之处。 Vue3.x适配大部分Vue2.x的组件配置,也就是说以前我们在Vue2.x针对组件的一些配置项,例如: export default { name: 'test', components: {}, props: {},
C#基础提升系列——C#特殊集合
C 特殊集合 C中的特殊集合主要有: 不可变的集合 并发的集合 位数组合位矢量 可观察的集合 不变的集合 如果对象可以改变其状态,就很难在多个同时运行的任务中使用。这些集合必须同步。如果对象不能改变其状态,就很容易在多个线程中使用。不能改变的对象称为不变的对象;不能改变的集合称为不变的集合。 为了
微信支付 (JSSDK支付)
官方文档 微信支付 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter7_7&index6 微信授权获取code https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JSSDK.html58 准备工作 微信公
Vue3.0 高频出现的几道面试题
1. Vue 3.0 性能提升主要是通过哪几方面体现的? 1.响应式系统提升 vue2在初始化的时候,对data中的每个属性使用definepropery调用getter和setter使之变为响应式对象。如果属性值为对象,还会递归调用defineproperty使之变为响应式对象。 vue3使用proxy对象重写响应式。proxy的性能本来比def
Vue3.0 所采用的 Composition Api 与 Vue2.x 使用的 Options Api 有什么不同?
开始之前 Composition API 可以说是Vue3最大的特点,那么为什么要推出Composition Api,解决了什么问题? 通常使用Vue2开发
笔趣阁小说api
笔趣阁api小说api,提供小说相关api接口,目前支持笔趣阁(https://m.bqkan.com/)。ip地址:http://49.234.123.245:8082 笔趣阁(https://m.bqkan.com/) 1. 首页 ip/getHome 2. 小说分类 ip/
Fabric1.4:Go 链码开发与编写
1 链码结构 1.1 链码接口 链码启动必须通过调用 shim 包中的 Start 函数,传递一个类型为 Chaincode 的参数,该参数是一个接口类型,有两个重要的函数 Init 与 Invoke 。 type Chainc
Hook API 索引 – React
Hook API 索引_Hook_ 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。本页面主要描述 React 中内置的 Hook API。如果你刚开始接触 Hook,那么可能需要先查阅 。你也可以在 章节中获取有用的信息。 基础 Hook
初识Windows API
Windows API是什么 Windows系统是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务 ,就是一个函数)可以帮应用程序达到开启视窗、描绘图形、使用周边设备等,由于这些函数服务的对象是应用程序(Applicati
浅谈Vue3新特性
Vue3的已发布一段时间了,新的Vue3在语法以及底层都进行了全新的重构,带来了更快的运行速度,更小的构建包,更友好的编程规范,让我们来看看有哪些变化吧。更快传统的虚拟dom算法:组件patch的时候,需要重新创建整个vdom树,然后遍历整棵树进行diff,update...更快的虚拟dom算法,源自编译模板时给予更多的运行时提示:1. 编译模板时对动
Fetch API 教程
Fetch API 教程作者: 日期: fetch()是 XMLHttpRequest 的升级版,用于在 JavaScript 脚本里面发出 HTTP 请求。浏览器原生提供这个对象。本文详细介绍它的用法。一、基本用法fetch()的功能与 XMLHttpRequest 基本相同,但有三个主要的差异。(1)fetc
Vue3 - 响应性API
前言Vue3.x正式版发布已经快半年了,相信大家也多多少少也用Vue3.x开发过项目。那么,我们今天就整理下Vue3.x中的响应性API。响应性API reactive作用: 创建一个响应式数据。本质: 传入数据(复杂类型:数组和json对象)包装成一个Proxy对象。如果传入其他对象,默认情况下修改对象,界面不会自动更新,如果想更新,可以通过重新赋值(创建
Frida在windows上的玩法
一、目标frida玩了很久,andriod和ios下都玩的不错。不过飞哥其实是混windows出道的,那frida能不能分析winPE呢?今天介绍下Windows下的玩法,要点如下: Hook Windows Api 修改参数和返回值 主动调用Windows Api 二、步骤 打开心爱的MFC写个demo小程序,密码是 1234 ,输入正确提示 "密码正确"
Spring Boot 无侵入式 实现RESTful API接口统一JSON格式返回
前言现在我们做项目基本上中大型项目都是选择前后端分离,前后端分离已经成了一个趋势了,所以总这样·我们就要和前端约定统一的api 接口返回json 格式,这样我们需要封装一个统一通用全局 模版api返回格式,下次再写项目时候直接拿来用就可以了 约定JSON格式一般我们和前端约定json格式是这样的json "code": 200, "message
Ory Kratos 用户认证
为用户认证与管理系统。本文将动手实现浏览器(React+AntD)的完整流程,实际了解下它的 API 。 代码: https://github.com/ikuokuo/startorykratos 了解 Kratos 获取代码bashgit clone b v0.7.0alpha.1 depth 1 https://github.com/ory/kratos