[Python]win32com模块编程初探

5 篇文章 0 订阅
1 篇文章 0 订阅

1,Excel

#! /usr/bin/env python
#coding=utf-8

from Tkinter import Tk
from time import ctime
from tkMessageBox import showwarning
import win32com.client as win32

warn = lambda app:showwarning(app,'exit?')
RANGE  = range(3,8)

def excel():
    app = 'Excel'
    xl = win32.Dispatch('%s.Application'%app)
    ss = xl.Workbooks.Add()
    sh = ss.ActiveSheet
    xl.Visible = True

    sh.Cells(1,1).Value = 'Python-to-%s Demo'%app
    
    for i in RANGE:
        sh.Cells(i,1).Value = 'Line %d'%i
    sh.Cells(i+2,1).Value = 'Are you kidding me?'
    
    warn(app)
    ss.Close(False)
    xl.Application.Quit()
    
if __name__ == '__main__':
    Tk().withdraw()
    excel()
    
    


2,Word

#! /usr/bin/env python
#coding=utf-8

from Tkinter import Tk
from time import ctime
from tkMessageBox import showwarning
import win32com.client as win32

warn = lambda app:showwarning('%s.Application'%app,'Exit?')

def word():
    app = 'Word'
    word = win32.Dispatch('%s.Application'%app)
    doc = word.Documents.Add()
    word.Visible = True
    
    rng = doc.Range(0,0)
    rng.InsertAfter('Python-to-%s Demo\r\n\r\n'%app)   
    
    for i in range(3,8):
        rng.InsertAfter('Line %i\r\n'%i)
        
    rng.InsertAfter('\r\nAre you kidding me?\r\n')
    warn(app)
    doc.Close(False)
    word.Application.Quit()
    
if __name__ == "__main__":
    Tk().withdraw()
    word()
    

3,PowerPoint

#! /usr/bin/env python
#coding=utf-8

from Tkinter import Tk
from tkMessageBox import showwarning
import win32com.client as win32
from time import sleep

warn = lambda app:showwarning('%s.Application'%app,'Exit?')

def ppt():
    app = 'PowerPoint'
    ppoint = win32.gencache.EnsureDispatch('%s.Application'%app)
    pres = ppoint.Presentations.Add()
    ppoint.Visible = True
    
    s1 = pres.Slides.Add(1,win32.constants.ppLayoutText)
    sleep(1)
    print '\n'.join(dir(s1.Shapes))
    itr = iter(s1.Shapes)
    s1a = itr.next().TextFrame.TextRange
    #s1a = s1.Shapes[0].TextFrame.TextRange
    s1a.Text = 'Python-to-%s Demo'%app
    
    #s1b = s1.Shapes[1].TextFrame.TextRange
    s1b = itr.next().TextFrame.TextRange
    for i in range(3,8):
        s1b.InsertAfter('Line %d\r\n'%i)
        
    s1b.InsertAfter('\r\nAre you kidding me?\r\n')
    
    warn(app)
    pres.Close()
    ppoint.Quit()
    
if __name__ == '__main__':
    Tk().withdraw()
    ppt()
    
    


