wxpython 监听Activex事件

用python 实现activex网页控件 首先,这个东东貌似只有windows上才能实现,所以,需要部署windows下的相关环境 1、需要安装python 2、安装python的win32com的lib,下载地址: http://sourceforge.net/projects/pywin32/files/ 3、安装本地的web容器,我用的apache的tomcat 4、编写例子: import uuid 阅读详情

最近在wxpython中嵌入Office Activex 可以用ActivexWarper来实现

不过py2exe打包的时候很麻烦,因为引用了mfc的dll,经常是RunTime Error

只好换成ActiveXCtrl

BaseViewer就是一个wxPanel

这个Office控件里面有很多的事件 需要用到,下面是控件的makepy的导出片段

class _DEDOfficeEvents:
	'Event interface for Edraw Office Viewer Component'
	CLSID = CLSID_Sink = IID('{321F8EAC-5B6C-40FD-8B04-289FEF4C28A5}')
	coclass_clsid = IID('{7677E74E-5831-4C9E-A2DD-9B1EF9DF2DB4}')
	_public_methods_ = [] # For COM Server support
	_dispid_to_func_ = {
		       27 : "OnSlideSelectionChanged",
		       28 : "OnColorSchemeChanged",
		       14 : "OnDownloadFileComplete",
		       26 : "OnSlideShowNextSlide",
		        3 : "OnBeforeDocumentOpened",
		       17 : "OnSheetActivate",
		        5 : "OnBeforeDocumentClosed",
		       20 : "OnSheetChange",
		        8 : "OnWindowBeforeDoubleClick",
		        7 : "OnWindowBeforeRightClick",
		       16 : "OnIESecurityReminder",
		       23 : "OnSlideShowBegin",
		       13 : "OnBeforeDownloadFile",
		        4 : "OnDocumentOpened",
		       24 : "OnSlideShowEnd",
		       19 : "OnSheetCalculate",
		       18 : "OnSheetDeactivate",
		       12 : "OnWindowDeactivate",
		        1 : "OnNotifyCtrlReady",
		       25 : "OnSlideShowNextBuild",
		       10 : "OnDocumentBeforePrint",
		       22 : "OnPresentationNewSlide",
		        2 : "OnNewDocument",
		       29 : "OnSlideShowNextClick",
		        6 : "OnBeforeDocumentSaved",
		       11 : "OnWindowActivate",
		       21 : "OnWorkbookNewSheet",
		       15 : "OnUploadComplete",
		        9 : "OnWindowSelectionChange",
		}

	def __init__(self, oobj = None):
		if oobj is None:
			self._olecp = None
		else:
			import win32com.server.util
			from win32com.server.policy import EventHandlerPolicy
			cpc=oobj._oleobj_.QueryInterface(pythoncom.IID_IConnectionPointContainer)
			cp=cpc.FindConnectionPoint(self.CLSID_Sink)
			cookie=cp.Advise(win32com.server.util.wrap(self, usePolicy=EventHandlerPolicy))
			self._olecp,self._olecp_cookie = cp,cookie
	def __del__(self):
		try:
			self.close()
		except pythoncom.com_error:
			pass
	def close(self):
		if self._olecp is not None:
			cp,cookie,self._olecp,self._olecp_cookie = self._olecp,self._olecp_cookie,None,None
			cp.Unadvise(cookie)
	def _query_interface_(self, iid):
		import win32com.server.util
		if iid==self.CLSID_Sink: return win32com.server.util.wrap(self)

如果我们要监听OnBeforeDocuemtnOpened

下面是我的的窗口的代码,BaseViewer就是一个wxPanel,定义一个BeforeDocuemtnOpened

那么在文档打开前就会执行BeforeDocuemtnOpened方法,

ActievxCtrl初始化源代码里面有 self.AddEventSink(self) ,所以控件会在OfficeViewer里找对应的Event调用

########################################################################

class OfficeViewer(BaseViewer):

	def __init__(self,parent=None,filename='',dir=BaseViewer.EDITOR_DIR):
		BaseViewer.__init__(self,dir,parent)
		sizer = wx.BoxSizer(wx.VERTICAL)
		self.officeAtx=ActiveXCtrl(self,'EDOFFICE.EDOfficeCtrl.1',-1)

		sizer.Add(self.officeAtx, 1, wx.EXPAND)
		self.SetSizer(sizer)

		self.officeAtx.AddEventSink(self)
		self.officeAtx=self.officeAtx.ctrl

		self.temp=''
		self.filename=filename
		self.dir=dir


	def BeforeDocumentOpened(self):

		"""禁止打印命令"""
		MessageBox('Before Open')
		self.officeAtx.DisableFileCommand(0x00000200,True)


