python模块之pywin32使用文档,python操作windowsAPI_python win32api-程序员宅基地

技术标签: python  开发语言  

一、pywin32简介

1、windowsAPI是什么

Windows API(Application Programming Interface)是一组函数、数据结构、指令集等的集合,用于操作和控制Windows操作系统的各种功能和特性。它提供了一种通过编程方式与Windows进行交互的接口。

Windows API允许开发人员使用编程语言(如C/C++、Python等)调用和使用Windows操作系统的内部功能,如创建和管理进程、访问和修改文件系统、读取和写入注册表、绘制图形、操作窗口和控件、网络通信等。通过Windows API,开发人员可以利用操作系统提供的功能和资源,构建各种类型的应用程序。

Windows API以动态链接库(DLL)的形式提供,开发人员可以通过引入相应的库文件并使用库中的函数和数据结构,来实现对特定功能的调用和操作。使用Windows API可以完成从底层系统操作到高级应用程序开发的各个层次的任务。

Windows API是使用非常广泛的API之一,广泛应用于Windows软件开发、系统编程、驱动程序开发等领域。

win32API参考手册:www.yfvb.com/help/win32s…

微软win32API手册:learn.microsoft.com/zh-cn/windo…

2、pywin32模块

pywin32是一个Python扩展模块,它提供了与Windows操作系统的API进行交互的功能。具体而言,pywin32模块可以用于在Python中调用和操作Windows的各种系统功能,包括但不限于以下功能:

  1. 与Windows API的交互:pywin32提供了对Windows的API函数的封装,使得在Python中可以直接调用这些API函数进行操作,如创建和管理进程、访问和修改注册表、操作文件和文件夹等。
  2. COM组件和ActiveX对象的操作:pywin32支持使用COM技术(Component Object Model)与Windows操作系统中的COM组件进行交互。通过pywin32,可以创建、操纵和使用COM组件、ActiveX对象和OLE对象,实现与Windows应用程序和组件的集成。
  3. Windows服务的管理:pywin32提供了管理Windows服务的功能,可以通过pywin32创建和管理Windows服务,包括安装、启动、停止和删除Windows服务。
  4. GUI编程:pywin32模块还提供了与Windows的图形用户界面(GUI)进行交互的功能。它可以创建和操作Windows窗口、对话框,以及访问和修改窗口控件的属性和事件。

总之,pywin32模块提供了丰富的功能和方法,可以在Python中直接调用Windows操作系统的API,实现与Windows相关的操作和功能。

该项目是开源的,地址为:github.com/mhammond/py…

api地址为:timgolden.me.uk/pywin32-doc…

3、安装pywin32

# 直接安装
pip install pywin32

安装完成之后,在python安装目录下:\Lib\site-packages,会有一个PyWin32.chm文件,就是使用文档。

pywin32把Windows API按照功能分了一些大类,每一个大类作为一个模块。以下是所有的模块:

_winxptheme:提供专为xp系统的主题API mmapfile:编译的扩展模块,提供对内存映射文件API的访问 odbc:odb数据库api perfmon:包装性能监视器功能的模块。 pywintypes:支持常见 Windows 类型的模块。 servicemanager:与 Windows 服务控制管理器交互的模块。 timer:包装 Win32 Timer 函数的扩展 win2kras:将 Windows 2000 扩展封装到远程访问服务 (RAS) API 的模块。 win32api:提供了常用的用户API win32clipboard:提供了有关粘贴板的API win32con:有关的常量 win32console:控制台 win32cred:凭证管理功能的接口。此模块中的功能仅适用于 Windows XP 及更高版本。 win32crypt:win32 Cryptography API 的接口 win32event:提供了win32事件/等待API win32evtlog:封装了 Windows Win32 事件日志 API。 win32file:提供了有关文件操作的API win32gui:提供了有关windows用户界面图形操作的API win32help:Win32 help API’s win32inet:Windows internet (wininet) API的接口 win32job:win32进程和线程API的接口,可在Windows 2000及更高版本中使用。 win32lz:封装 Windows LZ 压缩例程的模块 win32net:Windows internet (wininet) API的接口 win32pdh:封装了Windows性能数据助手API win32pipe:管道api win32print:封装Windows打印API win32process:进程api win32profile:包装用于处理用户配置文件的函数 win32ras:封装Windows远程访问服务(RAS) API win32security:win32安全API的接口 win32service:服务 win32trace win32transaction:用于事务化的NTFS和事务化的注册表函数 win32ts:这个模块中的所有函数都接受关键字参数 win32wnet:公开Windows网络API winxpgui:xp图像用户界面API

