Python提供了调用系统级别API的功能,ctype、sip等都可以用来调用C++代码,以此来和系统交互。win32模块提供了调用本地win32 GUI API的接口,使得我们可以更方便的调用系统级别的API。可以做诸如监听全局快捷键、操作任务栏系统图标等功能。
在使用之前,先了解下WIndows常用的API。
1. WIndows API
1.1 API之消息函数
| 函数 | 作用 |
|---|
| BroadcastSystemMessage | 将一条系统消息广播给系统中所有的顶级窗口 |
| GetMessagePos | 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置 |
| GetMessageTime | 取得消息队列中上一条消息处理完毕时的时间 |
| PostMessage | 将一条消息投递到指定窗口的消息队列 |
| PostThreadMessage | 将一条消息投递给应用程序 |
| RegisterWindowMessage | 获取分配给一个字串标识符的消息编号 |
| ReplyMessage | 答复一个消息 |
| SendMessage | 调用一个窗口的窗口函数,将一条消息发给那个窗口 |
| SendMessageCallback | 将一条消息发给窗口 |
| SendMessageTimeout | 向窗口发送一条消息 |
| SendNotifyMessage | 向窗口发送一条消息 |
1.2 API之控件与消息函数
| 函数名 | 作用 |
|---|
| AdjustWindowRect | 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小 |
| AnyPopup | 判断屏幕上是否存在任何弹出式窗口 |
| ArrangeIconicWindows | 排列一个父窗口的最小化子窗口 |
| AttachThreadInput | 连接线程输入函数 |
| BeginDeferWindowPos | 启动构建一系列新窗口位置的过程 |
| BringWindowToTop | 将指定的窗口带至窗口列表顶部 |
| CascadeWindows | 以层叠方式排列窗口 |
| ChildWindowFromPoint | 返回父窗口中包含了指定点的第一个子窗口的句柄 |
| ClientToScreen | 判断窗口内以客户区坐标表示的一个点的屏幕坐标 |
| CloseWindow | 最小化指定的窗口 |
| CopyRect | 矩形内容复制 |
| DeferWindowPos | 该函数为特定的窗口指定一个新窗口位置 |
| DestroyWindow | 清除指定的窗口以及它的所有子窗口 |
| DrawAnimatedRects | 描绘一系列动态矩形 |
| EnableWindow | 指定的窗口里允许或禁止所有鼠标及键盘输入 |
| EndDeferWindowPos | 同时更新DeferWindowPos调用时指定的所有窗口的位置及状态 |
| EnumChildWindows | 为指定的父窗口枚举子窗口 |
| EnumThreadWindows | 枚举与指定任务相关的窗口 |
| EnumWindows | 枚举窗口列表中的所有父窗口 |
| EqualRect | 判断两个矩形结构是否相同 |
| FindWindow | 寻找窗口列表中第一个符合指定条件的顶级窗口 |
| FindWindowEx | 在窗口列表中寻找与指定条件相符的第一个子窗口 |
| FlashWindow | 闪烁显示指定窗口 |
| GetActiveWindow | 获得活动窗口的句柄 |
| GetCapture | 获得一个窗口的句柄,这个窗口位于当前输入线程,且拥有鼠标捕获(鼠标活动由它接收) |
| GetClassInfo | 取得WNDCLASS结构(或WNDCLASSEX结构)的一个副本,结构中包含了与指定类有关的信息 |
| GetClassLong | 取得窗口类的一个Long变量条目 |
| GetClassName | 为指定的窗口取得类名 |
| GetClassWord | 为窗口类取得一个整数变量 |
| GetClientRect | 返回指定窗口客户区矩形的大小 |
| GetDesktopWindow | 获得代表整个屏幕的一个窗口(桌面窗口)句柄 |
| GetFocus | 获得拥有输入焦点的窗口的句柄 |
| GetForegroundWindow | 获得前台窗口的句柄 |
| GetLastActivePopup | 获得在一个给定父窗口中最近激活过的弹出式窗口的句柄 |
| GetParent | 判断指定窗口的父窗口 |
| GetTopWindow | 搜索内部窗口列表,寻找隶属于指定窗口的头一个窗口的句柄 |
| GetUpdateRect | 获得一个矩形,它描叙了指定窗口中需要更新的那一部分 |
| GetWindow | 获得一个窗口的句柄,该窗口与某源窗口有特定的关系 |
| GetWindowContextHelpId | 取得与窗口关联在一起的帮助场景ID |
| GetWindowLong | 从指定窗口的结构中取得信息 |
| GetWindowPlacement | 获得指定窗口的状态及位置信息 |
| GetWindowRect | 获得整个窗口的范围矩形,窗口的边框、标题栏、滚动条及菜单等都在这个矩形内 |
| GetWindowText | 取得一个窗体的标题(caption)文字,或者一个控件的内容 |
| GetWindowTextLength | 调查窗口标题文字或控件内容的长短 |
| GetWindowWord | 获得指定窗口结构的信息 |
| InflateRect | 增大或减小一个矩形的大小 |
| IntersectRect | 这个函数在 lpDestRect 里载入一个矩形, 它是lpSrc1Rect与lpSrc2Rect两个矩形的交集 |
| InvalidateRect | 屏蔽一个窗口客户区的全部或部分区域 |
| IsChild | 判断一个窗口是否为另一窗口的子或隶属窗口 |
| IsIconic | 判断窗口是否已最小化 |
| IsRectEmpty | 判断一个矩形是否为空 |
| IsWindow | 判断一个窗口句柄是否有效 |
| IsWindowEnabled | 判断窗口是否处于活动状态 |
| IsWindowUnicode | 判断一个窗口是否为Unicode窗口。这意味着窗口为所有基于文本的消息都接收Unicode文字 |
| IsWindowVisible | 判断窗口是否可见 |
| IsZoomed | 判断窗口是否最大化 |
| LockWindowUpdate | 锁定指定窗口,禁止它更新 |
| MapWindowPoints | 将一个窗口客户区坐标的点转换到另一窗口的客户区坐标系统 |
| MoveWindow | 改变指定窗口的位置和大小 |
| OffsetRect | 通过应用一个指定的偏移,从而让矩形移动起来 |
| OpenIcon | 恢复一个最小化的程序,并将其激活 |
| PtInRect | 判断指定的点是否位于矩形内部 |
| RedrawWindow | 重画全部或部分窗口 |
| ReleaseCapture | 为当前的应用程序释放鼠标捕获 |
| ScreenToClient | 判断屏幕上一个指定点的客户区坐标 |
| ScrollWindow | 滚动窗口客户区的全部或一部分 |
| ScrollWindowEx | 根据附加的选项,滚动窗口客户区的全部或部分 |
| SetActiveWindow | 激活指定的窗口 |
| SetCapture | 将鼠标捕获设置到指定的窗口 |
| SetClassLong | 为窗口类设置一个Long变量条目 |
| SetClassWord | 为窗口类设置一个条目 |
| SetFocusAPI | 将输入焦点设到指定的窗口。如有必要,会激活窗口 |
| SetForegroundWindow | 将窗口设为系统的前台窗口 |
| SetParent | 指定一个窗口的新父 |
| SetRect | 设置指定矩形的内容 |
| SetRectEmpty | 将矩形设为一个空矩形 |
| SetWindowContextHelpId | 为指定的窗口设置帮助场景(上下文)ID |
| SetWindowLong | 在窗口结构中为指定的窗口设置信息 |
| SetWindowPlacement | 设置窗口状态和位置信息 |
| SetWindowPos | 为窗口指定一个新位置和状态 |
| SetWindowText | 设置窗口的标题文字或控件的内容 |
| SetWindowWord | 在窗口结构中为指定的窗口设置信息 |
| ShowOwnedPopups | 显示或隐藏由指定窗口所有的全部弹出式窗口 |
| ShowWindow | 控制窗口的可见性 |
| ShowWindowAsync | 与ShowWindow相似 |
| SubtractRect | 装载矩形lprcDst,它是在矩形lprcSrc1中减去lprcSrc2得到的结果 |
| TileWindows | 以平铺顺序排列窗口 |
| UnionRect | 装载一个lpDestRect目标矩形,它是lpSrc1Rect和lpSrc2Rect联合起来的结果 |
| UpdateWindow | 强制立即更新窗口 |
| ValidateRect | 校验窗口的全部或部分客户区 |
| WindowFromPoint | 返回包含了指定点的窗口的句柄。忽略屏蔽、隐藏以及透明窗口 |
1.3 API之文本和字体函数
| 函数名 | 作用 |
|---|
| AddFontResource | 在Windows系统中添加一种字体资源 |
| CreateFont | 用指定的属性创建一种逻辑字体 |
| CreateFontIndirect | 用指定的属性创建一种逻辑字体 |
| CreateScalableFontResource | 为一种TureType字体创建一个资源文件,以便能用API函数AddFontResource将其加入Windows系统 |
| DrawText | 将文本描绘到指定的矩形中 |
| DrawTextEx | 与DrawText相似,只是加入了更多的功能 |
| EnumFontFamilies | 列举指定设备可用的字体 |
| EnumFontFamiliesEx | 列举指定设备可用的字体 |
| EnumFonts | 列举指定设备可用的字体 |
| ExtTextOut | 经过扩展的文本描绘函数。也请参考SetTextAlign函数 |
| GetAspectRatioFilterEx | 用SetMapperFlags要求Windows只选择与设备当前纵横比相符的光栅字体时,本函数可判断纵横比大小 |
| GetCharABCWidths | 判断TureType字体中一个或多个字符的A-B-C大小 |
| GetCharABCWidthsFloat | 查询一种字体中一个或多个字符的A-B-C尺寸 |
| GetCharacterPlacement | 该函数用于了解如何用一个给定的字符显示一个字串 |
| GetCharWidth | 调查字体中一个或多个字符的宽度 |
| GetFontData | 接收一种可缩放字体文件的数据 |
| GetFontLanguageInfo | 返回目前选入指定设备场景中的字体的信息 |
| GetGlyphOutline | 取得TureType字体中构成一个字符的曲线信息 |
| GetKerningPairs | 取得指定字体的字距信息 |
| GetOutlineTextMetrics | 接收与TureType字体内部特征有关的详细信息 |
| GetRasterizerCaps | 了解系统是否有能力支持可缩放的字体 |
| GetTabbedTextExtent | 判断一个字串占据的范围,同时考虑制表站扩充的因素 |
| GetTextAlign | 接收一个设备场景当前的文本对齐标志 |
| GetTextCharacterExtra | 判断额外字符间距的当前值 |
| GetTextCharset | 接收当前选入指定设备场景的字体的字符集标识符 |
| GetTextCharsetInfo | 获取与当前选定字体的字符集有关的详细信息 |
| GetTextColor | 判断当前字体颜色。通常也称为“前景色” |
| GetTextExtentExPoint | 判断要填入指定区域的字符数量。也用一个数组装载每个字符的范围信息 |
| GetTextExtentPoint | 判断一个字串的大小(范围) |
| GetTextFace | 获取一种字体的字样名 |
| GetTextMetrics | 获取与选入一种设备场景的物理字体有关的信息 |
| GrayString | 描绘一个以灰色显示的字串。通常由Windows用于标识禁止状态 |
| PolyTextOut | 描绘一系列字串 |
| RemoveFontResource | 从Windows系统中删除一种字体资源 |
| SetMapperFlags Windows | 对字体进行映射时,可用该函数选择与目标设备的纵横比相符的光栅字体 |
| SetTextAlign | 设置文本对齐方式,并指定在文本输出过程中使用设备场景的当前位置 |
| SetTextCharacterExtra | 描绘文本的时候,指定要在字符间插入的额外间距 |
| SetTextColor | 设置当前文本颜色。这种颜色也称为“前景色” |
| SetTextJustification | 通过指定一个文本行应占据的额外空间,可用这个函数对文本进行两端对齐处理 |
| TabbedTextOut | 支持制表站的一个文本描绘函数 |
| TextOut | 文本绘图函数 |
1.4 API之位图、图标和光栅运算函数
| 函数名 | 作用 |
|---|
| BitBlt | 将一幅位图从一个设备场景复制到另一个 |
| CopyIcon | 制作指定图标或鼠标指针的一个副本。这个副本从属于发出调用的应用程序 |
| CopyImage | 复制位图、图标或指针,同时在复制过程中进行一些转换工作 |
| CreateBitmap | 按照规定的格式创建一幅与设备有关位图 |
| CreateBitmapIndirect | 创建一幅与设备有关位图 |
| CreateCompatibleBitmap | 创建一幅与设备有关位图,它与指定的设备场景兼容 |
| CreateCursor | 创建一个鼠标指针 |
| CreateDIBitmap | 根据一幅与设备无关的位图创建一幅与设备有关的位图 |
| CreateDIBSection | 创建一个DIBSection |
| CreateIcon | 创建一个图标 |
| CreateIconIndirect | 创建一个图标 |
| DestroyCursor | 清除指定的鼠标指针,并释放它占用的所有系统资源 |
| DestroyIcon | 清除图标 |
| DrawIcon | 在指定的位置画一个图标 |
| DrawIconEx | 描绘一个图标或鼠标指针。与DrawIcon相比,这个函数提供了更多的功能 |
| ExtractAssociatedIcon | 判断一个可执行程序或DLL中是否存在图标,或是否有图标与系统注册表中指定的文件存在关联并提取之 |
| ExtractIcon | 判断一个可执行文件或DLL中是否有图标存在,并将其提取出来 |
| GetBitmapBits | 将来自位图的二进制位复制到一个缓冲区 |
| GetBitmapDimensionEx | 取得一幅位图的宽度和高度 |
| GetDIBColorTable | 从选入设备场景的DIBSection中取得颜色表信息 |
| GetDIBits | 将来自一幅位图的二进制位复制到一幅与设备无关的位图里 |
| GetIconInfo | 取得与图标有关的信息 |
| GetStretchBltMode | 判断StretchBlt 和 StretchDIBits函数采用的伸缩模式 |
| LoadBitmap | 从指定的模块或应用程序实例中载入一幅位图 |
| LoadCursor | 从指定的模块或应用程序实例中载入一个鼠标指针 |
| LoadCursorFromFile | 在一个指针文件或一个动画指针文件的基础上创建一个指针 |
| LoadIcon | 从指定的模块或应用程序实例中载入一个图标 |
| LoadImage | 载入一个位图、图标或指针 |
| MaskBlt | 执行复杂的图象传输,同时进行掩模(MASK)处理 |
| PatBlt | 在当前选定的刷子的基础上,用一个图案填充指定的设备场景 |
| PlgBlt | 复制一幅位图,同时将其转换成一个平行四边形。利用它可对位图进行旋转处理 |
| SetBitmapBits | 将来自缓冲区的二进制位复制到一幅位图 |
| SetBitmapDimensionEx | 设置一幅位图的宽度。以一毫米的十分之一为单位 |
| SetDIBColorTable | 设置选入设备场景的一个DIBSection的颜色表信息 |
| SetDIBits | 将来自与设备无关位图的二进制位复制到一幅与设备有关的位图里 |
| SetDIBitsToDevice | 将一幅与设备无关位图的全部或部分数据直接复制到一个设备 |
| SetStretchBltMode | 指定StretchBlt 和 StretchDIBits函数的伸缩模式 |
| StretchBlt | 将一幅位图从一个设备场景复制到另一个 |
| StretchDIBits | 将一幅与设备无关位图的全部或部分数据直接复制到指定的设备场景 |
1.5 API之菜单函数
| 函数名 | 作用 |
|---|
| AppendMenu | 在指定的菜单里添加一个菜单项 |
| CheckMenuItem | 复选或撤消复选指定的菜单条目 |
| CheckMenuRadioItem | 指定一个菜单条目被复选成“单选”项目 |
| CreateMenu | 创建新菜单 |
| CreatePopupMenu | 创建一个空的弹出式菜单 |
| DeleteMenu | 删除指定的菜单条目 |
| DestroyMenu | 删除指定的菜单 |
| DrawMenuBar | 为指定的窗口重画菜单 |
| EnableMenuItem | 允许或禁止指定的菜单条目 |
| GetMenu | 取得窗口中一个菜单的句柄 |
| GetMenuCheckMarkDimensions | 返回一个菜单复选符的大小 |
| GetMenuContextHelpId | 取得一个菜单的帮助场景ID |
| GetMenuDefaultItem | 判断菜单中的哪个条目是默认条目 |
| GetMenuItemCount | 返回菜单中条目(菜单项)的数量 |
| GetMenuItemID | 返回位于菜单中指定位置处的条目的菜单ID |
| GetMenuItemInfo | 取得(接收)与一个菜单条目有关的特定信息 |
| GetMenuItemRect | 在一个矩形中装载指定菜单条目的屏幕坐标信息 |
| GetMenuState | 取得与指定菜单条目状态有关的信息 |
| GetMenuString | 取得指定菜单条目的字串 |
| GetSubMenu | 取得一个弹出式菜单的句柄,它位于菜单中指定的位置 |
| GetSystemMenu | 取得指定窗口的系统菜单的句柄 |
| HiliteMenuItem | 控制顶级菜单条目的加亮显示状态 |
| InsertMenu | 在菜单的指定位置处插入一个菜单条目,并根据需要将其他条目向下移动 |
| InsertMenuItem | 插入一个新菜单条目 |
| IsMenu | 判断指定的句柄是否为一个菜单的句柄 |
| LoadMenu | 从指定的模块或应用程序实例中载入一个菜单 |
| LoadMenuIndirect | 载入一个菜单 |
| MenuItemFromPoint | 判断哪个菜单条目包含了屏幕上一个指定的点 |
| ModifyMenu | 改变菜单条目 |
| RemoveMenu | 删除指定的菜单条目 |
| SetMenu | 设置窗口菜单 |
| SetMenuContextHelpId | 设置一个菜单的帮助场景ID |
| SetMenuDefaultItem | 将一个菜单条目设为默认条目 |
| SetMenuItemBitmaps | 设置一幅特定位图,令其在指定的菜单条目中使用,代替标准的复选符号(√) |
| SetMenuItemInfo | 为一个菜单条目设置指定的信息 |
| TrackPopupMenu | 在屏幕的任意地方显示一个弹出式菜单 |
| TrackPopupMenuEx 与TrackPopupMenu | 相似,只是它提供了额外的功能 |
1.6 API之设备场景函数
| 函数名 | 作用 |
|---|
| CombineRgn | 将两个区域组合为一个新区域 |
| CombineTransform | 驱动世界转换。它相当于依顺序进行两次转换 |
| CreateCompatibleDC | 创建一个与特定设备场景一致的内存设备场景 |
| CreateDC | 为专门设备创建设备场景 |
| CreateEllipticRgn | 创建一个椭圆 |
| CreateEllipticRgnIndirect | 创建一个内切于特定矩形的椭圆区域 |
| CreateIC | 为专用设备创建一个信息场景 |
| CreatePolygonRgn | 创建一个由一系列点围成的区域 |
| CreatePolyPolygonRgn | 创建由多个多边形构成的区域。每个多边形都应是封闭的 |
| CreateRectRgn | 创建一个矩形区域 |
| CreateRectRgnIndirect | 创建一个矩形区域 |
| CreateRoundRectRgn | 创建一个圆角矩形 |
| DeleteDC | 删除专用设备场景或信息场景,释放所有相关窗口资源 |
| DPtoLP | 将点阵从设备坐标转换到专用设备场景逻辑坐标 |
| EqualRgn | 确定两个区域是否相等 |
| ExcludeClipRect | 从专用设备场景的剪裁区中去掉一个矩形区。矩形内不能进行绘图 |
| ExcludeUpdateRgn | 从专用设备场景剪裁区去掉指定窗口的刷新区域 |
| ExtCreateRegion | 根据世界转换修改区域 |
| ExtSelectClipRgn | 将指定区域组合到设备场景的当前剪裁区 |
| FillRgn | 用指定刷子填充指定区域 |
| FrameRgn | 用指定刷子围绕指定区域画一个外框 |
| GetBoundsRect | 获取指定设备场景的边界矩形 |
| GetClipBox | 获取完全包含指定设备场景剪裁区的最小矩形 |
| GetClipRgn | 获取设备场景当前剪裁区 |
| GetDC | 获取指定窗口的设备场景 |
| GetDCEx | 为指定窗口获取设备场景。相比GetDC,本函数提供了更多的选项 |
| GetDCOrgEx | 获取指定设备场景起点位置(以屏幕坐标表示) |
| GetDeviceCaps | 根据指定设备场景代表的设备的功能返回信息 |
| GetGraphicsMode | 确定是否允许增强图形模式(世界转换) |
| GetMapMode | 为特定设备场景调入映象模式 |
| GetRegionData | 装入描述一个区域信息的RgnData结构或缓冲区 |
| GetRgnBox | 获取完全包含指定区域的最小矩形 |
| GetUpdateRgn | 确定指定窗口的刷新区域。该区域当前无效,需要刷新 |
| GetViewportExtEx | 获取设备场景视口(viewport)范围 |
| GetViewportOrgEx | 获取设备场景视口起点 |
| GetWindowDC | 获取整个窗口(包括边框、滚动条、标题栏、菜单等)的设备场景 |
| GetWindowExtEx | 获取指定设备场景的窗口范围 |
| GetWindowOrgEx | 获取指定设备场景的逻辑窗口的起点 |
| GetWindowRgn | 获取窗口区域 |
| GetWorldTransform | 如果有世界转换,为设备场景获取当前世界转换 |
| IntersectClipRect | 为指定设备定义一个新的剪裁区 |
| InvalidateRgn | 使窗口指定区域不活动,并将它加入窗口刷新区,使之可随后被重画 |
| InvertRgn | 通过颠倒每个像素值反转设备场景指定区域 |
| LPtoDP | 将点阵从指定设备场景逻辑坐标转换为设备坐标 |
| ModifyWorldTransform | 根据指定的模式修改世界转换 |
| OffsetClipRgn | 按指定量平移设备场景剪裁区 |
| OffsetRgn | 按指定偏移量平移指定区域 |
| OffsetViewportOrgEx | 平移设备场景视口区域 |
| OffsetWindowOrgEx | 平移指定设备场景窗口起点 |
| PaintRgn | 用当前刷子背景色填充指定区域 |
| PtInRegion | 确定点是否在指定区域内 |
| PtVisible | 确定指定点是否可见(即,点是否在设备场景剪裁区内) |
| RectInRegion | 确定矩形是否有部分在指定区域内 |
| RectVisible | 确定指定矩形是否有部分可见(是否在设备场景剪裁区内) |
| ReleaseDC | 释放由调用GetDC或GetWindowDC函数获取的指定设备场景 |
| RestoreDC | 从设备场景堆栈恢复一个原先保存的设备场景 |
| SaveDC | 将指定设备场景状态保存到Windows设备场景堆栈 |
| ScaleViewportExtEx | 缩放设备场景视口的范围 |
| ScaleWindowExtEx | 缩放指定设备场景窗口范围 |
| ScrollDC | 在窗口(由设备场景代表)中水平和(或)垂直滚动矩形 |
| SelectClipRgn | 为指定设备场景选择新的剪裁区 |
| SetBoundsRect | 设置指定设备场景的边界矩形 |
| SetGraphicsMode | 允许或禁止增强图形模式,以提供某些支持(包括世界转换) |
| SetMapMode | 设置指定设备场景的映射模式 |
| SetRectRgn | 设置区域为指定的矩形 |
| SetViewportExtEx | 设置设备场景视口范围 |
| SetViewportOrgEx | 设置设备场景视口起点 |
| SetWindowExtEx | 设置指定设备场景窗口范围 |
| SetWindowOrgEx | 设置指定设备场景窗口起点 |
| SetWindowRgn | 设置窗口区域 |
| SetWorldTransform | 设置世界转换 |
| ValidateRgn | 激活窗口中指定区域,把它从刷新区移走 |
| WindowFromDC | 取回与某一设备场景相关的窗口的句柄 |
1.7 API之进程和线程函数
| 函数名 | 作用 |
|---|
| CancelWaitableTimer | 这个函数用于取消一个可以等待下去的计时器操作 |
| CallNamedPipe | 这个函数由一个希望通过管道通信的一个客户进程调用 |
| ConnectNamedPipe | 指示一台服务器等待下去,直至客户机同一个命名管道连接 |
| CreateEvent | 创建一个事件对象 |
| CreateMailslot | 创建一个邮路。返回的句柄由邮路服务器使用(收件人) |
| CreateMutex | 创建一个互斥体(MUTEX) |
| CreateNamedPipe | 创建一个命名管道。返回的句柄由管道的服务器端使用 |
| CreatePipe | 创建一个匿名管道 |
| CreateProcess | 创建一个新进程(比如执行一个程序) |
| CreateSemaphore | 创建一个新的信号机 |
| CreateWaitableTimer | 创建一个可等待的计时器对象 |
| DisconnectNamedPipe | 断开一个客户与一个命名管道的连接 |
| DuplicateHandle | 在指出一个现有系统对象当前句柄的情况下,为那个对象创建一个新句柄 |
| ExitProcess | 中止一个进程 |
| FindCloseChangeNotification | 关闭一个改动通知对象 |
| FindExecutable | 查找与一个指定文件关联在一起的程序的文件名 |
| FindFirstChangeNotification | 创建一个文件通知对象。该对象用于监视文件系统发生的变化 |
| FindNextChangeNotification | 重设一个文件改变通知对象,令其继续监视下一次变化 |
| FreeLibrary | 释放指定的动态链接库 |
| GetCurrentProcess | 获取当前进程的一个伪句柄 |
| GetCurrentProcessId | 获取当前进程一个唯一的标识符 |
| GetCurrentThread | 获取当前线程的一个伪句柄 |
| GetCurrentThreadId | 获取当前线程一个唯一的线程标识符 |
| GetExitCodeProces | 获取一个已中断进程的退出代码 |
| GetExitCodeThread | 获取一个已中止线程的退出代码 |
| GetHandleInformation | 获取与一个系统对象句柄有关的信息 |
| GetMailslotInfo | 获取与一个邮路有关的信息 |
| GetModuleFileName | 获取一个已装载模板的完整路径名称 |
| GetModuleHandle | 获取一个应用程序或动态链接库的模块句柄 |
| GetPriorityClass | 获取特定进程的优先级别 |
| GetProcessShutdownParameters | 调查系统关闭时一个指定的进程相对于其它进程的关闭早迟情况 |
| GetProcessTimes | 获取与一个进程的经过时间有关的信息 |
| GetProcessWorkingSetSize | 了解一个应用程序在运行过程中实际向它交付了多大容量的内存 |
| GetSartupInfo | 获取一个进程的启动信息 |
| GetThreadPriority | 获取特定线程的优先级别 |
| GetTheardTimes | 获取与一个线程的经过时间有关的信息 |
| GetWindowThreadProcessId | 获取与指定窗口关联在一起的一个进程和线程标识符 |
| LoadLibrary | 载入指定的动态链接库,并将它映射到当前进程使用的地址空间 |
| LoadLibraryEx | 装载指定的动态链接库,并为当前进程把它映射到地址空间 |
| LoadModule | 载入一个Windows应用程序,并在指定的环境中运行 |
| MsgWaitForMultipleObjects | 等侯单个对象或一系列对象发出信号。如返回条件已经满足,则立即返回 |
| SetPriorityClass | 设置一个进程的优先级别 |
| SetProcessShutdownParameters | 在系统关闭期间,为指定进程设置他相对于其它程序的关闭顺序 |
| SetProcessWorkingSetSize | 设置操作系统实际划分给进程使用的内存容量 |
| SetThreadPriority | 设定线程的优先级别 |
| ShellExecute | 查找与指定文件关联在一起的程序的文件名 |
| TerminateProcess | 结束一个进程 |
| WinExec | 运行指定的程序 |
1.7 API之网络函数
| 函数名 | 作用 |
|---|
| WNetAddConnection | 创建同一个网络资源的永久性连接 |
| WNetAddConnection2 | 创建同一个网络资源的连接 |
| WNetAddConnection3 | 创建同一个网络资源的连接 |
| WNetCancelConnection | 结束一个网络连接 |
| WNetCancelConnection2 | 结束一个网络连接 |
| WNetCloseEnum | 结束一次枚举操作 |
| WNetConnectionDialog | 启动一个标准对话框,以便建立同网络资源的连接 |
| WNetDisconnectDialog | 启动一个标准对话框,以便断开同网络资源的连接 |
| WNetEnumResource | 枚举网络资源 |
| WNetGetConnection | 获取本地或已连接的一个资源的网络名称 |
| WNetGetLastError | 获取网络错误的扩展错误信息 |
| WNetGetUniversalName | 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称 |
| WNetGetUser | 获取一个网络资源用以连接的名字 |
| WNetOpenEnum | 启动对网络资源进行枚举的过程 |
2. 安装和基本使用
2.1 安装
1
| python -m pip install pypiwin32
|
2.2 基本使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| hwnd = win32gui.FindWindow("类名", "标题名")
win32gui.MoveWindow(hwnd, 100, 100, 200, 200, True)
win32gui.SetForegroundWindow(hwnd) win32gui.SetBkMode(hwnd, win32con.TRANSPARENT)
win32api.GetCursorPos()
win32api.SetCursorPos((100,100))
win32api.WindowFromPoint(win32api.GetCursorPos())
win32gui.GetClassName(hwnd)
win32gui.GetWindowText(hwnd)
win32gui.GetWindowRect(hwnd)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 200, 200, 0, 0)
|
使用管理员权限启动python脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| def admin(func):
def wrap(): def is_admin(): try : return ctypes.windll.shell32.IsUserAnAdmin() except: return False
if is_script(): func() elif is_admin(): func() else: params = ' '.join(['"{}"'.format(x) for x in sys.argv]) # 将启动参数传递给脚本 ctyps.windll.shell32.ShellExecuteW(None, 'runas', sys.executable, params, None, 1)
return wrap
### main.py
@admin def main(): print('init')
if __name__ == '__main__': main()
|
参考