ActiveX测试容器最新版支持Python脚本开发 ActiveX测试容器作为调试与测试ActiveX控件的核心工具,其功能不仅限于简单的控件加载与运行,还涵盖了脚本支持、日志记录、自动化测试等多个层面。本章将从测试容器的基本作用、支持脚本语言的测试环境以及其高级功能三个方面进行深入剖析,为后续章节中VBScript与Python脚本的调试应用打下坚实基础。测试容器通常提供集成的脚本编辑器,支持语法高亮、自动补全、错误提示等功能。以下是一个典型脚本执行界面的功能布局:graph LRA[脚本编辑器] --> B[运行按钮] 阅读详情

相关推荐

ActiveX测试容器最新版(可支持Python脚本)

打开即可使用,可以加载VBScript脚本和Python脚本,Python脚本中请自己区分私有函数(请加下划线__)和公有函数

Python 开发 ActiveX (comtypes+py2exe)

转载注明出处 http://blog.youkuaiyun.com/xugangjava/article/details/8450346 工程目录如下: 1.首先编写idl文件 import "oaidl.idl"; import "ocidl.idl"; [ uuid(80DDC35E-320E-4f9c-979F-522DDCD34FD3), dua

xugangjava的专栏 5859

Python 开发Activex组件方法

使用win32com模块开发window ActiveX的示例:(如果你还没有装win32com模块的话,请到http://python.net/crew/skippy/win32/Downloads.html下载)。 复制代码 代码如下: # SimpleCOMServer.py class PythonUtilities: _public_methods_ = [‘SplitString’] _reg_progid_ = “Python.Utilities” _reg_clsid_ = “{A6688635-62F5-41cb-AF54-CBA84C2F0F86}” def SplitSt

python activex_如何在python中使用ActiveX控件

匿名用户1级2016-01-23 回答[html]viewplaincopy<spanstyle="font-family:Arial,Verdana,sans-serif;white-space:normal;background-color:rgb(255,255,255);">首先,这个东东貌似只有windows上才能实现,所以,需要部署windows下...

weixin_39940253的博客 1843

JavaScript调用Activex控件的事件的实现方法

最近在搞一个客户端调用activex控件的开发。一些实现方法小结,需要的朋友可以参考下。

在wxPython对话框显示(对Excel封装的)OCX控件例子(能独立运行的exe+py文件).rar

目的: 1. 封装Excel 的 OCX太少! 好用的更是少之又少!(注意!!! iWebOffice2006.ocx涉及到版权! 这里iWebOffice2006.ocx仅做学习、研究、交流用! 如需使用请君购买正版! ) 2. OCX嵌入到wxPython对话框例子太少. 3. 这个例子就是填补1-2空白 4. 最好的利用了: 1. excel高普及率、 2. VBA操作的灵活强大 3. Python高效开发、不用编译直接运行 4. Python脚本+ VBA脚本 + 窗口界面 浑然一体 基于Windows环境准备: 1. Python2.7.8 2. Office2007 3. pyInstaller2.1 4. wxPython For py2.7 5. 其他py需要的包(如:COM,Win32)根据提示安装

你可以用 Python 中的 COM/ActiveX 做什么?

python

704

项目过程记录:ADS-B信号接收并显示(Ubuntu20.04+ANTSDR E310V2)

最近被安排做一个ADS-B信号接收的项目,拿到软件无线电模块(ANTSDR E310V2)后安装环境和软件真的太折磨了。。在此记录以下我走过的弯路,大家可以参考一下。

weixin_43627638的博客 5017

python:ActiveX

文章目录一、application 版本二、基本操作三、数据转换四、创建选择集 一、application 版本 AutoCAD产品名 版本号 ProgID AutoCAD 2004 R16 AutoCAD.Application.16 AutoCAD 2005 R16.1 AutoCAD.Application.16.1 AutoCAD 2006 R16.2 AutoCAD.Application.16.2 AutoCAD 2007 R17 AutoCAD.Applicatio

weixin_44374471的博客 1203

MySQL 优化 - index_merge 导致查询偶发变慢

今天遇到了一个有意思的问题,线上数据库 CPU 出现了偶发的抖动。定位到原因是一条查询语句偶发变慢造成的,随后通过调整表中的索引解决。优化器通过某种机制检测到 index_merge 能带来性能提升,某些情况下不会带来提升,反而会耗费更长的时间,属于优化器的缺陷,可以通过调整表中的索引来解决。

分享既学习 1254

基于FME—三调篇—尖锐角及小缝隙处理

1 问题分析: 该功能实现在FME较为简单,相对ARCGIS模型构建器以及ARCGIS ENGINE,FME更适合无代码基础的人群。在三调内业数据处理要求中,尖锐角是不允许存在的。本文基于FME实现了对尖锐角的自动查询与消除以及自动处理在消除尖锐角过程中产生的缝隙,并进行了拓扑检查,实现自动化批量处理尖锐角的功能,提高工作效率。 2 总体思路: 2.1 实现功能分析: 1.找出小于指定角度的尖锐角...

qq_33315579的博客 9179

python activex_在Python中使用COM/ActiveX可以做什么?

你基本上可以做相当于后期绑定的工作。所以通过IDispatch暴露的东西都可以被消费。这是我本周末写的一些代码,通过WindowsImageAcquisition2.0从twain设备获取图像,并将数据放入基于gtk的用户界面中。WIA_COM = "WIA.CommonDialog"WIA_DEVICE_UNSPECIFIED = 0WIA_INTENT_UNSPECIFIED = 0WIA_B...

weixin_39826984的博客 365

保姆级教程:用NILMTK和REDD数据集,5分钟跑通你的第一个负荷分解模型

本文提供了一份详细的NILMTK和REDD数据集负荷分解模型教程,适合零基础用户快速上手。从环境准备、数据获取到模型构建和评估,全程仅需5分钟即可完成。特别适合希望快速入门非侵入式负荷分解(NILM)的开发者,涵盖数据预处理、模型训练及结果可视化等关键步骤。

weixin_30493401的博客 441

用Python读取Access数据库

   使用用PYTHON语言进行数据库编程的方法很多,见老巫-wfh_178的文章用Python实现数据库编程。本文文们将使用ADO(ActiveX Data Object)来实现读取Access数据库(MDB)文件!    首先在IDE中(本文为PYTHONWIN),引用 Microsoft ActiveX Data Objects Library,点击Tools(工具)------>COM M

郭岩(guoyan19811021,吉祥)的专栏 2万+

耶鲁大学《博弈论》课程——逆向归纳

耶鲁大学《博弈论》课程——逆向归纳

ZYLer_的博客 7869

UG NX二次开发(C#)-建模-获取圆柱面信息(轴向、半径、深度)

获取圆柱面的信息前言一、在UG NX中面的类型有哪些?二、获取圆柱面信息的函数1.获取半径和轴向2、计算圆柱面的深度值3、测试用例总结 文章目录前言一、在UG NX中面的类型有哪些?二、获取圆柱面信息的函数1.获取半径和轴向2、计算圆柱面的深度值3、测试用例总结 前言 在一个项目中,需要遍历曲面,获得所有的圆柱面和圆柱面的信息,包括轴向、半径和圆柱面的深度。经过研究,采用uFModl.AskFaceData(face.Tag, out faceTypeInt, point, dir, box, out

GimiGimmy 4145

python 调用ocx

1. 利用ocx名称 import win32com.client w = win32com.client.Dispatch('Word.Application') # 或者使用下面的方法,使用启动独立的进程: # w = win32com.client.DispatchEx('Word.Application') 2. 利用classid import win32com.client...

hbh112233abc的博客 4715

倍福--手动加入第三方伺服的配置

客户在没有硬件情况下,希望手动配置硬件,添加第三方驱动器,本文介绍其操作流程 目 录 软硬件版本 3 1.1. 倍福Beckhoff 3 1.1.1. 控制器硬件 3 1.1.2. 控制软件 3 操作步骤 3 2.1. 添加电机XML文件 3 2.2. 创建EtherCAT 3 2.3. 添加新建项 3 2.4. 选择型号 4 2.5. 关联NC轴 5 软硬件版本 1.1. 倍福Beckhoff 1.1.1. 控制器硬件 TwinCAT控制制器,PC或者EPC,包括: 嵌入式控制器:CX5020-

weixin_41883890的博客 5324

python activex_Python 中使用 Win32Exts 扩展调用 ActiveX控件 示例

续接前文:本文主要演示如何使用 Python 操作一个实际的ActiveX控件。目标控件为“五虎大战”棋类小游戏,可在这里获取下载:示例如下: 首先导入:win32exts 并初始化 API 列表及 COM 环境:>>> import win32exts>>> win32exts.load_sym("*", "*")>>> win32exts....

weixin_39723010的博客 614

PHM 2010数据集解读

PHM数据挑战赛是一项面向所有潜在与会者的竞赛。今年的挑战集中在使用测力仪、加速度计和声发射数据估计高速数控铣床刀具的RUL上。 博客对PHM 2010数据集的组成和信号进行了可视化。

cnjs1994的博客 7647

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

python调用ActiveX小结

写了一个用SWT的OleAutomation调用ActiveX的程序,发现总是出现问题,不知道是什么原因,所以简单的用Python的扩展库pywin32写了段测试代码。 其中pywin32要另外下载[http://sourceforge.net/projects/pywin32/ ]   方法调用: import win32com.client dd=win32com.client.Dispatc...

5464

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

[二]Python通过ActiveX容器嵌入flash

Python代码 # -*- coding: utf-8 -*- import wx import os from xml.dom import minidom from wx.lib.flashwin import FlashWindow class EIDataSerializer: __xmlData=None def __packNumber(self,p,x):

theshen 1364

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Python开发Activex组件

Python强的功能就在于它无所不能。使用win32com模块开发window ActiveX的示例:(如果你还没有装win32com模块的话,请到http://python.net/crew/skippy/win32/Downloads.html下载)。 # SimpleCOMServer.pyclass PythonUtilities: _public_metho

Klipdas csdn blog 2252
上一篇: adodbapi orm对象查询(三)
下一篇: twisted(iocp)程序在用py2exe打包时的问题
xugangjava
博客等级 码龄16年 83粉丝 72原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值