#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date : 2020-03-01 16:01:56
# @Author : shanshuizhujian (shanshuizhujian@gmail.com)
# @Link : ${link}
# @Version : $Id$
#需要先安装pipywin32模块、requests库
import win32com.server.register
import pythoncom
'''
这个类主要是为了让foxtable调用python的方法的,也是为了和python之间进行通信的。
一些在foxtable不擅长的可以放到python里来实施,这样可以发挥fox的界面优势,数据库优势,
发挥python灵活,大量库的优势。
[description]
'''
class MyPyFoxCom:
_public_methods_=['SplitString','getHTMLText'] #这里一定要把你这个模块的函数名称加进来,否则fox找不到函数。
_reg_progid_='PythonDemos.PyFoxCom'
#这个地方还是不能直接使用这句话 ,不然没注册一次注册表就多一个id,还是先print出来,然后换上吧。
# 使用"print (pythoncom.CreateGuid())" 得到一个自己的clsid,
_reg_clsid_=‘刚刚得到的id’
def SplitString(self, val, item=None):
import string
if item !=None:
item=str(item)
val=str(val)
return val.split(item)
def getHTMLText(self,url):
import requests
import string
try:
url = str(url)
r= requests.get(url,timeout=5)
r.raise_for_status()
r.encoding = r.apparent_encoding
return str(r.text)
except:
return str("链接返回错误:" + url)
if __name__=='__main__':
print ('Registering COM server...')
win32com.server.register.UseCommandLine(MyPyFoxCom)
###########################################
#以上代码,另存为pyfox.py,然后执行。
#注册完成后开关机都不会影响,修改类之后可以随时调用,不需要再注册。
#下面语句用来清除com的使用的,打开cmd,根据你文件存放路径,改写之后直接粘贴执行即可。
# python 你自己的路径\pyfox.py --unregister
#下面是foxtable调用代码,执行完上面代码之后,把下面的代码拷贝到foxtable命令,执行即可看到效果。
# Dim PythonUtils As object
# PythonUtils= CreateObject("PythonDemos.PyFoxCom")
# Dim response As object
# response = PythonUtils.SplitString("Hello from VB")
# For Each Item As object In response
# Output.show(Item)
# Next
# response = PythonUtils.getHTMLText("http://www.baidu.com")
# output.Show(response)#返回的结果是百度首页的源代码