Python pywin32 学习笔记(一)

不确定会坚持多久

能记多少就记多少吧
2019年3月1日21:02:26
停更一年多了,最近对PY产生了兴趣,应为想解放双手,又不想用按键精灵之类的软件,于是乎就百度到了这个东东“pywin32”
打开了新世界的大门,So,就在这记录学习笔记吧。
言归正传

  • 准备部分1
    pip install pywin32

  • 准备部分2
    工欲善其事必先利其器,先装个Spy++,百度一大把,就不放链接了,具体使用方法参考这里(一段简短的介绍)不过也够用了。

代码部分

首先

import win32guiimport win32conwin = win32gui.FindWindow('Notepad','新建文本文档.txt - 记事本')tid = win32gui.FindWindowEx(win,None,'Edit',None)win32gui.SendMessage(tid, win32con.WM_SETTEXT, None, '你好hello word!')win32gui.PostMessage(tid,win32con.WM_KEYDOWN,win32con.VK_RETURN,0)print("%x" % tid)print("%x" % win2)12345678

一句一句解释:

win = win32gui.FindWindow('Notepad','新建文本文档.txt - 记事本')1

这里搬运一下大佬博客的解释,

FindWindow(lpClassName=None, lpWindowName=None)
描述:自顶层窗口(也就是桌面)开始搜索条件匹配的窗体,并返回这个窗体的句柄。
不搜索子窗口、不区分大小写。找不到就返回0 参数:
lpClassName:字符型,是窗体的类名,这个可以在Spy++里找到。
lpWindowName:字符型,是窗口名,也就是标题栏上你能看见的那个标题。 说明:这个函数我们仅能用来找主窗口。
FindWindowEx(hwndParent=0, hwndChildAfter=0, lpszClass=None, lpszWindow=None)
描述:搜索类名和窗体名匹配的窗体,并返回这个窗体的句柄。不区分大小写,找不到就返回0。 参数:
hwndParent:若不为0,则搜索句柄为hwndParent窗体的子窗体。
hwndChildAfter:若不为0,则按照z-index的顺序从hwndChildAfter向后开始搜索子窗体,否则从第一个子窗体开始搜索。
lpClassName:字符型,是窗体的类名,这个可以在Spy++里找到。
lpWindowName:字符型,是窗口名,也就是标题栏上你能看见的那个标题。 说明:找到了主窗口以后就靠它来定位子窗体啦。

作者:橘子一方
来源:CSDN
原文:https://blog.csdn.net/seele52/article/details/17504925
版权声明:本文为博主原创文章,转载请附上博文链接!

这里我们在桌面新建了一个记事本,

打开后 标题栏上显示是这样的

当然直接 用Spy++就可以查询到这个窗口的句柄之类的信息
第一个参数lpClassName类名就是Spy++查询得到的

第二个参数lpWindowName就是标题栏显示的名字 “新建文本文档.txt - 记事本”

tid = win32gui.FindWindowEx(win,None,'Edit',None)1

然后获取到这个这个窗口的子窗口类名叫“Edit”(同样可以Spy++查到)的编辑区域

win32gui.SendMessage(tid, win32con.WM_SETTEXT, None, '你好hello word!')1

调用SendMessage方法往里面写入一段话

win32gui.PostMessage(tid,win32con.WM_KEYDOWN,win32con.VK_RETURN,0)1

插入一个回车符

print("%x" % tid)print("%x" % win2)12

顺便打印出来这个句柄的ID和在Spy++中查到的验证一下

另外,python中找回来的句柄都是十进制整型,Spy++里显示的都是十六进制整型,这个要注意下,调试的时候用十六进制
%x 输出句柄,如下:

记事本显示的结果如下:

如何利用Python和win32编程避免重复性体力劳动(一)——开始、FindWindow和FindWindowEx

(0)

相关推荐

  • C 逆向工程与外挂(3)Spy 工具

    刚开始入门时经常遇到的一个问题就是如何拿到窗口句柄--HWND,WinUser.h中提供了FindWindow方法的定义 lpClassName 是程序类定义 lpWindowName是程序的名字定义 ...

  • Python 控制台窗体关闭按钮禁用和启用

    很多Python控制台程序需长期运行,但是一不小心就点上控制台窗体关闭按钮,没有任何提示就终止了正在运行的程序. 因此需禁用控制台窗体关闭按钮(X),当然根据需要也可以启用关闭按钮. 控制台窗口(wi ...

  • Python爬虫学习笔记(三)

    Cookies: 以抓取https://www.yaozh.com/为例 Test1(不使用cookies): 代码: import urllib.request# 1.添加URLurl = &quo ...

  • Python基础学习笔记(十三)图形化界面Tkinter

    本节知识大纲: 本节知识框架 Python里的图形化界面(GUI)模块主要有Tkinter(python自带).PyQt.wxPython,我们这节主要讲解Tkinter组件: 一.Tkinter介绍 ...

  • Python基础学习笔记(八)异常处理

    本节知识大纲: 本节知识大纲 一.概念 什么是异常? 在程序运行过程中发生错误和意外,这些错误和意外往往不是语法错误. 定义:语法错误不属于异常,因为语法错误没办法让软件正常运行:正确情况下的异常指的 ...

  • Python编程学习笔记(5)

    截止目前我们已经能读取并显示一个指数或者任一一个个股的收盘价及其图形.这种图形到处可以看到,并不稀奇.我们可以利用聚宽的函数获取更多的更有价值的数据. 第二个小目标 画出任一一只个股最近10年的的市盈 ...

  • Python基础学习笔记(一)变量与数据类型

    https://m.toutiao.com/is/J3fN6eK/ Python是一门易学的面向对象的程序设计语言,可以轻易地完成界面.文件.封装等高阶需求,可移植性好,有非常多功能强大的库与包,如N ...

  • Python基础学习笔记(五)集合与字典

    本节知识大纲: 集合 字典 一.Set 集合的概念 1. set 集合的性质 set 集合是一组无序的且不能重复的集合,打印 set 集合时会自动消除重复的元素项: set 集合用大括号表示: set ...

  • Python学习笔记之optparse模块OptionParser

    一.基本用法 optparse,是一个更够让程序设计人员轻松设计出简单明了.易于使用.符合标准的Unix命令例程式的Python模块.生成使用和帮助信息 首先你必须导入该类,并创建一个OptionPa ...

  • 【python学习笔记】函数参数传递方法

    【python学习笔记】函数参数传递方法

  • python学习笔记-MySQL数据库连接相关

    import pymssql #引入pymssql模块 server = "localhost" user = "root" password = " ...