-
python 3.6 安装 win32 win32com模块
2018-05-24 13:17:25本人使用python3.6,最近要使用到pywin32中的为win32com模块,于是尝试安装,主要方法有以下几种: 1.在http://sourceforge.net/projects/pywin32/files/pywin32/ 上下载对应的版本进行安装,对build221,220,...本人使用python3.6,最近要使用到pywin32中的为win32com模块,于是尝试安装,主要方法有以下几种:
1.在http://sourceforge.net/projects/pywin32/files/pywin32/ 上下载对应的版本进行安装,对build221,220,219均进行了尝试(分别对应了python3.5.3,3.5.1+,3.5.0a版本,在进行安装时,不能正确寻找到python的安装目录,并将所搜索到的方法均进行尝试后仍然不能解决,遂放弃,可能是跟我使用的python版本有问题吧(未验证)。
2.在http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyhook下载了.whl文件,使用pip 安装后发现其中有文件缺失,不能正常使用。
3.这是我成功的方法,经过搜索和向人请教后,在https://stackoverflow.com/questions/4863056/how-to-install-pywin32-module-in-windows-7找到这样一段话:
于是在cmd中使用python -m pip install pypiwin32进行安装,成功解决。
因为我寻找到这个解决办法耗费了一定时间,在中文资料中暂时没找到第三种解决方案的描述,因此分享出来,希望对大家有用。 -
python win32api win32gui win32con 窗口句柄 发送消息 常用方法 键盘输入
2018-01-24 21:09:43推荐微软的Spy++来查看窗口类名等信息。 import win32gui import win32con import win32api # 从顶层窗口向下搜索主窗口,无法搜索子窗口 # FindWindow(lpClassName=...handle = win32gui.FindWindow("Notepad", N推荐微软的Spy++来查看窗口类名等信息。
import win32gui import win32con import win32api # 从顶层窗口向下搜索主窗口,无法搜索子窗口 # FindWindow(lpClassName=None, lpWindowName=None) 窗口类名 窗口标题名 handle = win32gui.FindWindow("Notepad", None) # 获取窗口位置 left, top, right, bottom = win32gui.GetWindowRect(handle) #获取某个句柄的类名和标题 title = win32gui.GetWindowText(handle) clsname = win32gui.GetClassName(handle) # 打印句柄 # 十进制 print(handle) # 十六进制 print("%x" %(handle) ) # 搜索子窗口 # 枚举子窗口 hwndChildList = [] win32gui.EnumChildWindows(handle, lambda hwnd, param: param.append(hwnd), hwndChildList) # FindWindowEx(hwndParent=0, hwndChildAfter=0, lpszClass=None, lpszWindow=None) 父窗口句柄 若不为0,则按照z-index的顺序从hwndChildAfter向后开始搜索子窗体,否则从第一个子窗体开始搜索。 子窗口类名 子窗口标题 subHandle = win32gui.FindWindowEx(handle, 0, "EDIT", None) # 获得窗口的菜单句柄 menuHandle = win32gui.GetMenu(subHandle) # 获得子菜单或下拉菜单句柄 # 参数:菜单句柄 子菜单索引号 subMenuHandle = win32gui.GetSubMenu(menuHandle, 0) # 获得菜单项中的的标志符,注意,分隔符是被编入索引的 # 参数:子菜单句柄 项目索引号 menuItemHandle = win32gui.GetMenuItemID(subMenuHandle, 0) # 发送消息,加入消息队列,无返回 # 参数:句柄 消息类型 WParam IParam win32gui.postMessage(subHandle, win32con.WM_COMMAND, menuItemHandle, 0) # wParam的定义是32位整型,high word就是他的31至16位,low word是它的15至0位。 # 当参数超过两个,wParam和lParam不够用时,可以将wParam就给拆成两个int16来使用。 # 这种时候在python里记得用把HIWORD的常数向左移16位,再加LOWORD,即wParam = HIWORD<<16+LOWORD。 # 下选框内容更改 # 参数:下选框句柄; 消息内容; 参数下选框的哪一个item,以0起始的待选选项的索引;如果该值为-1,将从组合框列表中删除当前选项,并使当前选项为空; 参数 # CB_Handle为下选框句柄,PCB_handle下选框父窗口句柄 if win32api.SendMessage(CB_handle, win32con.CB_SETCURSEL, 1, 0) == 1: # 下选框的父窗口命令 # 参数:父窗口句柄; 命令; 参数:WParam:高位表示类型,低位表示内容;参数IParam,下选框句柄 # CBN_SELENDOK当用户选择了有效的列表项时发送,提示父窗体处理用户的选择。 LOWORD为组合框的ID. HIWORD为CBN_SELENDOK的值。 win32api.SendMessage(PCB_handle, win32con.WM_COMMAND, 0x90000, CB_handle) # CBN_SELCHANGE当用户更改了列表项的选择时发送,不论用户是通过鼠标选择或是通过方向键选择都会发送此通知。LOWORD为组合框的ID. HIWORD为CBN_SELCHANGE的值。 win32api.SendMessage(PCB_handle, win32con.WM_COMMAND, 0x10000, CB_handle) # 设置文本框内容,等窗口处理完毕后返回true。中文需编码成gbk # 参数:句柄;消息类型;参数WParam,无需使用; 参数IParam,要设置的内容,字符串 win32api.SendMessage(handle, win32con.WM_SETTEXT, 0, os.path.abspath(fgFilePath).encode('gbk')) # 控件点击确定,处理消息后返回0 # 参数:窗口句柄; 消息类型; 参数WParam HIWORD为0(未使用),LOWORD为控件的ID; 参数IParam 0(未使用),确定控件的句柄 win32api.SendMessage(Mhandle, win32con.WM_COMMAND, 1, confirmBTN_handle) # 获取窗口文本不含截尾空字符的长度 # 参数:窗口句柄; 消息类型; 参数WParam; 参数IParam bufSize = win32api.SendMessage(subHandle, win32con.WM_GETTEXTLENGTH, 0, 0) +1 # 利用api生成Buffer strBuf = win32gui.PyMakeBuffer(bufSize) print(strBuf) # 发送消息获取文本内容 # 参数:窗口句柄; 消息类型;文本大小; 存储位置 length = win32gui.SendMessage(subHandle, win32con.WM_GETTEXT, bufSize, strBuf) # 反向内容,转为字符串 # text = str(strBuf[:-1]) address, length = win32gui.PyGetBufferAddressAndLen(strBuf) text = win32gui.PyGetString(address, length) # print('text: ', text) # 鼠标单击事件 #鼠标定位到(30,50) win32api.SetCursorPos([30,150]) #执行左单键击,若需要双击则延时几毫秒再点击一次即可 win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0) #右键单击 win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0) def click1(x,y): #第一种 win32api.SetCursorPos((x,y)) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0) def click2(x,y): #第二种 ctypes.windll.user32.SetCursorPos(x,y) ctypes.windll.user32.mouse_event(2,0,0,0,0) ctypes.windll.user32.mouse_event(4,0,0,0,0) def click_it(pos): #第三种 handle= win32gui.WindowFromPoint(pos) client_pos =win32gui.ScreenToClient(handle,pos) tmp=win32api.MAKELONG(client_pos[0],client_pos[1]) win32gui.SendMessage(handle, win32con.WM_ACTIVATE,win32con.WA_ACTIVE,0) win32gui.SendMessage(handle, win32con.WM_LBUTTONDOWN,win32con.MK_LBUTTON,tmp) win32gui.SendMessage(handle, win32con.WM_LBUTTONUP,win32con.MK_LBUTTON,tmp) # 发送回车 win32api.keybd_event(13,0,0,0) win32api.keybd_event(13,0,win32con.KEYEVENTF_KEYUP,0) # 关闭窗口 win32gui.PostMessage(win32lib.findWindow(classname, titlename), win32con.WM_CLOSE, 0, 0) # 检查窗口是否最小化,如果是最大化 if(win32gui.IsIconic(hwnd)): # win32gui.ShowWindow(hwnd, win32con.SW_SHOWNORMAL) win32gui.ShowWindow(hwnd, 8) sleep(0.5) # SW_HIDE:隐藏窗口并激活其他窗口。nCmdShow=0。 # SW_MAXIMIZE:最大化指定的窗口。nCmdShow=3。 # SW_MINIMIZE:最小化指定的窗口并且激活在Z序中的下一个顶层窗口。nCmdShow=6。 # SW_RESTORE:激活并显示窗口。如果窗口最小化或最大化,则系统将窗口恢复到原来的尺寸和位置。在恢复最小化窗口时,应用程序应该指定这个标志。nCmdShow=9。 # SW_SHOW:在窗口原来的位置以原来的尺寸激活和显示窗口。nCmdShow=5。 # SW_SHOWDEFAULT:依据在STARTUPINFO结构中指定的SW_FLAG标志设定显示状态,STARTUPINFO 结构是由启动应用程序的程序传递给CreateProcess函数的。nCmdShow=10。 # SW_SHOWMAXIMIZED:激活窗口并将其最大化。nCmdShow=3。 # SW_SHOWMINIMIZED:激活窗口并将其最小化。nCmdShow=2。 # SW_SHOWMINNOACTIVE:窗口最小化,激活窗口仍然维持激活状态。nCmdShow=7。 # SW_SHOWNA:以窗口原来的状态显示窗口。激活窗口仍然维持激活状态。nCmdShow=8。 # SW_SHOWNOACTIVATE:以窗口最近一次的大小和状态显示窗口。激活窗口仍然维持激活状态。nCmdShow=4。 # SW_SHOWNORMAL:激活并显示一个窗口。如果窗口被最小化或最大化,系统将其恢复到原来的尺寸和大小。应用程序在第一次显示窗口的时候应该指定此标志。nCmdShow=1。
# win32虽然也可控制键盘,但不如使用PyUserInput的方便。需要注意在windows和mac下接口参数可能有所不同。 from pymouse import PyMouse from pykeyboard import PyKeyboard m = PyMouse() k = PyKeyboard() x_dim, y_dim = m.screen_size() # 鼠标点击 m.click(x_dim/2, y_dim/2, 1) # 键盘输入 k.type_string('Hello, World!') # 按住一个键 k.press_key('H') # 松开一个键 k.release_key('H') # 按住并松开,tap一个键 k.tap_key('e') # tap支持重复的间歇点击键 k.tap_key('l',n=2,interval=5) # 发送判断文字 k.type_string('123456') #创建组合键 k.press_key(k.alt_key) k.tap_key(k.tab_key) k.release_key(k.alt_key) # 特殊功能键 k.tap_key(k.function_keys[5]) # Tap F5 k.tap_key(k.numpad_keys['Home']) # Tap 'Home' on the numpad k.tap_key(k.numpad_keys[5], n=3) # Tap 5 on the numpad, thrice # Mac系统 k.press_keys(['Command','shift','3']) # Windows系统 k.press_keys([k.windows_l_key,'d']) 其中的PyMouseEvent和PyKeyboardEvent还可用于监听鼠标和键盘事件的输入
-
python win32 窗口和鼠标操作
2018-07-23 23:23:00import win32gui, win32api, win32con # 获取鼠标当前位置的坐标 win32api.GetCursorPos() # 将鼠标移动到坐标处 win32api.SetCursorPos((200, 200)) # 左点击 win32api.mouse_event(win32con.MO...用win32api, win32gui 获取窗口句柄,获取鼠标坐标,点击动作
import win32gui, win32api, win32con # 获取鼠标当前位置的坐标 win32api.GetCursorPos() # 将鼠标移动到坐标处 win32api.SetCursorPos((200, 200)) # 左点击 win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 200, 200, 0, 0) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 200, 200, 0, 0) # 获取所有窗口 titles = set() def foo(hwnd, mouse): #去掉下面这句就所有都输出了,但是我不需要那么多 if win32gui.IsWindow(hwnd) and win32gui.IsWindowEnabled(hwnd) and win32gui.IsWindowVisible(hwnd): titles.add(win32gui.GetWindowText(hwnd)) win32gui.EnumWindows(foo, 0) result = [t for t in titles if t] # 找到某个窗口 win32gui.FindWindow(None, 'qq') win32gui.FindWindow('TXGuiFoundation', None) # 通过坐标获取窗口句柄 hw = win32gui.WindowFromPoint(win32api.GetCursorPos()) # 获取窗口classname win32gui.GetClassName(hw) # 获取窗口标题 win32gui.GetWindowText(hw) #获取句柄窗口的大小信息 left, top, right, bot = win32gui.GetWindowRect(hW) width = right - left height = bot - top
-
Win32 Application和Win32 Console Application区别
2018-05-15 17:45:521.Win32 Application和Win32 Console Application都是工作在32位Windows环境的程序。其中Win32 Application就是普通的常见的窗口应用程序,当然有的界面做得比较个性化,比如圆形的、不规则形状的……它们都是所谓的...1.Win32 Application和Win32 Console Application都是工作在32位Windows环境的程序。
其中Win32 Application就是普通的常见的窗口应用程序,当然有的界面做得比较个性化,比如圆形的、不规则形状的……它们都是所谓的GUI(Graphics User Interface图形用户接口),我们可以通过鼠标点击来完成控制。
而Win32 Console Application(win32控制台应用程序)往往是像MS-DOS窗口(XP中叫命令提示符)的样子出现,我们得用键盘输入各种命令来使用它;或者叫CUI(Character User Interface字符用户接口)。
2.一个是window应用程序,一个是控制台应用程序,不同的两种。
控制台应用程序:入口函数为main,一般写C和C++计算类代码常用,如计算水仙花数、冒泡排序等一类程序。程序运行结果以命令行窗口显示。
window应用程序:入口函数为WinMain,这种应用程序一般会带至少一个WINDOWS窗口。所谓的WINDOWS窗口就是说它可以响应消息,并且带窗口的应用程序都至少有一个消息队列。 一般用于写桌面应用程序,强大之处在于能够作出用户操作界面,并与操作系统配合捕获并响应用户的各种操作,如鼠标移动、按钮点击等。常用来和数据库结合做管理系统,如财务管理系统等,当然,这类系统一般用MFC做较为容易。
-
预定义常量WIN32、_WIN32、_WIN64的作用
2019-02-23 19:10:51本文参考 Kevin_土豆博文: ... 先说结论: 1、 WIN32/_WIN32 可以用来判断是否 Windows 系统(对于跨平台程序) 2、 _WIN64 用来判断编译环境是 x86(32位) 还是 x64(64位) 在 Win32 配置下,_WIN32 ... -
python3安装win32api
2019-04-11 15:58:47python3安装win32api -
【转】python win32api win32gui win32con 简单操作教程(窗口句柄 发送消息 常用方法 键盘输入)
2018-10-14 01:48:06import win32gui import win32con import win32api # 从顶层窗口向下搜索主窗口,无法搜索子窗口 # FindWindow(lpClassName=None, lpWindowName=None) 窗口类名 窗口标题名 handle = win32gui.FindWindow("... -
win32开发(最简单的win32代码)
2017-12-12 08:48:45【 声明:版权所有,欢迎转载,请勿用于...所以,利用这一段时间,将win32和mfc的代码重新学习了一下,收获还是很多的。 实际开发中,使用mfc的概率比win32多很多。但是,这不妨碍大家学习win32来开发应用。建议大家 -
VC6.0新建工程——Win32 Application和Win32 Console Application
2017-09-05 11:10:25Win32 Application和Win32 Console Application都是工作在32位Windows环境的程序。Win32 Application(Win32 窗口应用程序) -
Pycharm下导入win32api、win32con报错
2019-11-25 10:39:14在PyCharm中,发现import win32api 失败。 是因为PyCharm中要做一些设定,点击Pycharm的File-->settings...-->Project:untitled-->Project Interpreter 在Project Interpreter页面点击+号,在弹出的... -
win32控制台、win32工程、MFC工程的区别
2018-07-26 17:28:51空项目 控制台 win 32 mfc 问2个问题即可。...1.控制台 VS win32 mfc?...有脸,选win32或mfc。...控制台与win32 mfc:交互方式的不同,前者是CML(命令模式),后者是GUI(用户界面)。 ... -
为什么导入win32com模块会因为其内部导入win32api失败而报错?
2018-10-31 12:40:33按照正常操作安装了pypiwi32,win32com可以导入但是其中的win32api无法导入 报错: >>> import win32com.client as win32 Traceback (most recent call last): File "<pyshell#9>", line 1, in ... -
WIN32和_WIN32的区别
2014-09-07 21:20:59WIN32 is defined by the SDK or the build environment, so it does not use the implementation reserved namespace_WIN32 is defined by the compiler so it uses the underscore to place it in the implementat -
python通过win32api、win32clipboard等包实现微信pc端消息自动发送
2019-07-17 11:30:12import win32api import win32con import win32gui import time import win32clipboard as w 安装包可以通过pip进行安装 : pip install win32api ,我使用的是Anaconda,直接import。 二、找到微信聊天窗口: ... -
[Win32]Win32窗口应用程序的框架
2013-03-11 21:02:28概述 现在市场上出现了很多应用程序框架,比如窗体程序,如MFC,.net framwork , VB , delphi,举不胜数。...Win32的窗口应用程序,其实,win32窗口程序的核心就是窗口,一个win32窗口应 -
Win32窗口相关API反汇编
2020-06-20 18:28:421、Win32应用程序入口识别 /*程序入口*/ //APIENTRY(API入口) __stdcall int APIENTRY WinMain(HINSTANCE hInstance, //ImageBase HINSTANCE hPrevInstance, //NULL LPSTR lpCmdLine, //命令行参数,可以用Debug... -
【逆向工程】逆向工程阅读表 Windows Win32
2019-12-14 18:57:05Win32 PInvoke.net: PInvoke.net is primarily a wiki, allowing developers to find, edit and add PInvoke* signatures, user-defined types, and any other information related to calling Win32 and o... -
Visual Studio 2015专业版创建Win32控制台应用程序,C,C++源文件
2015-09-22 15:34:25原配的Visual Studio 2005专业版不像之前的版本,在新建项目里面是找不到Win32模板的,那么怎么才能新建Win32项目和Win32控制台应用程序呢?先看如下图所示: 解决: 1、添加的办法是点击上图所示的新建项目界面的... -
win32com模块
2019-04-14 22:34:55import win32com.client as win32 #建立一个可视的excel app = 'Excel' xl = win32.gencache.EnsureDispatch('%s.Application' % app) ss = xl.Workbooks.Add() sh = ss.ActiveSheet xl.Visible = True #编辑... -
关于VC预定义常量_WIN32,WIN32,_WIN64
2015-03-08 22:18:33VC2012 下写 Windows 程序时,有时需要判断编译环境。... MSDN 里说,VC 有 3 个预处理常量,分别是 _WIN32,_WIN64,WIN32。这三个常量如何使用呢?看起来简单,其实是很困惑的。 在 Win32 配置下 -
win32应用程序和win32控制台应用程序
2012-11-20 09:43:07win32应用程序是有窗体的(当然也可以没有),有Windows消息循环机制的。 而win32控制台应用程序只是在控制台下运行的程序,类似以前dos的程序。 Win32 Application和Win32 Console Application 都是工作在32位... -
win32gui 常用接口
2019-04-04 22:27:47import win32gui #设置为最前窗口 win32gui.SetForegroundWindow(hwnd) #获取最前窗口句柄 hwnd = win32gui.GetForegroundWindow() #获取窗口标题 GetWindowText(hwnd) #通过类名或查标题找窗口 hwnd = win... -
import win32api 安装pip install pypiwin32
2017-11-09 19:57:40pip install win32api pip install pywin32 都会提示错误,如下: Could not find a version that satisfies the requirement win32api (from versions: ) No matching distribution found for win32api 改为 pip i -
python安装win32模块
2018-03-04 12:27:53pip install pypiwin32不过清华源和豆瓣源都会安装报错,最后直接用pycharm...PACKAGE CONTENTS _win32sysloader _winxptheme mmapfile odbc perfmon servicemanager timer win2kras win32api win32clip... -
WIN32 API中文手册网站
2020-04-21 11:03:37WIN32 API中文手册网站 WIN32 API中文手册网站 -
VS中win32应用程序和win32控制台程序的差别
2014-10-12 14:39:38对VS中win32应用程序和win32总结篇 -
mysql-5.5.22-win32 32位系统mysql5.5安装包
2012-04-05 22:01:27mysql-5.5.22-win32 32位系统mysql5.5安装包 -
<Win32_6>Win32的验证码程序
2013-07-29 10:00:22上次利用文本输出规范,我写了一个"程序员求爱程序",今天还是继续玩一下Win32的文本输出,这次我将详细谈一下Win32的文本输出规范。毕竟,这个在Win32编程中还是很重要的,基本上每一个程序都离不开这个玩意儿 ... -
eclipse-jee-mars-R-win32-x86_64位官方绿色版.zip
2015-06-30 15:42:46eclipse-jee-mars-R-win32-x86_64.zip 截至2015.06.30 eclipse-j2ee 最新版
-
git讲解
-
MaxScale 实现 MySQL 读写分离与负载均衡
-
MHA 高可用 MySQL 架构与 Altas 读写分离
-
MySQL 索引
-
shader学习二:mix()函数的使用
-
java基础语法
-
精通编译Makefile,Nina, 从底层uboot到Android
-
C和C++课程
-
手把手教你学LVGL—11.lv_btn 按钮
-
北京市海淀区.shp
-
常见浏览器内核
-
如何经营企业私域
-
小白的学习成长之路
-
2018年TI杯大学生电子设计竞赛本科组D组手势识别装置源程序
-
手机没网了,却还能支付,这是什么原理?
-
vue3从0到1-超详细
-
MySQL 备份与恢复详解(高低版本 迁移;不同字符集 相互转换;表
-
MySQL 函数、用户自定义函数
-
剑指Offer-58数组中数字出现的次数
-
抖音原视频下载 抖音Api 抖音去水印