二、常用模块:pywintypes

0、使用

使用前需要引入:

import pywintypes

1、CreateGuid:生成唯一标识符

返回一个字符串,格式为{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

PyIID = pywintypes.CreateGuid()
print(PyIID) # {BB02ECB7-BC18-4336-A65C-C9C0CE548020}

三、常用模块:win32api

0、使用

使用前需要引入:

import win32api

1、AbortSystemShutdown:关机

import win32api

# 取消系统关闭操作
win32api.AbortSystemShutdown(computer_name=None)

该方法的参数computer_name是可选的,用于指定要取消系统关闭操作的计算机名称。如果未提供computer_name参数,则默认为本地计算机。

注意:该方法要求以管理员权限运行,否则会抛出权限错误。

2、Beep:发出声音

import win32api

# 发出一次短促的蜂鸣声
win32api.Beep(freq, duration)

该方法接受两个参数: freq:表示发声的频率,以赫兹(Hz)为单位。常见的频率可以尝试使用440(标准音A)。 duration:表示发声持续的时间,以毫秒(ms)为单位。 请注意,该方法可能不适用于所有的计算机和操作系统。在某些系统中可能无法产生蜂鸣声音。

3、ClipCursor:限制鼠标范围

pywin32模块中,win32api.ClipCursor方法用于限制鼠标光标的移动范围在指定的矩形区域内。

import win32api
# 定义矩形的左上角和右下角坐标
left, top, right, bottom = 100, 100, 500, 500

# 创建矩形对象
rect = (left, top, right, bottom)

# 限制鼠标光标的移动范围
win32api.ClipCursor(rect)

# 取消限制,恢复正常的鼠标光标移动范围
win32api.ClipCursor(None)

在这个示例中,首先我们定义了一个矩形区域的左上角和右下角坐标。然后,使用win32api.ClipCursor方法将鼠标光标的移动范围限制在该矩形区域内,传入矩形的坐标参数。最后,使用win32api.ClipCursor(None)取消对鼠标光标移动范围的限制,恢复正常的移动范围。

注意:在使用win32api.ClipCursor方法之后,记得一定要及时取消限制,以免造成鼠标无法移动的情况。

4、CloseHandle:关闭文件句柄

pywin32模块中,win32api.CloseHandle方法用于关闭一个句柄(handle)。

import win32api
# 打开或创建一个文件,并获取文件的句柄
handle = win32api.CreateFile("path/to/file", win32api.GENERIC_READ, 0, None, win32api.OPEN_EXISTING, 0, None)

# 使用句柄进行一些操作

# 关闭句柄
win32api.CloseHandle(handle)

在这个示例中,首先我们使用win32api.CreateFile方法打开或创建一个文件,并获取文件的句柄。然后,使用这个句柄进行一些操作。最后,使用win32api.CloseHandle方法关闭句柄,确保资源的释放和内存的回收。

请注意,在使用完句柄后,务必记得及时关闭句柄,以免资源泄露或其他不可预见的问题。

5、CopyFile:复制文件

import win32api
# 源文件路径
src_file = "path/to/source/file"

# 目标文件路径
dst_file = "path/to/destination/file"

# 复制文件
win32api.CopyFile(src_file, dst_file)

CopyFile支持多传一个int类型参数:指示如果文件存在,操作是否应该失败,默认为0。

6、DeleteFile:删除文件

win32api.DeleteFile(fileName)

7、ExitWindows:注销当前用户

pywin32模块中,win32api.ExitWindows方法用于执行系统的关机、重启、注销或关闭等操作。

import win32api
# 执行关机操作(将在 30 秒后关机)
win32api.ExitWindowsEx(win32api.EWX_SHUTDOWN | win32api.EWX_FORCE, 30)

在这个示例中,我们使用win32api.ExitWindowsEx方法执行关机操作。win32api.EWX_SHUTDOWN指定了要执行的操作为关机操作,win32api.EWX_FORCE指定了强制执行关机操作。最后的参数 30 表示延迟关机的时间,单位为秒(默认为 0)。

除了关机操作,还可以使用其他参数来执行其他操作,如重启、注销、锁定等。以下是一些常用的系统操作参数:

win32api.EWX_LOGOFF:注销 win32api.EWX_REBOOT:重启 win32api.EWX_SHUTDOWN:关机 win32api.EWX_POWEROFF:关闭电源(需要特权) 可以根据需要选择适合的操作参数。请注意,某些操作可能需要管理员权限才能执行成功。

另外,也可以使用win32api.InitiateSystemShutdown方法进行关机操作,它提供更多的自定义选项。

8、GetComputerName:获取计算机名

import win32api
# 获取计算机名称
computer_name = win32api.GetComputerName()

print(f"Computer Name: {computer_name}")

9、GetCursorPos:返回鼠标位置

import win32api
a, b = win32api.GetCursorPos()

print(a)
print(b)

10、GetLocalTime:获取当前时间

# 结果:(2023, 11, 3, 15, 10, 12, 23, 214)
win32api.GetLocalTime()
win32api.GetSystemTime()

11、MessageBeep:发出预定义的声音

win32api.MessageBeep(1)

12、TerminateProcess:终止进程

import win32api
import win32con

# 根据进程ID终止进程
def kill_process_by_pid(pid):
    # 打开进程句柄
    handle = win32api.OpenProcess(win32con.PROCESS_TERMINATE, False, pid)
    if handle:
        # 终止进程
        win32api.TerminateProcess(handle, 0)
        # 关闭进程句柄
        win32api.CloseHandle(handle)

# 根据进程名称终止进程
def kill_process_by_name(name):
    import psutil
    for process in psutil.process_iter(['name', 'pid']):
        if process.info['name'] == name:
            pid = process.info['pid']
            kill_process_by_pid(pid)

# 终止名为"program_name.exe"的进程
kill_process_by_name("program_name.exe")


在上面的代码中,我们定义了两个函数:kill_process_by_pid()和kill_process_by_name()。kill_process_by_pid()函数使用进程ID(pid)来终止进程,而kill_process_by_name()函数使用进程名称来终止进程。在kill_process_by_name()函数中,我们使用了psutil模块来获取正在运行的进程列表,并根据进程名称匹配要终止的进程。

请注意,在使用win32api.TerminateProcess()函数时,要谨慎操作,因为它可以立即终止进程,而不进行任何清理工作。

13、其他

还有各种内存、文件、鼠标、键盘等操作的。

四、剪切板模块:win32clipboard

win32clipboard 模块提供了对 Windows 系统剪贴板的访问。

以下是 win32clipboard 模块的常用方法和属性:

OpenClipboard(hwnd):打开剪贴板。hwnd 是一个可选参数,用于指定当前活动窗口的句柄。 CloseClipboard():关闭剪贴板。 EmptyClipboard():清空剪贴板。 GetClipboardData(format):获取剪贴板中的数据。format 是一个可选参数,用于指定数据的格式。常见的格式有: win32con.CF_TEXT:文本格式 win32con.CF_UNICODETEXT:Unicode 文本格式 win32con.CF_DIB:位图格式 SetClipboardData(format, data):设置剪贴板中的数据。format 是数据的格式,data 是要设置的数据。 IsClipboardFormatAvailable(format):检查指定格式的数据是否在剪贴板中可用。

import win32clipboard
import win32con

# 打开剪贴板
win32clipboard.OpenClipboard()

# 清空剪贴板
win32clipboard.EmptyClipboard()

# 设置文本数据
win32clipboard.SetClipboardData(win32con.CF_TEXT, b"Hello, World!")

# 获取文本数据
data = win32clipboard.GetClipboardData(win32con.CF_TEXT)
print(data)

# 检查指定格式的数据是否可用
is_available = win32clipboard.IsClipboardFormatAvailable(win32con.CF_UNICODETEXT)
print(is_available)

# 关闭剪贴板
win32clipboard.CloseClipboard()

上述代码打开剪贴板,清空剪贴板,设置文本数据,获取文本数据,并检查指定格式的数据是否可用,最后关闭剪贴板。

五、文件模块:win32file

win32file模块是pywin32模块中的一个子模块,用于处理Windows文件和文件系统的相关操作。

win32file模块提供了一些方法和常量来处理文件的读写、文件属性的获取和设置、文件系统的操作等。以下是这个模块的一些常用方法和功能的详细说明:

CreateFile(filename, access, share_mode, security_attributes, creation_disposition, flags_and_attributes, template_file):创建或打开一个文件,并返回一个文件句柄。 CloseHandle(handle):关闭一个文件句柄。 ReadFile(handle, buffer, overlapped):从文件中读取数据,并将结果存入指定的缓冲区。 WriteFile(handle, buffer, overlapped):将数据写入文件。 GetFileSize(handle):获取指定文件的大小。 SetFileAttributes(filename, file_attributes):设置文件的属性,比如只读、隐藏等。 GetFileAttributes(filename):获取文件的属性。 DeleteFile(filename):删除指定的文件。 GetFileInformationByHandle(handle):通过文件句柄获取文件的信息,如文件大小、创建时间等。 FindFirstFile(filename):查找指定文件/文件夹,并返回一个用于遍历结果的搜索句柄。 FindNextFile(handle):通过搜索句柄获取下一个文件/文件夹的信息。 FindClose(handle):关闭搜索句柄。 这些方法提供了对文件和文件系统进行操作的功能。可以使用这些方法来创建、打开、读写文件,获取和设置文件属性,删除文件,遍历文件夹等等。在使用这些方法之前,需要先安装pywin32模块,并导入win32file模块。

下面是一个示例代码,演示了如何使用win32file模块读取文件的内容和获取文件的大小:

# 我们使用CreateFile方法打开指定的文件,然后使用GetFileSize方法获取文件的大小。接着,我们调用ReadFile方法读取文件的内容,并将结果返回。最后,我们使用CloseHandle方法关闭文件句柄。
#注意,在使用win32file模块时,需要有管理员权限或具有适当的权限来访问和操作文件。
import win32file

def read_file(filename):
    try:
        # 打开文件
        handle = win32file.CreateFile(filename, win32file.GENERIC_READ, 0, None, win32file.OPEN_EXISTING, 0, 0)

        # 获取文件大小
        file_size = win32file.GetFileSize(handle)

        # 读取文件内容
        buffer = win32file.ReadFile(handle, file_size)

        # 关闭文件句柄
        win32file.CloseHandle(handle)

        return buffer
    except Exception as e:
        print("Error:", e)

# 读取文件内容
filename = "test.txt"
file_content = read_file(filename)
print(file_content)

六、ui模块:win32gui

1、常用方法

win32gui模块定义了windows窗口的常用方法:

import win32gui
# 获取窗口句柄
hwnd = win32gui.FindWindow(None, "窗口标题")
print(hwnd)

# 获取窗口位置和大小:
import win32gui
hwnd = win32gui.FindWindow(None, "窗口标题")
rect = win32gui.GetWindowRect(hwnd)
left, top, right, bottom = rect
print("窗口位置:(左:{}, 上:{})".format(left, top))
print("窗口大小:(宽:{}, 高:{})".format(right - left, bottom - top))

# 获取窗口的父窗口和子窗口:
import win32gui
hwnd = win32gui.FindWindow(None, "窗口标题")
parent_hwnd = win32gui.GetParent(hwnd)
child_hwnds = []
win32gui.EnumChildWindows(hwnd, lambda hwnd, param: param.append(hwnd), child_hwnds)
print("父窗口句柄:", parent_hwnd)
print("子窗口句柄:", child_hwnds)

# 设置窗口标题:
import win32gui
hwnd = win32gui.FindWindow(None, "窗口标题")
win32gui.SetWindowText(hwnd, "新的窗口标题")

2、获取窗口并设为活跃窗口

import win32gui
window_name = "窗口标题"

# 通过窗口名称获取窗口句柄
hwnd = win32gui.FindWindow(None, window_name)

if hwnd != 0:
    # 将窗口设为活跃窗口
    win32gui.SetForegroundWindow(hwnd)
    print("窗口已设为活跃")
else:
    print("未找到该窗口")

该代码只会将窗口设为活跃,并不会将其移动到前台。如果窗口已最小化或位于其他桌面,它可能不会立即显示在屏幕上。

---------------------------END---------------------------

题外话

感谢你能看到最后,给大家准备了一些福利!

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。


CSDN大礼包:全网最全《Python学习资料》免费赠送!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img

二、Python兼职渠道推荐*

学的同时助你创收,每天花1-2小时兼职,轻松稿定生活费.
在这里插入图片描述

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

CSDN大礼包:gift::[全网最全《Python学习资料》免费赠送:free:!](https://blog.csdn.net/weixin_68789096/article/details/132275547?spm=1001.2014.3001.5502) (安全链接,放心点击)

若有侵权,请联系删除

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Saki_Python/article/details/134977013

智能推荐

分布式光纤传感器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告_预计2026年中国分布式传感器市场规模有多大-程序员宅基地

文章浏览阅读3.2k次。本文研究全球与中国市场分布式光纤传感器的发展现状及未来发展趋势,分别从生产和消费的角度分析分布式光纤传感器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。主要生产商包括:FISO TechnologiesBrugg KabelSensor HighwayOmnisensAFL GlobalQinetiQ GroupLockheed MartinOSENSA Innovati_预计2026年中国分布式传感器市场规模有多大

07_08 常用组合逻辑电路结构——为IC设计的延时估计铺垫_基4布斯算法代码-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏12次。常用组合逻辑电路结构——为IC设计的延时估计铺垫学习目的:估计模块间的delay,确保写的代码的timing 综合能给到多少HZ,以满足需求!_基4布斯算法代码

OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏5次。OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版

关于美国计算机奥赛USACO,你想知道的都在这_usaco可以多次提交吗-程序员宅基地

文章浏览阅读2.2k次。USACO自1992年举办,到目前为止已经举办了27届,目的是为了帮助美国信息学国家队选拔IOI的队员,目前逐渐发展为全球热门的线上赛事,成为美国大学申请条件下,含金量相当高的官方竞赛。USACO的比赛成绩可以助力计算机专业留学,越来越多的学生进入了康奈尔,麻省理工,普林斯顿,哈佛和耶鲁等大学,这些同学的共同点是他们都参加了美国计算机科学竞赛(USACO),并且取得过非常好的成绩。适合参赛人群USACO适合国内在读学生有意向申请美国大学的或者想锻炼自己编程能力的同学,高三学生也可以参加12月的第_usaco可以多次提交吗

MySQL存储过程和自定义函数_mysql自定义函数和存储过程-程序员宅基地

文章浏览阅读394次。1.1 存储程序1.2 创建存储过程1.3 创建自定义函数1.3.1 示例1.4 自定义函数和存储过程的区别1.5 变量的使用1.6 定义条件和处理程序1.6.1 定义条件1.6.1.1 示例1.6.2 定义处理程序1.6.2.1 示例1.7 光标的使用1.7.1 声明光标1.7.2 打开光标1.7.3 使用光标1.7.4 关闭光标1.8 流程控制的使用1.8.1 IF语句1.8.2 CASE语句1.8.3 LOOP语句1.8.4 LEAVE语句1.8.5 ITERATE语句1.8.6 REPEAT语句。_mysql自定义函数和存储过程

半导体基础知识与PN结_本征半导体电流为0-程序员宅基地

文章浏览阅读188次。半导体二极管——集成电路最小组成单元。_本征半导体电流为0

随便推点

【Unity3d Shader】水面和岩浆效果_unity 岩浆shader-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏18次。游戏水面特效实现方式太多。咱们这边介绍的是一最简单的UV动画(无顶点位移),整个mesh由4个顶点构成。实现了水面效果(左图),不动代码稍微修改下参数和贴图可以实现岩浆效果(右图)。有要思路是1,uv按时间去做正弦波移动2,在1的基础上加个凹凸图混合uv3,在1、2的基础上加个水流方向4,加上对雾效的支持,如没必要请自行删除雾效代码(把包含fog的几行代码删除)S..._unity 岩浆shader

广义线性模型——Logistic回归模型(1)_广义线性回归模型-程序员宅基地

文章浏览阅读5k次。广义线性模型是线性模型的扩展,它通过连接函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。广义线性模型拟合的形式为:其中g(μY)是条件均值的函数(称为连接函数)。另外,你可放松Y为正态分布的假设,改为Y 服从指数分布族中的一种分布即可。设定好连接函数和概率分布后,便可以通过最大似然估计的多次迭代推导出各参数值。在大部分情况下,线性模型就可以通过一系列连续型或类别型预测变量来预测正态分布的响应变量的工作。但是,有时候我们要进行非正态因变量的分析,例如:(1)类别型.._广义线性回归模型

HTML+CSS大作业 环境网页设计与实现(垃圾分类) web前端开发技术 web课程设计 网页规划与设计_垃圾分类网页设计目标怎么写-程序员宅基地

文章浏览阅读69次。环境保护、 保护地球、 校园环保、垃圾分类、绿色家园、等网站的设计与制作。 总结了一些学生网页制作的经验:一般的网页需要融入以下知识点:div+css布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点,网页的风格主题也很全面:如爱好、风景、校园、美食、动漫、游戏、咖啡、音乐、家乡、电影、名人、商城以及个人主页等主题,学生、新手可参考下方页面的布局和设计和HTML源码(有用点赞△) 一套A+的网_垃圾分类网页设计目标怎么写

C# .Net 发布后,把dll全部放在一个文件夹中,让软件目录更整洁_.net dll 全局目录-程序员宅基地

文章浏览阅读614次,点赞7次,收藏11次。之前找到一个修改 exe 中 DLL地址 的方法, 不太好使,虽然能正确启动, 但无法改变 exe 的工作目录,这就影响了.Net 中很多获取 exe 执行目录来拼接的地址 ( 相对路径 ),比如 wwwroot 和 代码中相对目录还有一些复制到目录的普通文件 等等,它们的地址都会指向原来 exe 的目录, 而不是自定义的 “lib” 目录,根本原因就是没有修改 exe 的工作目录这次来搞一个启动程序,把 .net 的所有东西都放在一个文件夹,在文件夹同级的目录制作一个 exe._.net dll 全局目录

BRIEF特征点描述算法_breif description calculation 特征点-程序员宅基地

文章浏览阅读1.5k次。本文为转载,原博客地址:http://blog.csdn.net/hujingshuang/article/details/46910259简介 BRIEF是2010年的一篇名为《BRIEF:Binary Robust Independent Elementary Features》的文章中提出,BRIEF是对已检测到的特征点进行描述,它是一种二进制编码的描述子,摈弃了利用区域灰度..._breif description calculation 特征点

房屋租赁管理系统的设计和实现,SpringBoot计算机毕业设计论文_基于spring boot的房屋租赁系统论文-程序员宅基地

文章浏览阅读4.1k次,点赞21次,收藏79次。本文是《基于SpringBoot的房屋租赁管理系统》的配套原创说明文档,可以给应届毕业生提供格式撰写参考,也可以给开发类似系统的朋友们提供功能业务设计思路。_基于spring boot的房屋租赁系统论文