REF:Core Programming Python


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: win32gui模块python中与Windows GUI相关的模块。它提供了许多函数,可用于控制Windows窗口、菜单栏、消息循环等。一些常用的函数包括: - FindWindow:用于查找指定标题的窗口。 - SetForegroundWindow:用于将指定窗口设置为前台窗口。 - GetWindowText:用于获取指定窗口的标题文本。 - SetWindowText:用于设置指定窗口的标题文本。 - SendMessage:用于向指定窗口发送消息。 请注意,win32gui模块需要在Windows系统上使用,并且需要pywin32额外安装 可以通过使用pip install pywin32来安装。 ### 回答2: Win32 GUI是Python中的一个可选模块,它提供了一些Windows API的Python接口,可以方便地编写Windows GUI应用程序。本文将详细介绍Win32 GUI模块的使用方法和一些常用的API函数。 一、Win32 GUI模块介绍 Win32 GUI模块实际上是Python对Win32 API的一层封装,使得Python开发者可以更加方便地使用Win32 API来创建Windows GUI应用程序。它提供了一些Python类和函数来表示窗口、控件、消息等概念,并且可以处理Windows消息来响应Windows事件。 Win32 GUI模块是一个底层的模块,需要对Windows消息有一定的了解,并且需要熟悉一些基本的Windows API函数。但是,使用Win32 GUI模块可以更加灵活地控制窗口和控件,也可以在Windows环境下实现一些高级的自动化任务。 二、Win32 GUI模块的使用方法 1.导入模块 Win32 GUI模块需要通过PyWin32安装,安装完毕后,需要导入该模块: import win32gui 2.创建窗口 使用Win32 GUI模块可以通过CreateWindowEx函数来创建窗口,该函数有许多参数,下面给出一个简单的例子: hwnd = win32gui.CreateWindowEx( 0, # 指定扩展窗口风格 'edit', # 窗口类名 'Hello, World!', # 窗口标题 WS_BORDER | WS_SYSMENU, # 指定窗口样式 100, 100, # 指定窗口位置 300, 200, # 指定窗口大小 None, # 父窗口句柄 None, # 菜单句柄 hInst, # 实例句柄 None # 附加参数 ) 3.处理消息 在Win32 GUI模块中,处理消息是很重要的一步。通常我们会用GetMessage函数获取Windows消息,然后根据消息类型分别调用不同的处理函数。下面给出一个简单的消息处理函数例子: def winproc(hwnd, msg, wParam, lParam): if msg == WM_DESTROY: # 判断窗口是否关闭 win32gui.PostQuitMessage(0) # 发送退出消息 elif msg == WM_PAINT: # 判断是否需要重新绘制窗口 hdc, paint_struct = win32gui.BeginPaint(hwnd) win32gui.DrawText( hdc, 'Hello, World!', -1, paint_struct.rcPaint, DT_SINGLELINE | DT_CENTER | DT_VCENTER) win32gui.EndPaint(hwnd, paint_struct) else: return win32gui.DefWindowProc(hwnd, msg, wParam, lParam) return 0 4.运行窗口消息循环 窗口消息循环可以通过使用GetMessage和DispatchMessage函数来实现。GetMessage函数会获取一个Windows消息并将其存储在消息队列中,然后可以使用DispatchMessage函数来分发该消息并调用相应的处理函数。下面给出一个简单的例子: while win32gui.GetMessage(msg, 0, 0, 0) != 0: win32gui.TranslateMessage(msg) win32gui.DispatchMessage(msg) 三、常用API函数 下面是Win32 GUI模块中常用的一些API函数: •CreateWindowEx:创建一个Windows窗口。 •RegisterClassEx:注册一个窗口类。 •SendMessage:发送一个消息给指定的窗口。 •PostMessage:将一个消息发送到指定的窗口。 •GetWindowRect:获取窗口的矩形区域。 •GetClientRect:获取窗口的客户区矩形区域。 •ShowWindow:显示或隐藏指定的窗口。 •UpdateWindow:更新当前窗口的客户区。 •GetMessage:获取下一个Windows消息。 •TranslateMessage:将虚拟键消息转换为字符消息。 •DispatchMessage:分发消息并调用相应的处理函数。 •GetDlgItem:获取一个窗口中指定ID的控件句柄。 •SetDlgItemText:设置一个控件的文本内容。 •GetWindowText:获取一个窗口或控件的文本内容。 •SetWindowText:设置一个窗口或控件的文本内容。 •GetDlgItemInt:获取一个控件的整数值。 •SetDlgItemInt:设置一个控件的整数值。 四、总结 Win32 GUI模块Python中的一个可选模块,它提供了一些Windows API的Python接口,可以方便地编写Windows GUI应用程序。使用Win32 GUI模块需要对Windows消息有一定的了解,并且需要熟悉一些基本的Windows API函数。通过处理Windows消息来响应Windows事件,可以更加灵活地控制窗口和控件,也可以在Windows环境下实现一些高级的自动化任务。 ### 回答3: Python是一种高级编程语言,可以用于各种不同的应用领域。Python的一个重要的应用领域是Windows编程。在Python中win32gui模块是一个非常重要的模块,它提供了一系列用于Windows编程的函数和类。 win32gui模块Python中的一个Win32 API包装器。它允许Python程序直接操作Windows桌面环境中的窗口和控件。win32gui的主要功能是向用户提供对Windows操作系统、用户界面以及底层系统资源的访问和控制功能。 该模块的功能包括: 1. 创建和注册窗口、消息循环 2. 获取窗口的句柄、样式、扩展样式、标题、尺寸、位置等信息 3. 枚举窗口、子窗口和控件 4. 发送和接收Windows消息 5. 显示和隐藏、关闭窗口 6. 设置窗口属性、风格 7. 获取和设置控件的属性、文本 在使用win32gui模块之前,需要先安装pywin32模块。pywin32模块提供了一套与Windows API交互的Python实现。 以下是win32gui模块中的一些重要的函数和常量: 1. FindWindow(classname, title) 查找指定类名和标题的窗口并返回其句柄。如果未找到,则返回0。 2. EnumWindows(enumFunc, lParam) 枚举所有顶层窗口,并将每个窗口的句柄传递给回调函数。回调函数返回False时,停止枚举窗口。 3. SendMessage(hwnd, msg, wParam, lParam) 将指定的Windows消息发送到窗口。 4. GetWindowRect(hwnd) 获取窗口在屏幕上的坐标和大小。 5. SetWindowPos(hwnd, hWndInsertAfter, x, y, cx, cy, uFlags) 设置窗口的位置和大小。 6. SetForegroundWindow(hwnd) 将指定的窗口设为前台窗口。 7. GetClassName(hwnd) 获取窗口的类名。 8. GetWindowText(hwnd) 获取窗口的标题。 常量: 1. WM_CLOSE = 0x0010 发送窗口关闭消息。 2. WM_DESTROY = 0x0002 发送窗口销毁消息。 3. SW_HIDE = 0 隐藏窗口。 4. SW_SHOW = 5 显示窗口。 总之,win32gui模块Python中Windows编程的关键之一,它允许Python开发者控制和操作Windows操作系统的各种资源。通过win32gui模块,开发者可以非常方便地创建并操作Windows应用程序,并实现多种复杂的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值